掩膜概述

图像掩膜,用选定的图像、图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程。
掩膜是一种图像滤镜的模板,实用掩膜经常处理的是遥感图像。当提取道路或者河流,或者房屋时,通过一个n*n的矩阵来对图像进行像素过滤,然后将我们需要的地物或者标志突出显示出来。这个矩阵就是一种掩膜。

掩膜作用

①提取感兴趣区,用预先制作的感兴趣区掩模与待处理图像相乘,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。
②屏蔽作用,用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计。
③结构特征提取,用相似性变量或图像匹配方法检测和提取图像中与掩模相似的结构特征。
④特殊形状图像的制作。

图像掩膜处理

简单示例

void OpenCVTest2() {
    Mat src,dst;
    src = imread("D:/1.jpg");
    namedWindow("test",CV_WINDOW_AUTOSIZE);
    imshow("test", src);

    int rows = src.rows;
    int cols = (src.cols - 1) * src.channels();
    int offset = src.channels();
    dst = Mat::zeros(src.size(), src.type());
    //掩膜处理原理
    for (int row = 1; row < rows - 1; ++row) {
        const uchar* pre = src.ptr<uchar>(row - 1);
        const uchar* cur = src.ptr<uchar>(row);
        const uchar* next = src.ptr<uchar>(row + 1);
        uchar* dst_cur = dst.ptr<uchar>(row);
        for (int col = offset; col < cols - 1; ++col) {
            dst_cur[col] = saturate_cast<uchar>( 5 * cur[col] - (cur[col - offset] + cur[col + offset] + pre[col] + next[col]));
        }
    }

    //Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);// 定义一个掩膜对象
    //filter2D(src, dst, src.depth(), kernel);//filter2D 就是掩膜处理函数

    namedWindow("output", CV_WINDOW_AUTOSIZE);
    imshow("output", dst);
    waitKey(0);
}

Ronnie
2 声望0 粉丝

引用和评论

0 条评论