使用HSV 圖片做直方圖均衡問題
老師您好,想請教一下
1.直方圖均衡case 1
# 每個 channel 個別做直方圖均衡
equalHist_by_channel = [img[..., 0], img[..., 1], img[..., 2]]
equalHist_by_channel = [cv2.equalizeHist(i) for i in equalHist_by_channel]
這個 [ cv2.equalizeHist(i) for i in equalHist_by_channel ]的意思是什麼呢?
2.直方圖均衡的case2
# case 2 - 轉換 color space 後只對其中一個 channel 做直方圖均衡
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
img_hsv[..., -1] = cv2.equalizeHist(img_hsv[..., -1])
img_hsv_equal = cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR)
這幾行程式碼中
這行代表什麼意思?
img_hsv[..., -1] = cv2.equalizeHist(img_hsv[..., -1])
因為下一行img_hsv_equal = cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR) 使用的是 img_hsv 不是img_hsv[...,1]
我把這行"img_hsv[..., -1] = cv2.equalizeHist(img_hsv[..., -1])"註解掉後,運行結果沒有影響。
回答列表
-
2019/11/30 下午 00:10Chen-Ming Yang贊同數:0不贊同數:0留言數:0
Hello,
img_hsv[..., -1] = cv2.equalizeHist(img_hsv[..., -1]) 註解掉的話就等於你沒做任何事喔
只是單純在做 HSV 轉 BGR
這邊的意思是我們只對 HSV 圖片最後一個 channel (也就是 channel V) 做直方圖均衡, 做完之後數值產生改變我們在轉回 BGR 格式
原因是我們目的並不是對 BGR 任何一個顏色的 channel 做直方圖均衡
而是希望可以針對明亮度做直方圖均衡
而 HSV 的 channel V 就是代表明亮度