前言
目标
本章中,将学习如何:
理论
代码演示
相关API
图像处理理论
图像变换就是找到一个函数,把原始图像矩阵经过函数处理后,转换为目标图像矩阵。可以分为两种方式,即像素级别的变换和区域级别的变换:
像素变换(Point operators) - 点操作(pixel transforms)
领域操作(Neighborhood operators) - 区域(area-based )
调整图像亮度和对比度属于像素变换 - 点操作,即变换后的每个像素值都与变换前的同位置的像素值有个函数映射关系。
线性变换
调整对比度和亮度,最常用的就是线性表变换。即g(i,j)=α⋅f(i,j)+β
f(i,j)是原像素值,g(i,j)是变换后的像素值
α 调整对比度,β调整亮度.有时也称之为gain和bias参数.
对比度是什么?不就是“亮和暗的区别”吗?也就是像素值大小的区别。如果乘以一个alpha系数,当alpha很大的时候就是放大了这个亮度值的差异,也就是提高了对比度,当alpha很小时,也就是缩小了亮度的差异,也就是降低了对比度。beta就更好理解了,直接在像素的亮度值上加上一个常数,为正数时就是提搞图像亮度,为负数就是降低图像亮度。
源代码
int main(int argc, char** argv) {
Mat src, dst;
src = imread("../images/test.png");
if (!src.dat