[英]OpenCV saturation adjustment gives very bad results
我正在嘗試在 OpenCV 中進行飽和度調整。 解決該問題的標准方法是將輸入圖像從BGR(A)
轉換為HSV
顏色空間,然后簡單地調整S
通道,如下所示:
# Convert from BGR to HSV
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# We want to increase saturation by 50
value = 50
# Grab saturation channel
saturation = hsv[..., 1]
# Increase saturation by a given value
saturation = cv2.add(saturation, value)
# Clip resulting values to fit within 0 - 255 range
np.clip(saturation, 0, 255)
# Put back adjusted channel into the HSV image
hsv[..., 1] = saturation
# Convert back from HSV to BGR
cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
下面是我正在使用的輸入圖像以及上述操作的結果。 您可以清楚地看到低頻區域和高光區域的某些情況非常糟糕。
也許還有另一種解決問題的方法而不產生這種阻塞?
PS 塊性不是 JPEG 壓縮的結果,因為偽像塊不適合標准 JPEG 8x8 編碼單元。 此外,我已經確認無損PNG作為輸入和output格式仍然存在問題。
我建議使用黑白版圖片的另一種方法,它對我來說效果最好:
只需將圖片與具有總和為 1 的系數的 b/w 版本相加即可。 Alpha 是飽和度參數:alpha = 0 給出黑白圖片,更高的 alpha 給出更飽和的圖片。 C++ 代碼示例:
addWeighted(image, alpha, black_and_white(image), 1 - alpha, 0.0, res);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.