【Emgu.CV教程】第21篇 、色彩处理之ConvertTo()函数改变图像的亮度和对比度
2024-01-03 09:14:12
? ? ? ? 先画重点:
- 亮度是指图像的整体明亮程度。增加亮度会使图像整体变得更加明亮,而减少亮度则会使图像变暗。
- 对比度是指图像中不同区域之间亮度差异的程度。它衡量了图像中最亮和最暗区域之间的差异。对比度高的图像明暗差异大,而对比度低就是明暗差异不明显。对比度可以通过调整图像中像素的亮度值来改变。增加亮度差异会增加对比度,而减少亮度差异则会降低对比度。
? ? ? ? 注意啊,亮度是亮度、对比度是对比度。图像整理亮度大,不代表对比度大;对比度大的图像,也有可能整体看上去有些暗。基本上网上的教程都没有举例子说明,我就不一样了,先看一副名画:
? ? ? ? 不同亮度、对比度的四种效果如下:?
? ? ? ? 这四张图一对比,是不是马上秒杀其它作者的讲解。亮度好理解,像素值越接近255,就是越亮。一张纯白的图片,是最亮的,但是对比度是最低的,因为整副图片没有明暗差别。?对比度就是亮的区域和暗的区域差别有多大。您看上面那个低亮度、高对比度的图片。虽然整体都很黑,但是原图亮的部分,也就是桌子上的地球仪那块,是不是比其它区域还是要亮一些。低亮度低对比度那张图,就是整体上都很亮,但是最亮的部分比最暗的部分没差多少。
? ? ? ? 上面四种效果是我用PhotoShop调出来的,Emgu.CV中也有对应的函数,就是ConvertTo()函数,之前在第十一篇文章里面介绍过,是这样说的:
? ? ? ? 这个函数除了可以改变图像深度类型以外,还可以改变图像的亮度和对比度。它是利用了这个公式:
? ? ? ? g(x)=α.f(x)+β
? ? ? ? 这就是一种线性转换关系。f(x) 是源图像像素值;g(x) 是目标图像像素值;参数α代表增益,控制对比度;β代表偏置参数,控制亮度。分别取不同的值,得出效果如下图:
? ? ? ? 代码很简单,用法如下:
Mat dstMat = new Mat(); // 目标图像
Mat tempMat = srcMat.Clone(); // 原图深拷贝
tempMat.ConvertTo(dstMat, tempMat.Depth, a, b);
? ? ? ? ConvertTo()函数改变图像亮度和对比度时,如果α = 1, β = 0,这时候输出的结果和原图是相同的。读者们,还是要多多练习才能体会出亮度、对比度的差异,这篇文章就讲到这里。
原创不易,请勿抄袭。共同进步,相互学习。?
文章来源:https://blog.csdn.net/sswss12345/article/details/135286074
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!