电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 站长之家-> Google推广
vb图像处理之图像的亮度对比度调整_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
在图像处理中,恐怕大家最熟悉的就是对于图像的亮度和对比度调整了。

  前面一定也有很多人写过这样的文章了,但是想把我的这个系列作一个完整的小结,我就再罗嗦一番了。

  还是以24位色图像为例子,每种色彩都可以用0-255,一共256种深度来表示。如果我们把它画在一个二维坐标上,正好是一条直线。

  比如我们将像素的色深作为横坐标,输出色深作为纵坐标的画,正好是一条经过原点(0,0)的45度斜线。

->->

  如图中直线A所表示的,角T为45度,表示它的对比度正好为1。那么很容易就可以写出它的直线方程:Out=In*1,系数1就是对比度的概念如果把条直线加上一个偏移量变成B,那么它的直线方程就成为:Out=In*1 (ab)偏移量(ab)就是亮度的增量。

  只要有初中的代数知识就很容易看出它满足一条直线方程:Y=A*X B。

  但是,我们这里要处理的情况稍微有些不同,在图像处理中,对比度和亮度要分别对待。不能因为改变而改变亮度,因为我们习惯上把灰色(127,127)这一点作为中心点。比如,我们加大了对比度,原来的直线A就变成如直线D所表示的,在改变了对比度的同时,也增加了亮度(ab),而我们心目中的变化应该是入直线C那样。也就是说,我们把(127,127)这一点映射成了坐标系的原点。

  那么我们就要把原来的直线公式修改成:Y=(X-127)*A B 127。A表示对比度,B表示亮度增量。我们验证一下:只要亮度增量B=0,无论怎么改变对比度A,该直线始终通过中心点(127,127),也就是说改变对比度的同时,亮度没有改变。

  由此,我们就可以推导出颜色的对比度亮度计算公式了:

->NewRed=(OldRed-127)*A 127+B
NewGreen=(OldGreen-127)*A 127+B
NewBlue=(OldBlue-127)*A 127+B->

  现在你是否已经准备着手用这个公式来写出你自己的亮度对比度子程序了呢?

  慢着,再多做一步吧。我们是在遍程序,不是在做初中代数考试。这多出来的一步将使你的程序的执行效率更高一些。

  我们把上面的公式再推导一下:

  Y=(X-127)*A B 127=>Y=X*A-127*A 127+B(1)

  令:B=B-127*A+127(2)

  由上面(1),(2)两步,得到一个新的公式:Y=X*A B

  咦?怎么又变回来了??

  是的公式的形式确实是变回来了,不过B所代表的东西已经不同了。

  或许你又会说我这是多此一举,请聪明的读者想像一下:在一个普通的图片做亮度对比度运算的时候,我们上面这些小小的变化将带来什么样的效率提升。假设一张图片大小是1027*768

  一共有786432个像素,而每个像素又要分别计算红绿蓝三种颜色。

  那么,上述这个公式就需要计算786432*3=2359296次,经过这么多次运算的放大,哪怕是小小的一个重复计算都将浪费很长的时间。

  因为在调用子程序的时候亮度和对比度都已经确定,那么B=B-127*A+127这一步就可以放在循环的外面先作好。从而减少了程序的运算时间。

  下面给出我的程序,以供参考:

->PublicSubBrightnessAndContrast(ByValRedOffsetAsLong,ByValGreenOffsetAsLong,ByValBlueOffsetAsLong,OptionalByValRedContrastAsSingle=1,OptionalByValGreenContrastAsSingle=1,OptionalByValBlueContrastAsSingle=1)
 DimXAsLong
 DimYAsLong
 DimMidRAsInteger
 DimMidGAsInteger
 DimMidBAsInteger
 DimMaxAsLong
 OnErrorGoToErrLine
 Done=False
 TimeFilter=timeGetTime
 MidR=RedOffset-127*(RedContrast-1)计算新的位移量B
 MidG=GreenOffset-127*(GreenContrast-1)
 MidB=BlueOffset-127*(BlueContrast-1)
 Max=255
 ForX=0ToOutPutWid
  ForY=0ToOutPutHei
   R=ColOut(2,X,Y)
   G=ColOut(1,X,Y)
   B=ColOut(0,X,Y)
   R=R*RedContrast MidR计算Y=X*A B
   G=G*GreenContrast MidG
   B=B*BlueContrast MidB
   IfR>MaxThenR=Max输出值判断是否在0到255之间
   IfR<0ThenR=0
   IfG>MaxThenG=Max
   IfG<0ThenG=0
   IfB>MaxThenB=Max
   IfB<0ThenB=0
   ColOut(2,X,Y)=R
   ColOut(1,X,Y)=G
   ColOut(0,X,Y)=B
  Next
 Next
 Done=True
 TimeFilter=timeGetTime-TimeFilter
 ExitSub
ErrLine:
 MsgBoxErr.Description
 Done=True
EndSub->

  因为在亮度对比度的过程中会出现计算值超出(0,255)的范围,因此需要对它做一个判断,把结果限定在这个范围之内。

  这个程序很简单,可以根据给定的红绿蓝的亮度偏移量和对比度参数计算。由于把三种颜色的6个参数分开,也可以只调整单独的一种颜色。

  还有一个好处,就是当你将对比度参数设为负值的时候,可以直接得到原图片的反色输出。(这也是将前面的坐标系原点移动到127这一点的一个好处。)

  下面是用我的程序处理得到的效果:

  原图:

->->

  亮度+20,对比度1.5效果:

->->

  对比度-1,反相色彩效果:

->->

  作为这个系列的最后一篇文章,我在我的程序ImageCast中所用到的所效果的算法和主要代码都已经贴出来了。也算是对自己对大家的一个小小交待吧。->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·google rank 2_google推广
·google与opera合作 填补手机网络搜索空白_google推广
·google的搜索结果排列算法_google推广
·玩转google搜索技巧_google推广
·面向搜索引擎的网站设计_google推广
·面向搜索引擎的广告模式_google推广
·登陆google的关键:网站外部链接_google推广
·如何使google更快速收录你的新站_google推广
·创建有意义的google排名链接人气度(链接数)_google推广
·针对google关键词广告新质量分数系统进行优化_google推广

最新文章
·google工具条要跟pagerank说再见?_google推广
·google adsense for content新的广告样式_google推广
·google也推出域名注册_google推广
·公布如何判断adsense无效点击的隐忧_google推广
·google性格三:创新的代名词_google推广
·google性格二:google资讯偏爱收录博客内容_google推广
·google性格一:对活跃度高的网页收录很快_google推广
·google的“unavailable_after”标签的详细使用方法_google推广
·google adwords的优化技巧_google推广
·google关键词广告创建的十二招_google推广


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号