iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 24
0

今天分享的是古典電腦視覺
其中台大-電腦視覺這門課的小作業: 影像均值化
我們目標將強度分布不平均的影像做影像均值化,增加影像的對比度。

首先先準備強度分布不平均的lena影像,這步驟非常簡單,把lena中每個pixel value都除以3,然後畫出直方圖。
左邊是原圖lena,右邊是強度分布不平均,亮度較暗的lena。
https://ithelp.ithome.com.tw/upload/images/20191009/20121109R32ewlcQFJ.jpghttps://ithelp.ithome.com.tw/upload/images/20191009/20121109b5jgYNlI7P.jpghttps://ithelp.ithome.com.tw/upload/images/20191009/201211091iUdFsL1bX.png
從直方圖可以看出亮度偏暗,影像上表現出對比度較差,我們想做到的是把影像均值化,產生對比度強的影像。

影像均質化結果:可以看出影像對比度明顯增強。從直方圖可以看到非常明顯的均值分布
https://ithelp.ithome.com.tw/upload/images/20191009/20121109A19uxze6FC.jpghttps://ithelp.ithome.com.tw/upload/images/20191009/20121109weM2bcmncK.png

實做策略可以分三步驟:
1.計算出累積分布函數CDF(Cumulative Distribution Function)
2.接著參考公式轉換灰階值並做出灰階轉換表.
3.進行灰階值轉換

Code:

Step1:

index = np.zeros([256])
for row in range(512):
    for column in range(512):
        grayvalue = img[row][column]
        index[grayvalue] = index[grayvalue] + 1

cdf = np.zeros([256])
for i in range(256):
    if i == 0:
        cdf[i] = index[i]
        tem = index[i]
    else:
        tem = tem + index[i] 
        cdf[i] = tem
        
step2:

index_2 = np.zeros([256]) #轉換表: index是o~255 灰階 , value是指轉換後的灰階值

for i in range(256):
     index_2[i] = int(round(((cdf[i] - 1) / 262143) * 255))
print(index_2)

step3:

print(img)

for i in range(512):
    for j in range(512):
        value = img[i][j]
        img[i][j] = index_2[value]
print(img)

以上為均值化做法


上一篇
Computer vision - Connected Component
下一篇
YOLO - Object detection
系列文
初心者的自我挑戰30

尚未有邦友留言

立即登入留言