本文实例讲述了Python实现PS图像调整黑白效果。分享给大家供大家参考,具体如下:
这里用Python实现PS里的图像调整——黑白,PS里的黑白并不是简单粗暴的将图像转为灰度图,而是做了非常精细的处理,具体的算法原理和效果图可以参考附录说明。
比起之前的程序,对代码进行了优化,完全用矩阵运算代替了为循环,运算效率提升了很多。具体的代码如下:
进口numpy np 进口matplotlib。pyplot作为plt 从skimage进口io file_name=' D: 4./图像处理算法/PS/jpg”; img=io.imread (file_name) img=img * 1.0 Color_ratio=np.zeros (6) Color_ratio [0]=0.4;#红 Color_ratio [1]=0.6;#黄色 Color_ratio [2]=0.4;#绿色 Color_ratio [3]=0.6;#青色 Color_ratio [4]=0.2;#蓝色 Color_ratio [5]=0.8;#洋红色 max_val=img。马克斯(轴=2) min_val=img。分钟(轴=2) sum_val=img。总和(轴=2) mid_val=sum_val - max_val min_val mask_r=(img [:: 0] - min_val - 0.01)比;0 mask_r=1 - mask_r mask_g=(img (:: 1) - min_val - 0.01)比;0 mask_g=1 - mask_g mask_b=(img [:: 2] - min_val - 0.01)比;0 mask_b=1 - mask_b ratio_max_mid=mask_r * Color_ratio [3] + mask_g * Color_ratio [5] + mask_b * Color_ratio [1] mask_r=(img [:: 0] - max_val + 0.01) & lt;0 mask_r=1 - mask_r mask_g=(img (:: 1) - max_val + 0.01) & lt;0 mask_g=1 - mask_g mask_b=(img [:: 2] - max_val + 0.01) & lt;0 mask_b=1 - mask_b ratio_max=mask_r * Color_ratio [4] + mask_g * Color_ratio [0] + mask_b * Color_ratio [2] I_out=max_val * 1.0 I_out=(max_val-mid_val) * ratio_max + (mid_val-min_val) * ratio_max_mid + min_val plt.figure () plt.imshow (img/255.0) plt.axis(“了”) plt.figure (2) plt.cm.gray plt.imshow (I_out/255.0) plt.axis(“了”) plt.show () >之前
<强>黑白调整
强>Photoshop CS的图像黑白调整功能,是通过对红,黄,绿,青,蓝和洋红等6种颜色的比例调节来完成的。能更精细地将彩色图片转换为高质量的黑白照片。
Photoshop CS图像黑白调整功能的计算公式为:
公式中:灰色为像素灰度值,马克斯,中期和最小分别为图像像素R, G, B分量颜色的最大值,中间值和最小值,ratio_max为马克斯所代表的分量颜色(单色)比率,ratio_max_mid则为马克斯与中期两种分量颜色所形成的复色比率。
默认的单色及复色比率为:
计划:
% % % % %程序实现图像的黑白调整功能 clc; 清除所有; 关闭所有; 形象=imread (“9. jpg”); 形象=双(图片); R=图像(::1); G=图像(:,:,2); B=图像(:,:,3); (行,坳)=(R)大小; Gray_img(1:行,1:坳)=0; Sum_rgb=R + G + B; % % % %各种颜色的默认比率 Color_Ratio (1:6)=0; Color_Ratio (1)=0.4;% % % %红色 Color_Ratio (2)=0.6;% % % %黄色 Color_Ratio (3)=0.4;% % % %绿色 Color_Ratio (4)=0.6;% % % %青色 Color_Ratio (5)=0.2;% % % %蓝色 Color_Ratio (6)=0.8;% % % %洋红色 i=1:行 j=1:坳 r=r (i, j); g=g (i, j); b=b (i, j); Max_value=https://www.yisu.com/zixun/max (r, max (g, b)); Min_value=min (r, min (g, b)); Mid_value=Sum_rgb (i, j) -Max_value-Min_value; 如果(Min_value==r) 指数=0; elseif (Min_value==g) 指数=2; 其他的 指数=4; 结束 ratio_max_mid=Color_Ratio (mod(指数+ 3,6)+ 1); 如果(Max_value==r) 指数=1; elseif (Max_value==g) 指数=3; 其他的 指数=5; 结束 ratio_max=Color_Ratio(指数); Temp=(Max_value-Mid_value) * ratio_max + (Mid_value-Min_value)… * ratio_max_mid + Min_value; Gray_img (i, j)=(Max_value-Mid_value) * ratio_max + (Mid_value-Min_value)… * ratio_max_mid + Min_value; 结束 结束 imshow(图片/255); 图中,imshow (Gray_img/255); >之前<强>本例Python运行结果如下:强>
原图:
运行效果图:
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python图片操作技巧总结》,《Python数据结构与算法教程》、《Python套接字编程技巧总结》,《Python函数使用技巧总结》,《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
Python实现PS图像调整黑白效果示例