logo
Loading...

使用HSV 圖片做直方圖均衡問題 - Cupoy

老師您好,想請教一下1.直方圖均衡case 1# 每個 channel 個別做直方圖均衡equalH...

使用HSV 圖片做直方圖均衡問題

2019/11/29 上午 11:38
電腦視覺深度學習討論版
許景貿
觀看數:15
回答數:1
收藏數:0

老師您好,想請教一下

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:10
    Chen-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 就是代表明亮度