侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python中PS 图像调整算法原理之亮度调整

Python  /  管理员 发布于 7年前   180

亮度调整

非线性亮度调整:

对于R,G,B三个通道,每个通道增加相同的增量。

线性亮度调整:

利用HSL颜色空间,通过只对其L(亮度)部分调整,可达到图像亮度的线性调整。但是,RGB和HSL颜色空间的转换很繁琐,一般还需要浮点数的运算,不仅增加了代码的复杂度,更重要的是要逐点将RGB转换为HSL,然后确定新的L值,再将HSL转换为RGB,运行速度可想而知是很慢的。要想提高图像亮度线性调整的速度,应该从三方面考虑,一是变浮点运算为整数运算,二是只提取HSL的L部分进行调整,三是采用汇编代码,在Delphi中,当然是BASM。下面是按照这三方面考虑写的图像亮度线性调整代码:

L := (Max(R, Max(G,B)) + Min(R, Min(G, B))) div 2;

L没有采用通常的百分比表示,而是取值0 - 255,这样就不必要采用浮点数运算了。

下面代码主要完成2个功能,一是用以前的L值与RGB分别求出其HSL的HS部分,其公式用Pascal表示为:

if L > 128 then begin  rHS := (R * 128 - (L - 128) * 256) div (256 - L);  gHS := (G * 128 - (L - 128) * 256) div (256 - L);  bHS := (B * 128 - (L - 128) * 256) div (256 - L); end else begin  rHS := R * 128 div L;  gHS := G * 128 div L;  bHS := B * 128 div L; end;

二是用新的L值(老的L值加需要调整的亮度值(0 - 255))和上面求出的HS值计算出新的

RGB值,计算方法为:

newL := L + Value - 128; if newL > 0 then begin  newR := rHS + (256 - rHS) * newL div 128;  newG := gHS + (256 - gHS) * newL div 128;  newB := bHS + (256 - bHS) * newL div 128; else begin  newR := rHS + rHS * newL div 128;  newG := gHS + gHS * newL div 128;  newB := bHS + bHS * newL div 128; end;

如此,一个像素点的线性亮度调整就基本完成了

Program:clc; clear all; close all; Image=imread('4.jpg'); Image=double(Image); R=Image(:,:,1); G=Image(:,:,2); B=Image(:,:,3);%%%% 求出原始图像亮度分量I=(R+G+B)/3;%%% 利用原始图像的亮度分量结合R,G,B求出HSL空间的H,S; rHS=R; gHS=G; bHS=B; [row, col]=size(I); for i=1:row   for j=1:col     if(I(i,j)>128)       rHS(i,j)=(R(i,j)*128-(I(i,j)-128)*256)/(256-I(i,j));       gHS(i,j)=(G(i,j)*128-(I(i,j)-128)*256)/(256-I(i,j));       bHS(i,j)=(B(i,j)*128-(I(i,j)-128)*256)/(256-I(i,j));     else       rHS(i,j)=R(i,j)*128/(I(i,j));       gHS(i,j)=G(i,j)*128/(I(i,j));       bHS(i,j)=B(i,j)*128/(I(i,j));     end   end end%%%% 然后求出新的亮度值%%%% Increment: 亮度的调整增量(-255,255) Increment=-100; I_out=I+Increment-128;%%%% 再利用新的亮度值结合H,S,求出新的R,G,B分量R_new=R; G_new=G; B_new=B; for i=1:row   for j=1:col     if(I_out(i,j)>0)       R_new(i,j)=rHS(i,j)+(256-rHS(i,j))*I_out(i,j)/128;       G_new(i,j)=gHS(i,j)+(256-gHS(i,j))*I_out(i,j)/128;       B_new(i,j)=bHS(i,j)+(256-bHS(i,j))*I_out(i,j)/128;     else       R_new(i,j)=rHS(i,j)+rHS(i,j)*I_out(i,j)/128;       G_new(i,j)=gHS(i,j)+gHS(i,j)*I_out(i,j)/128;       B_new(i,j)=bHS(i,j)+bHS(i,j)*I_out(i,j)/128;     end   end end Image_new(:,:,1)=R_new; Image_new(:,:,2)=G_new; Image_new(:,:,3)=B_new; imshow(Image/255); figure, imshow(Image_new/255);

总结

以上所述是小编给大家介绍的python中PS 图像调整算法原理之亮度调整 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!


  • 上一条:
    Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
    下一条:
    Python中的 is 和 == 以及字符串驻留机制详解
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客