OpenCV学习笔记(十六):直方图均衡化:equalizeHist()
生活随笔
收集整理的這篇文章主要介紹了
OpenCV学习笔记(十六):直方图均衡化:equalizeHist()
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
OpenCV學習筆記(十六):直方圖均勻化:equalizeHist()
參考博客:
直方圖均衡化的數學原理
直方圖匹配的數學原理
直方圖均衡化廣泛應用于圖像增強中:
直方圖均衡化處理的“中心思想”是把原始圖像的灰度直方圖從比較集中的某個灰度區間變成在全部灰度范圍內的均勻分布。直方圖均衡化就是對圖像進行非線性拉伸,重新分配圖像像素值,使一定灰度范圍內的像素數量大致相同。直方圖均衡化就是把給定圖像的直方圖分布改變成“均勻”分布直方圖分布。
特點:
1)對于泛白混合的的圖像,均衡化可以合并一些像素灰度,可以增強圖像的動態范圍,從而增強圖像對比度。
2)在圖像對比度本就較高的情況下,如果繼續均衡化,則會對灰度調和,對比度反而降低
3)均衡化的圖片如果在對其均衡化,則圖像不會有任何改變
1、equalizeHist()函數
void equalizeHist( InputArray src, // 源圖 OutputArray dst // 目標圖像)該函數使用以下算法對輸入圖像的直方圖進行均衡化:
(1) 計算原圖像的直方圖H;
(2) 將柱狀圖歸一化,使柱狀圖bin的總和為255;
(3) 計算直方圖的積分;
(4) 使用H‘作為查找表轉換圖像:dst(x,y) = H’(src(x,y);
該算法對圖像的亮度進行了歸一化處理,提高了圖像的對比度;
#include <opencv2/opencv.hpp>using namespace cv; using namespace std;int main() {// 【1】加載源圖像Mat srcImage, dstImage;srcImage = imread( "F:/C++/2. OPENCV 3.1.0/TEST/1.jpg", 1 );if(!srcImage.data ) { printf("讀取圖片錯誤,請確定目錄下是否有imread函數指定圖片存在~! \n"); return false; }// 【2】轉為灰度圖并顯示出來Mat grayImg;cvtColor( srcImage, grayImg, CV_BGR2GRAY );imshow( "原始圖", grayImg );// 【3】進行直方圖均衡化equalizeHist( grayImg, dstImage );// 【4】顯示結果imshow( "經過直方圖均衡化后的圖", dstImage );waitKey(0);return 0; }總結
以上是生活随笔為你收集整理的OpenCV学习笔记(十六):直方图均衡化:equalizeHist()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 字符串指针和字符串指针数组详解
- 下一篇: LaTeX引用多篇bibtex格式文献