1.mask其实就是一个单通道的矩阵,利用mask可以方面的指定图像中那些像素需要进行处理,哪些不需要进行处理,mask中被标记成1的像素为需要处理的像素,运算过程中会进行处理,被标记为0 的像素不进行处理。依据这种原理可以将两张图像进行合成。
例如maskImg图像为三通道标志图像,bgImg为三通道的背景图像,merImg为合成之后的图像,首先要要找图像的掩膜,就是要确定图像中哪些部分的像素需要进行处理,在这里就是,标志图像的边缘是白色,标志本身是其他的颜色,标志图像的大小和背景图像一样,需要将仅仅包含标志的部分与背景图像进行合成。
Mat imageMerging(Mat maskImg, Mat bgImg)
{
Mat merImg=maskImg.clone();
Mat maskFunction=findMask(maskImg);
Mat roiImg=merImg(Rect(0,0,bgImg.cols,bgImg.rows));
bgImg.copyTo(roiImg,maskFunction);
return merImg;
}
下图依次是标准标注图像,随机背景的图像,最终合成的图像。标准标注图像首先确定标志的外接矩形,然后加上拉伸变换,旋转变化之后的图像合成效果。