公司网站制作应该注意些什么,快速建网站,wordpress侧边栏加图片,三网合一网站建设方案OpenCV 例程200篇 总目录 201. 图像的颜色空间转换 202. 查表快速替换#xff08;cv.LUT#xff09; 203. 伪彩色图像处理 204. 图像的色彩风格滤镜 205. 调节色彩平衡/饱和度/明度 206. Photoshop 色阶调整算法 【youcans 的 OpenCV 例程200篇】206. Photoshop 色阶调整算法…OpenCV 例程200篇 总目录 201. 图像的颜色空间转换 202. 查表快速替换cv.LUT 203. 伪彩色图像处理 204. 图像的色彩风格滤镜 205. 调节色彩平衡/饱和度/明度 206. Photoshop 色阶调整算法 【youcans 的 OpenCV 例程200篇】206. Photoshop 色阶调整算法
本例程实现 Photoshop 的色阶调整算法包括输入动态线性拉伸、伽马变换和输出线性拉伸。
色彩平衡是通过对颜色的调整使图像达到颜色平衡可以用于调节颜色缺陷或表现效果。
Photoshop 的色阶调整分为输入色阶调整和输出色阶调整。
输入色阶调整有 3 个调节参数黑场阈值、白场阈值和灰场值
SinS_{in}Sin输入图像的黑场阈值input shadowsHinH_{in}Hin输入图像的白场阈值input hithlightMMM中间调灰场调节值midtone
输入图像中低于黑场阈值的像素置 0 黑色高于白场阈值的像素置 255白色。灰场调节值默认值 1.0调节范围 [0.01, 9.99]。灰场调节值增大的效果是加灰降对比度减小的效果是减灰加对比度。
输出色阶调整有 2个调节参数黑场阈值 SoutS_{out}Sout、白场阈值 HoutH_{out}Hout 分别对应着输出图像的最小像素值、最大像素值。
在进行色阶调整时Photoshop 显示图像的灰度直方图为用户设置调节参数提供参考。 输入色阶调整算法先根据黑场阈值和白场阈值对 RGB 颜色通道的动态范围进行线性拉伸再根据灰场调节值进行幂律变换伽马变换对发白曝光过度或过暗曝光不足的图片进行矫正。
V1{0,VinSin255,VinHin255∗(Vin−Sin)/(Hin−Sin),elseV2255∗(V1/255)1/M\begin{aligned} V_1 \begin{cases} 0 , V_{in}S_{in} \\ 255 , V_{in}H_{in} \\ 255 * {(V_{in}-S_{in})}/{(H_{in}-S_{in})} , else \end{cases} \\ \\ V_2 255 * (V_1 / 255)^{1/M} \end{aligned} V1⎩⎪⎨⎪⎧0255255∗(Vin−Sin)/(Hin−Sin),VinSin,VinHin,elseV2255∗(V1/255)1/M
输出色阶调整方法是基于动态范围进行线性拉伸
Vout{0,V20255,V2255Sout(Hout−Sout)∗V2∗/255,elseV_{out} \begin{cases} 0 , V_{2}0 \\ 255 , V_{2}255 \\ S_{out} {(H_{out}-S_{out})} * V_2 */255 , else \end{cases} Vout⎩⎪⎨⎪⎧0255Sout(Hout−Sout)∗V2∗/255,V20,V2255,else
对彩色图像的各个颜色通道可以设置统一的白场、黑场和灰场参数也可以对 R/G/B 各颜色通道分别设置白场、黑场和灰场参数对各通道进行独立的色阶调节。但这会导致各通道的拉伸曲线不同因此可能导致偏色。 例程 14.13Photoshop 色阶调整算法
本例程实现 Photoshop 的色阶调整算法包括输入动态线性拉伸、伽马变换和输出线性拉伸。 # 14.13 Photoshop 色阶调整算法def levelAdjust(img, Sin0, Hin255, Mt1.0, Sout0, Hout255):Sin min(max(Sin, 0), Hin-2) # Sin, 黑场阈值, 0SinHinHin min(Hin, 255) # Hin, 白场阈值, SinHin255Mt min(max(Mt, 0.01), 9.99) # Mt, 灰场调节值, 0.01~9.99Sout min(max(Sout, 0), Hout-2) # Sout, 输出黑场阈值, 0SoutHoutHout min(Hout, 255) # Hout, 输出白场阈值, SoutHout255difIn Hin - SindifOut Hout - Souttable np.zeros(256, np.uint16)for i in range(256):V1 min(max(255 * (i-Sin)/difIn,0), 255) # 输入动态线性拉伸V2 255 * np.power(V1/255, 1/Mt) # 灰场伽马调节table[i] min(max(SoutdifOut*V2/255, 0), 255) # 输出线性拉伸imgTone cv.LUT(img, table)return imgToneimg cv.imread(../images/buddha01.png, flags1) # 读取彩色equ1 levelAdjust(img, 10, 225, 1.0, 10, 245)equ2 levelAdjust(img, 10, 225, 1.2, 10, 245)plt.figure(figsize(9, 6))plt.subplot(131), plt.title(origin), plt.axis(off)plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))plt.subplot(132), plt.title(colorEqu1), plt.axis(off)plt.imshow(cv.cvtColor(equ1, cv.COLOR_BGR2RGB))plt.subplot(133), plt.title(colorEqu2), plt.axis(off)plt.imshow(cv.cvtColor(equ2, cv.COLOR_BGR2RGB))plt.tight_layout()plt.show()【本节完】 版权声明 参考文献 Use the Photoshop Levels adjustment (adobe.com) youcansxupt 原创作品转载必须标注原文链接(https://blog.csdn.net/youcans/article/details/125373625) Copyright 2022 youcans, XUPT Crated2022-6-18 欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列持续更新中