《OpenCV3编程入门》学习笔记7 图像变换(五 )直方图均衡化
7.5 直方圖均衡化
7.5.1 概念
1.圖像增強(qiáng)處理,圖像的像素灰度變化是隨機(jī)的,直方圖圖像高低不齊,用一定算法使直方圖大致平和,通過(guò)拉伸像素強(qiáng)度分布范圍來(lái)增強(qiáng)圖像對(duì)比度
2.均衡化處理后的圖像只能是近似均勻分布,圖像動(dòng)態(tài)范圍擴(kuò)大了,本質(zhì)是擴(kuò)大了量化間隔,減小了量化級(jí)別,因此,原來(lái)灰度不同的像素處理后可能變得相同,形成一片相同灰度區(qū)域,各區(qū)域之間有明顯的邊界,從而出現(xiàn)了偽輪廓
3.源圖像對(duì)比度高,均衡化后對(duì)比度降低;原圖像對(duì)比度低,均衡化后對(duì)比度提高;均衡化后再均衡化,圖像不變
7.5.2 直方圖均衡化:equalizeHist()函數(shù)
1.函數(shù)原型:
void equalizeHist(InputArray src, OutputArray dst)
2.參數(shù)說(shuō)明:
(1)輸入圖像,8位單通道圖像
(2)輸出圖像
3.原理:
??把直方圖的每個(gè)灰度級(jí)進(jìn)行歸一化處理,求每種灰度的累積分布,得到一個(gè)映射的灰度映射表,根據(jù)相應(yīng)的灰度值來(lái)修正原圖中的每個(gè)像素
4.步驟:
(1)計(jì)算輸入圖像的直方圖H
(2)進(jìn)行直方圖歸一化,直方圖的組距為255
(3)計(jì)算直方圖積分:
?????????????????
(4)以H’作為查詢表進(jìn)行圖像變換
????????????????
7.5.3 直方圖均衡化示例
#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{//載入原圖Mat srcImage = imread("4.jpg");if (!srcImage.data){printf("載入原圖失敗~!\n");return false;}Mat dstImage;dstImage.create(srcImage.size(), srcImage.type());//轉(zhuǎn)為灰度圖并顯示cvtColor(srcImage, srcImage, COLOR_BGR2GRAY);imshow("【原始圖】", srcImage);//直方圖均衡化equalizeHist(srcImage, dstImage);//顯示效果圖imshow("【效果圖】直方圖均衡化", dstImage);waitKey(0);return 0;
}
運(yùn)行效果:
總結(jié)
以上是生活随笔為你收集整理的《OpenCV3编程入门》学习笔记7 图像变换(五 )直方图均衡化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《OpenCV3编程入门》学习笔记7 图
- 下一篇: “萧条早寒至”上一句是什么