图像处理

您所在的位置:网站首页 ps里面怎么调整图片亮度和亮度 图像处理

图像处理

2024-07-12 21:19| 来源: 网络整理| 查看: 265

亮度调整算法说明(完整python代码在文末):

  本算法的基本原理就是对像素点统一进行加上或减去某个调整值,已达到亮度的增强或减弱。包括基于RGB空间R、G、B值的调整和基于HSV空间V值的调整。

  (参考CSDN博客:https://blog.csdn.net/maozefa/article/details/4493395)

1. 基于RGB空间亮度调整算法:

  主要是对RGB空间进行亮度调整。计算出调整系数后,调整手段主要有两种:

    1) 基于当前RGB值大小进行调整,即R、G、B值越大,调整的越大, 例如:当前像素点为(100,200,50),调整系数1.1,则调整后为(110,220,55);

    2) 不考虑RGB值大小的影响,即始终对各个点R、G、B值进行相同的调整,例如:当前像素点为(100,200,50),调整系数10/255,则调整后为(110,210,60)。

 

2. 基于HSV空间亮度调整算法:

  主要是对HSV空间的亮度V值进行调整。计算出调整系数后,调整手段主要也有两种:

    1) 基于当前V值大小进行调整,即V值越大,调整的越大,例如:当前像素点V值为200,调整系数1.1,则调整后为220;

    2) 不考虑V值大小的影响,即始终对各个V值进行相同的调整, 例如:当前像素点V值为200,调整系数10/255,则调整后为210。

 

完整python代码如下:

运行方式:打开终端界面,在该py文件目录下,

运行:python  该文件.py  图片路径  亮度等级(-1~1)  调整方式(0或1,默认1)

例如:python  Lightness.py  C:\Users\PDD\Desktop\pdd.jpg  0.3  (1)

 

import cv2 import sys import numpy as np import matplotlib.pyplot as plt """ 基于RGB空间亮度调整算法: 主要是对RGB空间进行亮度调整。计算出调整系数后,调整手段主要有两种: 1) 基于当前RGB值大小进行调整,即R、G、B值越大,调整的越大, 例如:当前像素点为(100,200,50),调整系数1.1,则调整后为(110,220,55); 2) 不考虑RGB值大小的影响,即始终对各个点R、G、B值进行相同的调整, 例如:当前像素点为(100,200,50),调整系数10/255,则调整后为(110,210,60)。 """ def RGBAlgorithm(rgb_img, value=0.5, basedOnCurrentValue=True): img = rgb_img * 1.0 img_out = img # 基于当前RGB进行调整(RGB*alpha) if basedOnCurrentValue: # 增量大于0,指数调整 if value >= 0 : alpha = 1 - value alpha = 1/alpha # 增量小于0,线性调整 else: alpha = value + 1 img_out[:, :, 0] = img[:, :, 0] * alpha img_out[:, :, 1] = img[:, :, 1] * alpha img_out[:, :, 2] = img[:, :, 2] * alpha # 独立于当前RGB进行调整(RGB+alpha*255) else: alpha = value img_out[:, :, 0] = img[:, :, 0] + 255.0 * alpha img_out[:, :, 1] = img[:, :, 1] + 255.0 * alpha img_out[:, :, 2] = img[:, :, 2] + 255.0 * alpha img_out = img_out/255.0 # RGB颜色上下限处理(小于0取0,大于1取1) mask_3 = img_out < 0 mask_4 = img_out > 1 img_out = img_out * (1-mask_3) img_out = img_out * (1-mask_4) + mask_4 return img_out """ 基于HSV空间亮度调整算法: 主要是对HSV空间的亮度V值进行调整。计算出调整系数后,调整手段主要有两种: 1) 基于当前V值大小进行调整,即V值越大,调整的越大, 例如:当前像素点V值为200,调整系数1.1,则调整后为220; 2) 不考虑V值大小的影响,即始终对各个V值进行相同的调整, 例如:当前像素点V值为200,调整系数10/255,则调整后为210。 """ def HSVAlgorithm(rgb_img, value=0.5, basedOnCurrentValue=True): hsv_img = cv2.cvtColor(rgb_img, cv2.COLOR_RGB2HSV) img = hsv_img * 1.0 img_out = img # 基于当前亮度进行调整(V*alpha) if basedOnCurrentValue: # 增量大于0,指数调整 if value >= 0 : alpha = 1 - value alpha = 1/alpha # 增量小于0,线性调整 else: alpha = value + 1 img_out[:, :, 2] = img[:, :, 2] * alpha else : alpha = value img_out[:, :, 2] = img[:, :, 2] + 255.0 * alpha # HSV亮度上下限处理(小于0取0,大于1取1) 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 img_out = img_out * 255.0 # HSV转RGB img_out = np.round(img_out).astype(np.uint8) img_out = cv2.cvtColor(img_out, cv2.COLOR_HSV2RGB) img_out = img_out/255.0 return img_out path = './resource/fruit.bmp' value = 0.3 # 范围-1至1 basedOnCurrentValue = True # 0或者1 # run : python Lightness.py (path) (value) (basedOnCurrentValue) if __name__ == "__main__": len = len(sys.argv) if len >= 2 : path = sys.argv[1] if len >= 3 : value = float(sys.argv[2]) if len >= 4 : basedOnCurrentValue = bool(int(sys.argv[3])) img = cv2.imread(path) img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) img_rgb = RGBAlgorithm(img, value, basedOnCurrentValue) img_hsv = HSVAlgorithm(img, value, basedOnCurrentValue) plt.figure("img_original") plt.imshow(img/255.0) plt.axis('off') plt.figure("img_light_rgb") plt.imshow(img_rgb) plt.axis('off') plt.figure("img_light_hsv") plt.imshow(img_hsv) plt.axis('off') plt.show()

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3