C++自定义直方图均衡化
生活随笔
收集整理的這篇文章主要介紹了
C++自定义直方图均衡化
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Mat HistBalance(Mat img) {Mat img_dect = img;//imshow("原圖", img_dect);Mat img_balance = img;img_dect.at<Vec3b>(0, 0)[0];//獲得圖像大小int width = img_dect.cols;int hight = img_dect.rows;int size_n = width * hight;//統(tǒng)計(jì)直方圖數(shù)據(jù)分別累加每個(gè)顏色值的數(shù)量float B[256] = { 0.0 };float G[256] = { 0.0 };float R[256] = { 0.0 };for (int i = 0; i < width; i++) {for (int j = 0; j < hight; j++){int b = img_dect.at<Vec3b>(j, i)[0];int g = img_dect.at<Vec3b>(j, i)[1];int r = img_dect.at<Vec3b>(j, i)[2];B[b] += 1;G[g] += 1;R[r] += 1;}}//直方圖均衡化float B_blance[255] = { 0 };float G_blance[255] = { 0 };float R_blance[255] = { 0 };for(int i = 0;i<256;i++)for (int j = 0; j <= i; j++) {B_blance[i] =(B[j] / size_n) + B_blance[i];G_blance[i] = (G[j] / size_n) + G_blance[i];R_blance[i] = (R[j] / size_n) + R_blance[i];}for (int i = 0; i < 256; i++){B_blance[i] = 255 * B_blance[i];G_blance[i] = 255 * G_blance[i];R_blance[i] = 255 * R_blance[i];}//將均衡化后的直方圖賦給Image對(duì)象for (int i = 0; i < width; i++) {for (int j = 0; j < hight; j++){img_balance.at<Vec3b>(j,i)[0] = (unsigned)B_blance[img_dect.at<Vec3b>(j, i)[0]];img_balance.at<Vec3b>(j, i)[1] = (unsigned)G_blance[img_dect.at<Vec3b>(j, i)[1]];img_balance.at<Vec3b>(j, i)[2] = (unsigned)R_blance[img_dect.at<Vec3b>(j, i)[2]];}}return img_balance;
}
總結(jié)
以上是生活随笔為你收集整理的C++自定义直方图均衡化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++自定义直方图统计
- 下一篇: C++自定义改进alph均值滤波