中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

灰度世界算法原理及C++實現的示例分析

發布時間:2021-11-15 16:23:22 來源:億速云 閱讀:132 作者:柒染 欄目:大數據

這篇文章給大家介紹灰度世界算法原理及C++實現的示例分析,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

前置內容

人的視覺系統具有顏色恒常性,能從變化的光照環境和成像條件下獲取物體表面顏色的不變特性,但成像設備并不具有這樣的調節功能,不同的光照環境會導致采集到的圖像顏色與真實顏色存在一定程度的偏差,需要選擇合適的顏色平衡算法去消除光照環境對顏色顯示的影響。
灰度世界算法原理

灰度世界算法以灰度世界假設為基礎,假設為:對于一幅有著大量色彩變化的圖像,RGB3個分量的平均值趨于同一個灰度值Gray。從物理意思上講,灰度世界算法假設自然界景物對于光線的平均反射的均值在整體上是一個定值,這個定值近似為“灰色”。顏色平衡算法將這一假設強制應用于待處理的圖像,可以從圖像中消除環境光的影響,獲得原始場景圖像。
算法步驟

灰度世界算法原理及C++實現的示例分析

算法優缺點

此算法簡單快速,但是當圖像場景顏色并不豐富時,尤其是出現大量單色物體時,該算法會失效。

源碼實現

Mat GrayWorld(Mat src) {  vector <Mat> bgr;  cv::split(src, bgr);  double B = 0;  double G = 0;  double R = 0;  int row = src.rows;  int col = src.cols;  Mat dst(row, col, CV_8UC3);  for (int i = 0; i < row; i++) {    for (int j = 0; j < col; j++) {      B += 1.0 * src.at<Vec3b>(i, j)[0];      G += 1.0 * src.at<Vec3b>(i, j)[1];      R += 1.0 * src.at<Vec3b>(i, j)[2];    }  }  B /= (row * col);  G /= (row * col);  R /= (row * col);  printf("%.5f %.5f %.5f\n", B, G, R);  double GrayValue = (B + G + R) / 3;  printf("%.5f\n", GrayValue);  double kr = GrayValue / R;  double kg = GrayValue / G;  double kb = GrayValue / B;  printf("%.5f %.5f %.5f\n", kb, kg, kr);  for (int i = 0; i < row; i++) {    for (int j = 0; j < col; j++) {      dst.at<Vec3b>(i, j)[0] = (int)(kb * src.at<Vec3b>(i, j)[0]) > 255 ? 255 : (int)(kb * src.at<Vec3b>(i, j)[0]);      dst.at<Vec3b>(i, j)[1] = (int)(kg * src.at<Vec3b>(i, j)[1]) > 255 ? 255 : (int)(kg * src.at<Vec3b>(i, j)[1]);      dst.at<Vec3b>(i, j)[2] = (int)(kr * src.at<Vec3b>(i, j)[2]) > 255 ? 255 : (int)(kr * src.at<Vec3b>(i, j)[2]);    }  }  return dst;}

效果圖

灰度世界算法原理及C++實現的示例分析

灰度世界算法原理及C++實現的示例分析

結論

可以看到灰度世界算法有了白平衡的效果,并且該算法的執行速度非常之快。

關于灰度世界算法原理及C++實現的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

漯河市| 仁怀市| 中江县| 泰来县| 大关县| 奉新县| 景东| 凌海市| 乳源| 六盘水市| 东方市| 焦作市| 本溪| 辽宁省| 昌黎县| 南溪县| 萨嘎县| 秦安县| 祁连县| 江孜县| 雷山县| 堆龙德庆县| 太谷县| 平谷区| 乌兰浩特市| 彰武县| 菏泽市| 田林县| 怀化市| 乌鲁木齐市| 遵化市| 儋州市| 漯河市| 兴和县| 涞源县| 恩平市| 平谷区| 江达县| 庆云县| 旬阳县| 诸暨市|