簡體   English   中英

OpenCV 飽和度調整給出了非常糟糕的結果

[英]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格式仍然存在問題。

前: 之前的單純皰疹病毒

后: HSV 之后

我建議使用黑白版圖片的另一種方法,它對我來說效果最好:

只需將圖片與具有總和為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM