目的
访问像素值mat.At<T>(y,x)
用0初始化矩阵Mat.Zeros
饱和操作SaturateCast.ToByte
亮度和对比度调整
g(x)=αf(x)+β
用α(>0)和β一般称作增益(gain)和偏置(bias),分别控制对比度和亮度
把f(x)看成源图像像素,把g(x)看成输出图像像素
g(i,j)=α⋅f(i,j)+β
其中,i和j表示像素位于 第i行 和 第j列(左上角为第0行、第0列)
相关函数
Mat.Zeros:初始一个所有值为0的矩阵
Mat new_Image1 = Mat.Zeros(image.Size(), image.Type());
SaturateCast.ToByte:饱和操作,当<0时,返回0,当>255时,返回255,其它返回原值
return SaturateCast.ToByte(alpha * source + beta);
Mat.ConvertTo: g(i,j)=α⋅f(i,j)+β 转化
image.ConvertTo(new_Image2, image.Type(), alpha, beta);
SaturateCast.ToByte与ConvertTo的差异
使用SaturateCast.ToByte与ConvertTo操作的结果不完全一致。
如计算85*0.7+0.0=59.499999999999993D, SaturateCast.ToByte的结果为59,而ConvertTo的结果为60。
【效果展示】
【测试环境】
vs2019,netframework4.7.2,opencvsharp4.8.0
【演示源码下载】