程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【OpenCV-Python-課程學習(賈)】OpenCV3.3課程學習筆記:直方圖均衡化(equalizeHist)、生成自適應均衡化圖(createCLANE),增強圖像對比度+像素強度分布均勻

編輯:Python

一、直方圖均衡化的意義

  1. 增強圖像對比度、使圖像辨識度提高
  2. 像素強度分布更加均衡,而不是整體趨暗或明

二、OpenCV中的equalizeHist函數

參考資料python+opencv直方圖均衡化_我是小螞蟻的博客-CSDN博客_opencv 直方圖均衡化

 

2.1 灰度圖

對於灰度圖的直方圖均衡化,直接用equalizeHist()即可。

equalizeHist()函數的用法非常簡單,直接傳入單通道圖像即可。

2.2 彩色圖

如果想要對彩色圖進行均衡化,可以先用OpenCV的split函數拆分成多個通道,接著分別將各個通道的數組傳入equalizeHist(),最後再用merge函數合並成一個彩色圖。

2.3 YCC均衡化

對彩色圖像的另一種均衡化方法,就是先用cvtColor函數(參數mode等於cv.COLOR_BGR2YCrCb)轉成YCC顏色模式的圖像,然後再用split函數劃分成多個通道,將第一個通道(亮度/明度)傳入equalizeHist(),最後再用merge函數將第一個通道的新數組和其他通道的數組合並成一個彩色圖。

三、生成自適應均衡化圖像(cv.createCLANE)

第二部分的equalizeHist()函數功能是“全局均衡化”。

全局均衡化API雖然簡單易用,但是存在一些問題。

由於整體亮度的提升,圖像的部分細節變得模糊,這時候我們可以嘗試進行分塊的局部均衡化操作。

自適應均衡化,最適合用來對直方圖有多個峰值區域的圖像;而全局均衡化,適合只有一個峰值區域的圖像。

createCLANE的語法格式如下

cv.createCLAHE([, clipLimit[, tileGridSize]]) ->retval

  • clipLimit是對比度阈值,生成的圖像對比度不能太高;默認的阈值是40.0。
  • tileGridSize表示圖像的行列分塊數;因為自適應均衡化是先將圖像按tileGridSize進行行列劃分,得到n*m塊子圖後分別進行均衡化;行列分塊數越大,均衡化越細致;默認的尺寸是(8, 8)。
  • retval是函數返回值,代表一個類的實例;我們要向實現均衡化,還需要用到這個類實例的方法——apply(img)。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved