• 极智AI | 图像处理中对掩膜 mask 和 ROI 的理解


    欢迎关注我的公众号 [极智视界],获取我的更多笔记分享

      大家好,我是极智视界,本文介绍一下 图像处理中对掩膜 mask 和 ROI 的理解。

      掩膜的概念之前在传统图像处理中用的比较多,而进来深度学习中比较火热的如:(1) 自监督中用 mask 做一些 类似 “完形填空” 的数据增强;(2) swin transformer 等新模型中对于 mask 的一些应用等。以上可以看出 mask 在深度学习领域也能发展重要作用。为了更好的表达,这里我们用传统图像处理的方式来介绍 mask 和 ROI,和深度学习中使用的 mask 原理上是一样的。

    1. 对 ROI 的理解

      对 ROI 的理解较简单,ROI 即感兴趣区域,即要操作的区域。


    2. 对掩模的理解

    • 掩模是 8 位单通道图像 (灰度图 / 二值图);
    • 掩模某个位置如果为 0,则在此位置上的操作不起作用;
    • 掩模某个位置如果不为 0,则在此位置上的操作会起作用,即 ROI 区域;
    • 可以用来提取不规则 ROI;

      示意:

      source      mask       dst
    125 100 85   0  0  0   0  0  0
    66  25  35   0 255 0   0  25 0
    120 125 100  0  0  0   0  0  0
    
    • 1
    • 2
    • 3
    • 4

    3. 为什么要用图像掩模

      对于规则的 ROI,比如最常用的正矩形(Rect)来说可以很容易获取到感兴趣区域的图像数据,如下:

    for(int y = rect.tl().y; y < rect.br().y; ++y)
    {
    	uchar* imgRow = img.data + y * img.step;
    	for(int x = rect.tl().x; x < rect.br().x; ++x)
    	{
    		imgRow[x]...
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

      但是对于不规则的 ROI,则很难直接提取到感兴趣区域内的图像数据,这个时候掩模的作用就体现出来了。假设掩模图像尺寸和源图像的大小一致,则:

    cv::Mat dst = cv::Mat::zeros(Size(img.cols, img.rows), CV_8UC1);
    for(int y = 0; y < img.rows; ++y)
    {
    	uchar* imgRow = img.data + y * img.step;
    	uchar* maskRow = mask.data + y * img.step;
    	uchar* dstRow = dst.data +y * img.step;
    	for(int x = 0; x < img.cols; ++x)
    	{
    		if(maskRow[x] > 0)
    		{
    			dstRow[x] = imgRow[x]...
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    4. 使用掩膜进行图像融合

      使用掩模实现图像融合示例:

      以上将右侧 opencv 的 Logo 融合到左侧 车辆图像中,可以发现一个特点是:opencv Logo 是不规则的,这个时候用一个和 右侧原图一样大小的 mask 来做掩膜是很合适的。图像融合后的效果如下:


      好了,以上分享了 图像处理中对掩膜 mask 和 ROI 的理解,希望我的分享能对你的学习有一点帮助。


     【公众号传送】

    《极智AI | 图像处理中对掩膜 mask 和 ROI 的理解》


    在这里插入图片描述

    扫描下方二维码即可关注我的微信公众号【极智视界】,获取我的更多经验分享,让我们用极致+极客的心态来迎接AI !

  • 相关阅读:
    分布式系统——分布式系统知识脑图
    【API接口功能】以图搜款,最快1秒助您找到想要的商品!
    第二证券:庄家会出现在十大流通股东吗?
    计算机竞赛 题目:基于深度学习的手势识别实现
    MPN – 制造零件号
    Linux三级等保基本设置
    java计算机毕业设计家教到家平台源码+mysql数据库+系统+lw文档+部署
    优秀的项目经理需要具备哪些能力?很关键
    C嘎嘎 - 函数与指针
    深度学习中端到端的概念
  • 原文地址:https://blog.csdn.net/weixin_42405819/article/details/125472445