opencv-Mask(掩膜)
数字图像处理中的掩膜的概念是借鉴于PCB制版的过程,在半导体制造中,许多芯片工艺步骤采用光刻技术,用于这些步骤的图形“底片”称为掩膜(也称作“掩模”),其作用是:在硅片上选定的区域中对一个不透明的图形模板遮盖,继而下面的腐蚀或扩散将只影响选定的区域以外的区域
图像掩膜与其类似,用选定的图像、图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程
数字图像处理中,掩模为二维矩阵数组,有时也用多值图像,图像掩模主要用于:
①提取感兴趣区,用预先制作的感兴趣区掩模与待处理图像相乘,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0
②屏蔽作用,用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计
③结构特征提取,用相似性变量或图像匹配方法检测和提取图像中与掩模相似的结构特征
④特殊形状图像的制作
cv::Mat src(5, 4, CV_8UC3,cv::Scalar(10, 20, 30)); std::cerr << src << std::endl; cv::Mat mask = cv::Mat::zeros(5, 4, CV_8UC3); cv::Rect r1(0,1,2,3);//像素点区域 /*参数1:起始像素点列号--从0开始 参数2:起始像素点行号 参数3:总像素点列数 参数4:总像素点行数 */ mask(r1)=cv::Scalar(5, 6, 7); //给某个区域设置值 std::cerr << mask << std::endl; cv::Mat dst(5, 4, CV_8UC3,cv::Scalar(11, 22, 3)); std::cerr << dst << std::endl; src.copyTo(dst, mask); //当mask的值不为0,则将源图像数据拷贝到目标图像;当mask为0,则不进行拷贝,目标图像数据保持不变 std::cerr << dst << std::endl;