Python实现PS图像调整之对比度调整功能示例
本文实例讲述了Python实现PS图像调整之对比度调整功能。分享给大家供大家参考,具体如下:
这里用 Python 实现 PS 里的图像调整–对比度调整。具体的算法原理如下:
(1)、nRGB = RGB + (RGB - Threshold) * Contrast / 255
公式中,nRGB表示图像像素新的R、G、B分量,RGB表示图像像素R、G、B分量,Threshold为给定的阈值,Contrast为处理过的对比度增量。
Photoshop对于对比度增量,是按给定值的正负分别处理的:
当增量等于-255时,是图像对比度的下端极限,此时,图像RGB各分量都等于阈值,图像呈全灰色,灰度图上只有1条线,即阈值灰度;
当增量大于-255且小于0时,直接用上面的公式计算图像像素各分量;
当增量等于255时,是图像对比度的上端极限,实际等于设置图像阈值,图像由最多八种颜色组成,灰度图上最多8条线,即红、黄、绿、青、蓝、紫及黑与白;
当增量大于0且小于255时,则先按下面公式(2)处理增量,然后再按上面公式(1)计算对比度:
(2)、nContrast = 255 * 255 / (255 - Contrast) - 255
公式中的nContrast为处理后的对比度增量,Contrast为给定的对比度增量。
# -*- coding: utf-8 -*- #! python3 import matplotlib.pyplot as plt from skimage import io file_name='D:/Visual Effects/PS Algorithm/4.jpg'; img=io.imread(file_name) img = img * 1.0 thre = img.mean() # -100 - 100 contrast = -55.0 img_out = img * 1.0 if contrast <= -255.0: img_out = (img_out >= 0) + thre -1 elif contrast > -255.0 and contrast < 0: img_out = img + (img - thre) * contrast / 255.0 elif contrast < 255.0 and contrast > 0: new_con = 255.0 *255.0 / (256.0-contrast) - 255.0 img_out = img + (img - thre) * new_con / 255.0 else: mask_1 = img > thre img_out = mask_1 * 255.0 img_out = img_out / 255.0 # 饱和处理 mask_1 = img_out < 0 mask_2 = img_out > 1 img_out = img_out * (1-mask_1) img_out = img_out * (1-mask_2) + mask_2 plt.figure() plt.title('www.jb51.net') plt.imshow(img/255.0) plt.axis('off') plt.figure(2) plt.title('www.jb51.net') plt.imshow(img_out) plt.axis('off') plt.show()
运行效果图
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
相关文章
为什么黑客都用python(123个黑客必备的Python工具)
python支持功能强大的黑客攻击模块,而且Python提供多种库,用于支持黑客攻击,Python提供了ctypes库, 借助它, 黑客可以访问Windows、OS X、Linux等系统提供 DLL与共享库,还有Python语言易学易用,这对黑客攻击而言是个巨大的优势。2020-01-01详解Python如何利用Pandas与NumPy进行数据清洗
许多数据科学家认为获取和清理数据的初始步骤占工作的 80%,花费大量时间来清理数据集并将它们归结为可以使用的形式。本文将利用 Python 的 Pandas和 NumPy 库来清理数据,需要的可以参考一下2022-04-04python中pandas nlargest()的详细用法小结
df.nlargest()是一个DataFrame的方法,用于返回DataFrame中最大的n个值所在的行,通过调用nlargest()方法,我们返回了分数最高的三个行,并按照降序排列,本文结合实例代码给大家介绍的非常详细,需要的朋友参考下吧2023-10-10
最新评论