图像饱和度处理
圖像飽和度是指圖像色彩的純潔性程度,也稱為顏色的鮮艷程度,是“色彩三屬性”之一。我們經(jīng)常聽(tīng)到淺紅色沒(méi)有深紅色顏色紅,這種感受就是圖像色彩屬性的人類最直接感覺(jué)。飽和度取決于該色中含色成分和消色成分的比例,其中含色成分越大,那么飽和度就越大,同理,如果消色成分越大,必然飽和度越小。
顏色有RGB,HSV,HLS等多種色彩屬性模式,本次主要比較幾種不同方法的顏色飽和度調(diào)整效果。
原始圖像:
方法1效果:
方法2效果:
方法3效果:
def hsv(cv2_img, S, L, V, MAX):""" HSV 調(diào)整 """cv2_img = cv2_img.astype(np.float32)cv2_img = cv2_img / 255.0HSV = cv2.cvtColor(cv2_img, cv2.COLOR_BGR2HSV)HSV2 = np.copy(HSV)HSV2[:, :, 1] = (1.0 + V / float(MAX)) * HSV2[:, :, 1] ## 明度HSV2[:, :, 1][HSV2[:, :, 1] > 1] = 1HSV2[:, :, 2] = (1.0 + S / float(MAX)) * HSV2[:, :, 2] ### 飽和度HSV2[:, :, 2][HSV2[:, :, 2] > 1] = 1adjImg = cv2.cvtColor(HSV2, cv2.COLOR_HSV2BGR)adjImg = adjImg * 255.0adjImg = adjImg.astype(np.uint8)del cv2_img, HSV, HSV2return adjImgdef hsl(cv2_img, S, L, V, MAX):""" HSL 飽和度調(diào)整 """cv2_img = cv2_img.astype(np.float32)cv2_img = cv2_img / 255.0HLS = cv2.cvtColor(cv2_img, cv2.COLOR_BGR2HLS)HLS2 = np.copy(HLS)HLS2[:, :, 1] = (1.0 + L / float(MAX)) * HLS2[:, :, 1] ## 明度HLS2[:, :, 1][HLS2[:, :, 1] > 1] = 1HLS2[:, :, 2] = (1.0 + S / float(MAX)) * HLS2[:, :, 2] ### 飽和度HLS2[:, :, 2][HLS2[:, :, 2] > 1] = 1adjImg = cv2.cvtColor(HLS2, cv2.COLOR_HLS2BGR)adjImg = adjImg * 255.0adjImg = adjImg.astype(np.uint8)del cv2_img, HLS, HLS2return adjImgdef saturationAdjust(cv2_img):#### 圖像顏色飽和度 cv2.namedWindow("SatuAdj", 0)cv2.createTrackbar('S', 'SatuAdj', 10, 100, callback)cv2.createTrackbar('V', 'SatuAdj', 10, 100, callback)cv2.createTrackbar('L', 'SatuAdj', 10, 100, callback)cv2.createTrackbar('I', 'SatuAdj', -100, 100, callback)cv2.createTrackbar('Max', 'SatuAdj', 60, 360, callback)####視圖區(qū)域input_img = cv2_img.copy()while True:S, V, L, I, MAX = callback(0)hsv_img = hsv(input_img.copy(), S, L, V, MAX)hsl_img = hsl(input_img.copy(), S, L, V, MAX)rgb_img = rgb(input_img.copy(), I)mat_img = np.hstack((input_img, hsv_img, hsl_img, rgb_img))text = f"Max:{MAX},S:{S}, V:{V}, L:{L}"cv2.putText(mat_img, text, (10, 40), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0), 1)cv2.imshow("SatuAdj", mat_img)cv2.waitKey(1)示例2:
調(diào)整結(jié)果來(lái)看,在RGB上效果較差,不穩(wěn)定,HSL和HSV相當(dāng)。
今天就分享到這里, 我是paperClub。
備注:WeiXin 搜索paperClub, 添加關(guān)注并回復(fù)【paperClub】即可獲取使用方法。?
1. 感謝各位小伙伴的關(guān)注, 您的點(diǎn)贊、鼓勵(lì)和留言,都是我深夜堅(jiān)持的一份動(dòng)力,無(wú)論褒貶,都是我們行進(jìn)途中最好的回饋,也都會(huì)被認(rèn)真對(duì)待。
2. 我將持續(xù)分享各類、好玩且有趣的算法應(yīng)用及工程和項(xiàng)目,歡迎分享和轉(zhuǎn)發(fā)。溝通、學(xué)習(xí)和交流,請(qǐng)與我聯(lián)系,雖然平時(shí)忙,但留言必回,勿急,感謝理解!
3. 分享內(nèi)容包括開(kāi)源項(xiàng)目和自研項(xiàng)目,如在引用或使用時(shí),考慮不周、遺漏引用信息或涉及版權(quán)等,請(qǐng)您及時(shí)聯(lián)系。如果您對(duì)某些內(nèi)容感興趣,我們可以一起討論、交流和學(xué)習(xí)。
總結(jié)
- 上一篇: 如何创建 Python 库
- 下一篇: 互联网金融平台常见绑卡鉴权方式分析对比