opencv2圖像處理--灰度變換


圖片是由像素點矩陣組成的,對圖片的操作即為對像素點矩陣的操作。只要在這個像素點矩陣中找到這個像素點的位置,比如第x行,第y列,所以這個像素點在這個像素點矩陣中的位置就可以表示成(x,y),因為一個像素點的顏色由紅、綠、藍三個顏色變量表示(R,G,B),所以我們通過給這三個變量賦值,來改變這個像素點的顏色。

1:讀入正常圖片進行圖片灰度處理

import cv2,copy, math
#讀入原始圖像
img = cv2.imread('1.jpg')
#灰度化處理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite("2.jpg", gray)

效果比對:

 

 圖片的灰度化:將一個像素點的三個顏色變量相等,R=G=B,此時該值稱為灰度值

 2:對灰度圖像進行二值化處理

# 二值化處理
ret, im_fixed = cv2.threshold(gray, 50, 255, cv2.THRESH_BINARY)
cv2.imwrite("3.jpg", im_fixed)

二值化處理:將一個像素點的值突出為0,255,使得圖片呈現黑白兩種顏色。在灰度圖像中像素值在0~255,二值化后圖像中像素值為0或255。

CV_THRESH_BINARY, //表示如果當前像素點的灰度值大於閾值(50)則將輸出圖像的對應位置像素值置為255,否則為0

結果如下:

 

 3:對灰度圖像進行伽馬變換

gamma = copy.deepcopy(gray)
rows = img.shape[0]
cols = img.shape[1]
for i in range(rows):
    for j in range(cols):
        gamma[i][j] = 3*pow(gamma[i][j], 0.6)

cv2.imwrite("4.jpg", gamma)

伽馬變換:用於圖像增強,提升了暗部細節,簡單來說就是通過非線性變換,讓圖像從暴光強度的線性響應變得更接近人眼感受的響應,即將漂白(相機曝光)或過暗(曝光不足)的圖片,進行矯正。

伽馬值小於1時,會拉伸圖像中灰度級較低的區域,同時會壓縮灰度級較高的部分

伽馬值大於1時,會拉伸圖像中灰度級較高的區域,同時會壓縮灰度級較低的部分

結果如下:

 

 

4:對灰度圖像進行反色或者對數變換

對數變換:由於對數曲線在像素值較低的區域斜率大,在像素值較高的區域斜率較小,所以圖像經過對數變換后,較暗區域的對比度將有所提升。可用於增強圖像的暗部細節.。

反色變換:對原圖像像素值的顏色進行反轉,即黑色變為白色,白色變為黑色。

 

# 對灰度圖像進行對數變換
logc = copy.deepcopy(gray)
for i in range(rows):
    for j in range(cols):
        logc[i][j] = 3 * math.log(1 + logc[i][j])

cv2.imwrite("5.jpg", logc)

# 對灰度圖像進行反色變換
cover = copy.deepcopy(gray)
for i in range(rows):
    for j in range(cols):
        cover[i][j] = 255 - cover[i][j]

cv2.imwrite("6.jpg", cover)

 

結果如下:

(反色變換)

 

 

(對數變換)

 

 

常用五種灰度圖像處理方式:

# 超過閾值部分取maxval(最大值),否則取0
ret,thresh1 = cv2.threshold(gray_cat,127,255,cv2.THRESH_BINARY)
# THRESH_BINARY 的反轉
ret,thresh2 = cv2.threshold(gray_cat,127,255,cv2.THRESH_BINARY_INV)
# 大於閾值的部分設為閾值,否則不變
ret,thresh3 = cv2.threshold(gray_cat,127,255,cv2.THRESH_TRUNC)
# 大於閾值的部分不改變,否則設為0
ret,thresh4 = cv2.threshold(gray_cat,127,255,cv2.THRESH_TOZERO)
# THRESH_TOZERO 的反轉
ret,thresh5 = cv2.threshold(gray_cat,127,255,cv2.THRESH_TOZERO_INV)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM