日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV图像增强(一)——多尺度视网膜增强

發布時間:2025/3/21 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV图像增强(一)——多尺度视网膜增强 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

1.在處理攝像頭時,或者在圖像中物體輪廓提取時,常常會碰到一些背景偏暗的圖像,為了更好的得到效果,那么圖像增強會是一個不錯的選擇。
2.我這里使用的庫OpenCV版本是3.30,關于opencv學習,有興趣的看我之前發的博客,可以加之前博客后面給的興趣群。

代碼演示

1.代碼

/*多尺度視網膜增強*/ //第一個參數輸入的原始圖像 //第二參數輸出的圖像 //第三個參數 void multiScaleRetinex(const Mat &src, Mat &dst) {//增強尺度int gain = 128;int offset = 128;Mat dst_log, dst_f, res_f;vector<double> sigemas;vector<double> weights;for (int i = 0; i < 3; i++){weights.push_back(1.f / 3);}sigemas.push_back(30);sigemas.push_back(150);sigemas.push_back(300);//轉換數據src.convertTo(dst_f, CV_32FC3);//對數變換log(dst_f, dst_log);//根據給定的權重歸一化double weight = 0;size_t num = weights.size();for (size_t i = 0; i < num; i++){weight += weights[i];}if (weight != 1.0f){dst_log *= weight;}//過濾for (size_t i = 0; i < num; i++){Mat blur = dst_f.clone();gaussianFilter(blur, sigemas[i]);log(blur, res_f);//計算加權差res_f *= weights[i];dst_log -= res_f;}dst = (dst_log * gain) + offset;dst.convertTo(dst, CV_8UC3); }//高斯濾波 void gaussianFilter(Mat &img, double sigma) {int filter_size;//不能大于300,大于300強行改成300if (sigma > 300){sigma = 300;}//獲取濾波器的大小,轉為奇數filter_size = (int)floor(sigma * 6) / 2;filter_size = filter_size * 2 + 1;//如果小于3則返回if (filter_size < 3){return;}//高斯模數GaussianBlur(img, img, cv::Size(filter_size, filter_size), 0); }

2.運行效果

總結

以上是生活随笔為你收集整理的OpenCV图像增强(一)——多尺度视网膜增强的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。