您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“C++ OpenCV如何實(shí)現(xiàn)直方圖均衡化”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C++ OpenCV如何實(shí)現(xiàn)直方圖均衡化”這篇文章吧。
直方圖定義
圖像直方圖由于其計算代價較小,且具有圖像平移、旋轉(zhuǎn)、縮放不變性等眾多優(yōu)點(diǎn),廣泛地應(yīng)用于圖像處理的各個領(lǐng)域,特別是灰度圖像的閾值分割、基于顏色的圖像檢索以及圖像分類。
數(shù)碼時代,直方圖可以說是無處不在。無論是相機(jī)的顯示屏,還是后期PS、ACR里的窗口,甚至色階、曲線的工具之中,都可以看到直方圖的身影。
要理解直方圖,繞不開“亮度”這個概念。人們把照片的亮度分為0到255共256個數(shù)值,數(shù)值越大,代表的亮度越高。其中0代表純黑色的最暗區(qū)域,255表示最亮的純白色,而中間的數(shù)字就是不同亮度的灰色。人們還進(jìn)一步把這些亮度分為了5個區(qū)域,分別是黑色,陰影,中間調(diào),高光和白色。
如果一副圖像的像素占有很多的灰度級而且分布均勻,那么這樣的圖像往往有高對比度和多變的灰度色調(diào)。直方圖均衡化就是一種能僅靠輸入圖像直方圖信息自動達(dá)到這種效果的變換函數(shù)。它的基本思想是對圖像中像素個數(shù)多的灰度級進(jìn)行展寬,而對圖像中像素個數(shù)少的灰度進(jìn)行壓縮,從而擴(kuò)展像元取值的動態(tài)范圍,提高了對比度和灰度色調(diào)的變化,使圖像更加清晰。
基本思想
直方圖均衡化處理的“中心思想”是把原始圖像的灰度直方圖從比較集中的某個灰度區(qū)間變成在全部灰度范圍內(nèi)的均勻分布。直方圖均衡化就是對圖像進(jìn)行非線性拉伸,重新分配圖像像素值,使一定灰度范圍內(nèi)的像素數(shù)量大致相同。直方圖均衡化就是把給定圖像的直方圖分布改變成“均勻”分布直方圖分布。
直方圖均衡化的基本思想是把原始圖的直方圖變換為均勻分布的形式,這樣就增加了象素灰度值的動態(tài)范圍從而可達(dá)到增強(qiáng)圖像整體對比度的效果。
通過上一篇《C++ OpenCV圖像的重映射》我們用到了remap這個函數(shù),可以將圖像灰度分布從一個分布映射到另一個分布,然后再得到映射后的像素值即可。
直方圖均衡化API cv::equalizeHist
代碼演示
新建一個項(xiàng)目opencv-0020,配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法
直方圖均衡化
代碼非常簡單
我們來看看顯示效果
我們再換換別的圖試一下效果
以上是“C++ OpenCV如何實(shí)現(xiàn)直方圖均衡化”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。