【OpenCV 例程300篇】207. Photoshop 色阶自动调整算法 |
您所在的位置:网站首页 › ps调整色阶保存不下来了 › 【OpenCV 例程300篇】207. Photoshop 色阶自动调整算法 |
OpenCV 例程200篇 总目录 201. 图像的颜色空间转换 202. 查表快速替换(cv.LUT) 203. 伪彩色图像处理 204. 图像的色彩风格滤镜 205. 调节色彩平衡/饱和度/明度 206. Photoshop 色阶调整算法 207. Photoshop 色阶自动调整算法 【youcans 的 OpenCV 例程300篇】207. Photoshop 色阶自动调整算法Photoshop 还提供了自动色阶(Auto Levels)功能。 系统可以根据图像的曝光程度、明暗程度自动调节色彩平衡以达到最佳状态。自动色阶和自动对比度功能算法简单,对于一些图像的处理效果非常显著,具有很强的实用性。 Enhance Per Channel Contrast Maximizes the tonal range in each channel to produce a more dramatic correction. Because each channel is adjusted individually, Enhance Per Channel Contrast may remove or introduce color casts. The Auto Tone command uses this algorithm. 参考文献: Set Auto adjustment options (adobe.com) 自动色阶调整的实现方法是,系统基于灰度直方图统计结果,自动设置色阶调整所需的参数。 首先设置修剪比例,白场截断比 C l o w C_{low} Clow 和黑场截断比 C h i g h C_{high} Chigh 。默认值 0.1%,通常取 0.1~1.0%。修剪比例的作用是剔除一定比例的最小、最大灰度的像素,以排除个别异常噪声点的干扰。排除异常干扰后的最小、最大灰度值被设为图像中的黑场、白场基准。 具体地,将图像中灰度值最小的、比例为 C l o w C_{low} Clow 的像素剔除后的最小灰度值作为黑场阈值,将图像中灰度值最大的、比例为 C h i g h C_{high} Chigh 的像素剔除后的最大灰度值作为白场阈值。 例如,一个尺寸 100*100 的图像的像素灰度值从小到大排序的结果是:{75, 77,…,240,241},按 0.1%的修剪比例分别剔除最小、最大灰度值后的结果是:{77, …, 240},则设黑场阈值为 77,白场阈值为 240。 为了提高算法效率,可以先将图像转为灰度图像后计算得到灰度直方图,然后按修剪比例查找得到黑场阈值、白场阈值。 灰场调节值 midtone 实际上是实现 Gamma 变换,可以由灰度均值或中间值得到。 具体地,输入色阶调整有 3 个调节参数:黑场阈值 S i n S_{in} Sin、白场阈值 H i n H_{in} Hin和灰场值 M M M。 输入色阶调整算法,先根据黑场阈值和白场阈值对 RGB 颜色通道的动态范围进行线性拉伸,再根据灰场调节值进行幂律变换(伽马变换),对发白(曝光过度)或过暗(曝光不足)的图片进行矫正。 V 1 = { 0 , V i n < S i n 255 , V i n > H i n 255 ∗ ( V i n − S i n ) / ( H i n − S i n ) , e l s e V 2 = 255 ∗ ( V 1 / 255 ) 1 / M \begin{aligned} & V_1 = \begin{cases} 0 &, 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),VinHin,elseV2=255∗(V1/255)1/M 输出色阶调整有 2个调节参数:黑场阈值 S o u t S_{out} Sout、白场阈值 H o u t H_{out} Hout ,分别对应着输出图像的最小像素值、最大像素值。 输出色阶调整方法是基于动态范围进行线性拉伸: V o u t = { 0 , V 2 < 0 255 , V 2 > 255 S o u t + ( H o u t − S o u t ) ∗ V 2 ∗ / 255 , e l s e V_{out} = \begin{cases} 0 &, V_{2}255 \\ S_{out} + {(H_{out}-S_{out})} * V_2 */255 &, else \end{cases} Vout=⎩ ⎨ ⎧0255Sout+(Hout−Sout)∗V2∗/255,V2255,else 例程 14.14:Photoshop 色阶自动调整算法本例程实现 Photoshop 的色阶调整算法,自动设置色阶调整参数,对 R/G/B 各通道的动态范围分别进行拉伸。 # 14.14 Photoshop 自动色阶调整算法 def autoLevels(img, cutoff=0.1): channels = img.shape[2] # h,w,ch table = np.zeros((1,256,3), np.uint8) for ch in range(channels): # cutoff=0.1, 计算 0.1%, 99.9% 分位的灰度值 low = np.percentile(img[:,:,ch], q=cutoff) # ch 通道, cutoff=0.1, 0.1 分位的灰度值 high = np.percentile(img[:,:,ch], q=100 - cutoff) # 99.9 分位的灰度值, [0, high] 占比99.9% # 输入动态线性拉伸 Sin = min(max(low, 0), high - 2) # Sin, 黑场阈值, 0 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |