翻译:陈之炎
校对:吴金迪
本文约2500字,建议阅读5分钟本文为大家介绍了OpenCV改变图像的对比度和亮度。
目标
在本教程中, 你将学习到以下内容:
访问像素值;
用零初始化矩阵;
学习CV :: saturate_cast的作用及其有用的原因;
学习有关像素变换的很酷的知识;
提高图像亮度的实例。
理论
注
下述解释援引自理查德·斯泽利斯基(Richard Szeliski)的<<计算机视觉算法和应用>>一书。
图像处理
常用的图像处理操作是一个函数,它将一个或多个图像作为输入并生成输出图像。
图像变可被视为:
点运算符(像素变换);
邻近(基于区域的)运算符。
像素变换
在图像处理中, 每个输出像素的值仅取决于相应的输入像素值(可能还包括一些全局收集的信息或参数);
此类操作实例包括亮度调整、对比度调整以及颜色的校正和转换。
亮度和对比度调整
两种常用对比度调整的方法是将像素值乘以或加上一个常数:
参数α > 0和β通常称为增益参数和偏置参数,通过这两个参数分别来控制对比度和亮度。
F ( X )为源图像的像素,G ( X )为输出图像的像素。可以方便地写出以下表达式:
其中i和j表示位于第i行,第j列的像素。
代码
C ++
(Java 版本请访问:
https://github.com/opencv/opencv/blob/master/samples/java/tutorial_code/ImgProc/changing_contrast_brightness_image/BasicLinearTransformsDemo.java
Python 版本请访问:
https://github.com/opencv/opencv/blob/master/samples/python/tutorial_code/imgProc/changing_contrast_brightness_image/BasicLinearTransforms.py)
原文可下载源代码(地址在文末)
下面的代码执行g(i,j)=α⋅f(i,j)+β操作