手机版

Javascript图像处理-亮度对比应用案例

时间:2021-10-06 来源:互联网 编辑:宝哥软件园 浏览:

前言在上一篇文章中,我们解释了图像处理中的卷积运算和平滑(即模糊)处理。在这篇文章中,我们改变了亮度和对比度。其实什么是亮度?亮度很亮.

事实上,对于RGBA颜色空间来说,变亮意味着R、G和B通道同时增加,所以变暗意味着它们同时减少。这很容易理解,因为最暗的黑色是RGB(0,0,0),最亮的白色是RGB(255,255,255)。所以增亮时要增加RGB的各个通道。那么,对比呢?对比其实就是色差。然后,对于RGBA颜色空间,增加对比度实际上等于同时将R、G和B通道乘以一个比例,因为这样相似颜色之间的差距就会变大,所以减少就是同时进行划分。比如RGB(23,44,55)和RGB(33,44,55)的差只有10,但一起乘以2后就变成了RGB(46,88,110)和RGB(66,88,110),差变成了20,也就是“色差”。线性模型newRGB=对比度* RGB亮度线性模型满足上述公式,其中对比度代表对比度系数,亮度代表亮度系数。线性模型实现简单,但很容易调出全白或全黑图片。对于普通用户来说,很难确定选择多少对比度和亮度。所以,其实Photoshop中用的不是线性模型,而是非线性模型。在非线性模型中,对比度的增加与阈值有关:当对比度=0:new RGB=RGB(RGB-阈值)*(1/(1-对比度/255)-1)当对比度0:new RGB=RGB(RGB-阈值)*对比度/255。对比度和亮度同时调节怎么办?如果对比度大于0,先调整亮度,再调整对比度;当对比度小于0时,则相反,先调整对比度,再调整亮度。最后,什么是门槛?其实这是图片的平均灰度值。实现代码复制的代码如下:var亮度对比度=function(_ src,_ _ brightness,_ _ contrast) {_ _ src | | error(引数。被调用者,is _ undefined _ or _ null/* { line } */);if(_ src . type===' CV_RGBA '){ var sData=_ _ src . data,width=__src.col,height=__src.row,dst=new Mat(height,width,CV _ RGBA),dData=dst.data,brightness=Math.max(-255,Math.min(255,__brightness || 0)),contrast=Math.max(-255,Math.min(255,_ _ contrast | | 0));var gray=CVT color(_ src,CV_RGBA2GRAY),allValue=0,gData=gray.datavar y,x,c;for(y=高度;y-;){ for(x=宽度;x-;){ AllValue=GData[y * width x];} } var r,g,b,offset,gave rage=(all value/(height * width))| 0;for(y=高度;y-;){ for(x=宽度;x-;){ offset=(y *宽度x)* 4;dData[offset]=sData[offset]亮度;dData[offset 1]=sData[offset 1]亮度;dData[偏移量2]=sData[偏移量2]亮度;if(对比度=0){ for(c=3;c-;){ if(dData[offset c]=gave rage){ dData[offset c]=dData[offset c](255-gave rage)*对比度/255;} else { dData[offset c]=dData[offset c]-(gave rage * contrast/255);} } } else { dData[offset]=dData[offset](dData[offset]-gave rage)*对比度/255;dData[offset 1]=dData[offset 1](dData[offset 1]-gave rage)*对比度/255;dData[offset 2]=dData[offset 2](dData[offset 2]-gave rage)*对比度/255;} DData[偏移量3]=255;} } } else { error(arguments . caller,UNSPORT _ DATA _ TYPE/* { line } */);}返回dst};效果

版权声明:Javascript图像处理-亮度对比应用案例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。