學習OpenCV-Python——影象增強
影象增強
影象增強可以分為兩種:
- 領域處理技術。對畫素點及其周圍的點進行處理,即使用卷積核。
- 點處理技術。只對單個畫素進行處理。
歸一化
cv2.normalize(src, dst, alpha, beta, norm_type, dtype, mask) → dst
src: 原影象物件
dst: 經過轉化後的影象物件
alpha: 歸一化後灰度畫素最小值,一般為0
beta: 歸一化後灰度畫素最大值,一般為255
norm_type: 歸一化的型別,可以取以下值
(1) cv2.NORM_MINMAX: 陣列的數值縮放到一個指定的範圍,線性歸一化,一般較常用
(2) cv2.NORM_INF:歸一化陣列的C-範數(絕對值的最大值)
(3) cv2.NORM_L1 : 歸一化陣列的L1-範數(絕對值的和)
(4) cv2.NORM_L2: 歸一化陣列的(歐幾里德)L2-範數
型別轉換
dst = cv2.convertScaleAbs(src)
將影象資料型別轉化為uint8
點處理技術
線性變換
影象增強線性變換主要對影象的對比度和亮度進行調整,線性變換公式如下:
引數 a 影響影象的對比度,引數 b 影響影象的亮度,具體分為可分為以下幾種情況:
a>1: 增強影象的對比度,影象看起來更加清晰
a<1: 減小了影象的對比度, 影象看起來變模糊
a<0 and b=0:影象的亮區域變暗,暗區域變亮
a=1 and b≠0:影象整體的灰度值上移或者下移,也就是影象整體變亮或者變暗,不會改變影象的對比度,b>0時影象變亮,b<0時影象變暗
a=-1 and b=255:影象翻轉
分段線性變換
公式
即對處於某個感興趣的區域的x,將其對比度係數a增大或減小,從而增大或減小這個區域的對比度。
對數變換
對數變換將影象的低灰度值部分擴充套件,將其高灰度值部分壓縮,以達到強調影象低灰度部分的目的;同時可以很好的壓縮畫素值變化較大的影象的動態範圍,目的是突出我們需要的細節。
公式
冪律變換/gamma變換
冪律變換主要用於影象的校正,對漂白的圖片或者是過黑的圖片進行修正,冪律變換的公式如下:
根據 γ的大小,主要可分為以下兩種情況:
γ > 1: 處理漂白的圖片,進行灰度級壓縮
γ < 1: 處理過黑的圖片,對比度增強,使得細節看的更加清楚
影象直方圖均衡化
影象直方圖:反應影象強度分佈的總體概念,寬泛的來說直方圖給出了影象對比度、亮度和強度分佈資訊。
觀察不同影象的直方圖:
從上圖中我們注意到: 在暗影象中,直方圖的分佈都集中在灰度級的低(暗)端; 亮影象直方圖的分佈集中在灰度級的高階;低對比度影象具有較窄的直方圖,且都集中在灰度級的中部;而高對比度的影象直方圖的分量覆蓋了很寬的灰度範圍,且畫素分佈也相對均勻,此時圖片的效果也相對很不錯。於是我們可以得出結論:若一幅影象的畫素傾向於佔據整個可能的灰度級並且分佈均勻,則該影象有較高的對比度並且影象展示效果會相對好,於是便引出影象直方圖均衡化,對影象會有很強的增強效果。
計算新的畫素對映過程:
影象濾波
影象濾波包括空間域濾波和頻率域濾波。
而空間域濾波包括:
1.平滑濾波
2.銳化濾波
平滑濾波
平滑濾波包括均值濾波,加權均值濾波,中值濾波,最值濾波,高斯濾波等。
#均值濾波
blur_img = cv2.blur(img, 5)
#中值濾波
blur_img = cv2.medianBlur(img, 5)
#高斯濾波
blur_img = cv2.gaussianBlur(img,5)
銳化濾波
銳化濾波比較常用的是拉普拉斯濾波。
點選檢視原理