图像如何增加亮度和对比度

图像如何增加亮度和对比度

ID:1188613

大小:84.00 KB

页数:5页

时间:2017-11-08

图像如何增加亮度和对比度_第1页
图像如何增加亮度和对比度_第2页
图像如何增加亮度和对比度_第3页
图像如何增加亮度和对比度_第4页
图像如何增加亮度和对比度_第5页
资源描述:

《图像如何增加亮度和对比度》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、VB图像处理之图像的亮度对比度调整2005-5-316:32:32  来源:本站整理  作者:不详【大 中 小】  投递文章内容提要:  在图像处理中,恐怕大家最熟悉的就是对于图像的亮度和对比度调整了。  前面一定也有很多人写过这样的文章了,但是想把我的这个系列作一个完整的小结,我就再罗嗦一番了。  还是以24位色图像为例子,每种色...  在图像处理中,恐怕大家最熟悉的就是对于图像的亮度和对比度调整了。   前面一定也有很多人写过这样的文章了,但是想把我的这个系列作一个完整的小结,我就再罗嗦一番了。   还是以24位色图像为例子,每种色彩都可以用0-255,一共2

2、56种深度来表示。如果我们把它画在一个二维坐标上,正好是一条直线。   比如我们将像素的色深作为横坐标,输出色深作为纵坐标的画,正好是一条经过原点(0,0)的45度斜线。   如图中直线A所表示的,角T为45度,表示它的对比度正好为1。那么很容易就可以写出它的直线方程:Out=In*1,系数1就是对比度的概念如果把条直线加上一个偏移量变成B,那么它的直线方程就成为:Out=In*1+(ab)偏移量(ab)就是亮度的增量。   只要有初中的代数知识就很容易看出它满足一条直线方程:Y=A*X+B。   但是,我们这里要处理的情况稍微有些不同,在图像处理中,对比度和亮度要

3、分别对待。不能因为改变而改变亮度,因为我们习惯上把灰色(127,127)这一点作为中心点。比如,我们加大了对比度,原来的直线A就变成如直线D所表示的,在改变了对比度的同时,也增加了亮度(ab),而我们心目中的变化应该是入直线C那样。也就是说,我们把(127,127)这一点映射成了坐标系的原点。   那么我们就要把原来的直线公式修改成:Y=(X-127)*A+B+127。A表示对比度,B表示亮度增量。我们验证一下:只要亮度增量B=0,无论怎么改变对比度A,该直线始终通过中心点(127,127),也就是说改变对比度的同时,亮度没有改变。   由此,我们就可以推导出颜色的

4、对比度亮度计算公式了: 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)两

5、步,得到一个新的公式:Y=X*A+B   咦?怎么又变回来了??   是的公式的形式确实是变回来了,不过B所代表的东西已经不同了。   或许你又会说我这是多此一举,请聪明的读者想像一下:在一个普通的图片做亮度对比度运算的时候,我们上面这些小小的变化将带来什么样的效率提升。假设一张图片大小是1027*768   一共有786432个像素,而每个像素又要分别计算红绿蓝三种颜色。   那么,上述这个公式就需要计算786432*3=2359296次,经过这么多次运算的放大,哪怕是小小的一个重复计算都将浪费很长的时间。   因为在调用子程序的时候亮度和对比度都已经确定,那么B

6、=B-127*A+127这一步就可以放在循环的外面先作好。从而减少了程序的运算时间。   下面给出我的程序,以供参考: PublicSubBrightnessAndContrast(ByValRedOffsetAsLong,ByValGreenOffsetAsLong,ByValBlueOffsetAsLong,OptionalByValRedContrastAsSingle=1,OptionalByValGreenContrastAsSingle=1,OptionalByValBlueContrastAsSingle=1)  DimXAsLong  DimYAsL

7、ong  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   For

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。