opencv中,掩膜操作是定义一个矩阵,然后根据这个矩阵重新计算每个像素的值,掩膜有如下用途
1,提取感兴趣区域
2,屏蔽作用
3,结构特征提取
4,特殊形状图像的制作
涉及到的知识点
什么是图像的对比度:对比度是指图像最亮和最暗之间的区域间的比率,比值越大,从黑到白的渐变层次就越多
色彩表现就越丰富。
1,获取图像像素指针
Mat.ptr<uchar>(int i=0) 获取像素矩阵的指针,索引i表示第几行,从0开始计行数,也就是返回对应像素行的行指针
const uchar* current= myImage.ptr<uchar>(row ):获得当前行指针
p(row, col) =current[col] 获得当前像素点p(row,col)的像素值
2,防止处理像素值越界(确保RGB值的范围在0-255之间)
saturate_cast<uchar>(-100),返回 0
saturate_cast<uchar>(288),返回255
saturate_cast<uchar>(100),返回100
3,实现图像对比度调整掩膜操作的公式
I(i,j) = 5*I(i,j) - [I(i-1,j) + I(i+1,j) + I(i,j-1) + I(i,j+1)]
施加给像素的矩阵
Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
下面给出比较形象的解释