圖像增強對比度的方法——直方圖均衡化


轉自: http://blog.csdn.net/petrel_zhu/article/details/46756869

在我們身邊各類P圖工具已經不勝枚舉。我們或許已經會使用這類p圖工具,但是對其原理卻是知之甚少。最近學習了一些圖像處理的知識,對其有大概的了解,這次我簡單簡述下增強圖像對比度的方法——直方圖均衡化。

     直方圖均衡化處理的“中心思想”是把原始圖像的灰度直方圖從比較集中的某個灰度區間變成在全部灰度范圍內的均勻分布。直方圖均衡化就是對圖像進行非線性拉伸,重新分配圖像像素值,使一定灰度范圍內的像素數量大致相同。直方圖均衡化就是把給定圖像的直方圖分布改變成“均勻”分布直方圖分布。

  下面給出其實現代碼:

//直方圖均衡化
void HistEqa(const Mat &img, Mat &img2) { double hist[256]; for (int i = 0; i<256; i++) { hist[i] = 0; }//初始化數組 for (int y = 0; y<img.rows; y++) for (int x = 0; x<img.cols; x++) { hist[img.at<uchar>(y, x)]++; } int k = img.rows*img.cols; for (int i = 0; i<256; i++) { hist[i] = hist[i] / k; } //累計直方圖 int newWidth = img.cols ; int newHeight = img.rows; for (int i = 1; i<256; i++) { hist[i] += hist[i-1 ]; } img2.create(newHeight, newWidth, CV_8UC1); for (int y = 0; y<img.rows; y++) for (int x = 0; x<img.cols; x++) { //img.at<uchar>(y,x); int g = int(255 * hist[img.at<uchar>(y, x)] + 0.5); img2.at<uchar>(y, x) = g; } }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM