0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用OpenCV和Python从图像中提取感兴趣区域

jf_78858299 来源:小白学视觉 作者:努比 2023-02-07 14:42 次阅读

今天我们将一起探究如何使用OpenCV和Python从图像中提取感兴趣区域(ROI)。

在之间的文章中,我们完成了图像边缘提取,例如从台球桌中提取桌边。使用了简单的OpenCV函数即可完成这项任务,例如inRange、findContours、boundingRect、minAreaRect、minEnclosingCircle、circle、HoughLines、line等,都可以。

今天我们的任务是从包含患者大脑活动快照的图像中提取所需的片段。之后可以将该提取的过程应用于其他程序中,例如诊断健康与否的机器学习模型。

因此,让我们从查看输入图像开始。这是由神经科学领域的医疗仪器生成的典型报告,该仪器使用传感器检测来自患者大脑的信号并将其显示为彩色地图。通常,有四张图片,所有图片都描绘了某个特征并一起分析以进行诊断。

本练习的目标图像包含四个大脑图

从上面的图像中,我们只想提取与四个地图(头部扫描)相对应的区域,而将其他所有内容都排除在外。因此,让我们开始吧。

第一步是检测我们要提取的片段的边缘。这是一个多步骤过程,如下所述:

  1. 使用“ cvtColor()”将RGB图像转换为灰度
  2. 通过应用模糊函数“ GaussianBlur()”来消除灰度图像中的噪声
  3. 最后将“ Canny()”函数应用于模糊图像以获得边缘

边缘检测过程的输出如下所示:

使用Canny算法的边缘检测输出

请注意,尽管已识别出脑图片段,但仍有许多不需要的边缘需要消除,并且某些边缘之间有间隙需要封闭。

解决这个问题的一种常用方法是形态转换,它涉及在图像上使用一系列的扩张和腐蚀来去除不需要的边缘和闭合间隙。

我们在多次迭代中使用OpenCV函数“ dilate()”和“ erode()”来获得如下输出。

使用OpenCV对边缘进行了一些增强

如我们看到的那样,边缘现在已经完成并且比以前光滑得多。

现在,我们可以使用OpenCV函数“ findContours()”提取该图像中的轮廓,并仅选择具有以下属性的轮廓:

  1. 几何形状是圆形或椭圆形
  2. 面积大于某个阈值(在此示例中,值7000可以正常工作)。

对于第一部分,我们将使用OpenCV的“ boundingRect()”检测每个轮廓的边界矩形,并检查纵横比(高宽比)是否接近1。

现在我们的任务已经完成,但还需要进行一些微调。

通常情况是在一个片段上检测到多个重叠的轮廓,而我们只对一个感兴趣。

使用非极大抑制可以解决此问题,即我们查看所有重叠的轮廓,然后选择面积最大的轮廓作为最终候选轮廓。逻辑非常简单,因此我们不需要任何内置的OpenCV或Python函数。

另一个重要的逻辑是分别识别四个部分,即左上,右上,左下和右下。

这也非常简单,涉及识别图像中心坐标以及每个检测到的片段的质心。对段轮廓进行质心检测需要在轮廓上应用OpenCV “ moments()”函数,然后使用以下公式计算中心 X,Y坐标:

center_x,center_y =(int(M [“ m10”] / M [” m00”]),int(M [“ m01”] / M [“ m00”]))

将线段质心坐标与图像中心坐标进行比较,可以将四个线段分别放置在各自的位置。

现在我们已经确定了四个部分,我们需要构建图像蒙版,这将使我们能够从原始图像中提取所需的特征。

我们将使用OpenCV函数“ drawContours()”,将颜色用作白色(R,G,B = 255,2555,255),将厚度用作FILLED(-1)在黑色背景上绘制所有四个线段轮廓。

用于提取我们的ROI的蒙版

在原始图像上应用此蒙版可以在我们选择的背景(例如黑色或白色)上为我们提供所需的分段。

对于黑色背景,我们创建一个黑色画布,然后使用OpenCV函数“ bitwise_and()”以及先前获得的蒙版在其上进行绘制。

在黑色背景上提取的ROI

对于白色背景,我们首先创建一个白色画布,然后通过使用OpenCV函数“ drawContours()”绘制轮廓为黑色(R,G,B = 0,0,0)且厚度为FILLED的轮廓,如下所示创建颜色反转的蒙版(-1)。

用于ROI提取的备用倒置掩模(图像源作者)

然后,我们使用OpenCV “ add()”函数将此反向蒙版添加到先前获得的黑色背景中,并获得相同的结果,但使用白色背景。

在白色背景上提取的ROI

到此为止,我们总结了几种方法,可以轻松地从图像中提取感兴趣区域。应当注意,在具有变化的复杂度的其他图像的情况下,上面使用的方法可以进行修改。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像处理
    +关注

    关注

    27

    文章

    1288

    浏览量

    56709
  • OpenCV
    +关注

    关注

    31

    文章

    634

    浏览量

    41329
  • python
    +关注

    关注

    56

    文章

    4792

    浏览量

    84613
收藏 人收藏

    评论

    相关推荐

    如何用MATLAB实现感兴趣区域ROI的选取

    有效的算法,现阶段感兴趣区域的检测和提取大多基于感兴趣区域所具有的低层特征。 对图像ROI的
    发表于 04-23 08:30

    有攻城狮对python感兴趣的吗?

    有攻城狮对python感兴趣的吗?
    发表于 12-21 15:50

    基于视觉感兴趣区的图像质量评价方法

    该文把人眼对图像中的不同区域具有视觉选择特性与客观图像质量评价方法结合起来,提出基于视觉感兴趣区的图像质量评价方法。该方法通过分析影响视觉
    发表于 08-11 09:58 16次下载

    基于JPEG2000感兴趣区域自适应水印算法

    提出一个基于JPEG2000 感兴趣区域(ROI)的自适应水印算法。该算法结合了感兴趣区域的编码特点及HVS 特性,在量化的ROI 区域中筛
    发表于 08-15 10:24 14次下载

    基于视觉注意模型和进化规划的感兴趣区检测方法

    根据生物注意机制,该文提出了一种基于视觉注意模型和进化规划的感兴趣区检测方法。采用进化规划方法分割图像候选区域区域兴趣度由视觉注意模型产生
    发表于 11-13 14:13 29次下载

    一种适合JPEG2000编码的动态感兴趣区域提取算法

    摘要:在分析了JPEG2000感兴趣区域(ROI)编码标准的基础上,提出了一种基于形态学的动态JPEG2000的ROI提取方法.利用形态滤波器组与分水岭分割算法将LLN小波子带图像划分
    发表于 02-21 16:29 28次下载
    一种适合JPEG2000编码的动态<b class='flag-5'>感兴趣</b><b class='flag-5'>区域</b><b class='flag-5'>提取</b>算法

    一种图像感兴趣区域提取方法

    根据视觉注意机制的经典模型Itti模型来提取图像的低层特征,利用局部迭代的特征合并策略并在此基础上综合自动阈值分割和种子点的区域生长方法得到感兴趣
    发表于 05-09 15:40 83次下载
    一种<b class='flag-5'>图像</b>的<b class='flag-5'>感兴趣</b><b class='flag-5'>区域</b><b class='flag-5'>提取</b>方法

    使用opencv进行图像处理

    使用opencv进行图像处理_于仕琪,感兴趣的可以看看。
    发表于 05-03 14:45 0次下载

    具有感兴趣区域的静止图像压缩编码算法研究

    ,与人眼的视觉特性相吻合,人眼最重要的视觉特性是视觉掩盖效应,即不变和有的区域很容易被遗忘,而对突变和极不规则变化的区域感兴趣。采用嵌入式零树小波编码及算法,通的区域和不
    发表于 12-01 08:58 3644次阅读
    具有<b class='flag-5'>感兴趣</b><b class='flag-5'>区域</b>的静止<b class='flag-5'>图像</b>压缩编码算法研究

    基于JPEG2000标准的感兴趣区域编码

    JPEG2000 标准是利用了离散小波变换技术和嵌入式编码技术一EBCOT,它不但提高了压缩比,而且提供了很多新编码方法。感兴趣区域编码(ROI)便是新编码方法之一。ROI 编码不仅较好地保持了图像
    发表于 12-01 11:49 4423次阅读
    基于JPEG2000标准的<b class='flag-5'>感兴趣</b><b class='flag-5'>区域</b>编码

    如何用MATLAB实现感兴趣区域ROI的选取

    在统计过程中,需要对特定的对象进行数据处理与分析,本文为图像处理数据分析的过程中提取感兴趣区域,并进行保存的MATLAB程序,有需要的可以参考。本文根据统计目标
    发表于 12-01 13:45 3.4w次阅读
    如何用MATLAB实现<b class='flag-5'>感兴趣</b><b class='flag-5'>区域</b>ROI的选取

    如何用opencv实现感兴趣区域ROI的选取

    感兴趣区域(Region of Interest, ROI)的选取,一般有两种情形:1)已知ROI在图像中的位置;2)ROI在图像中的位置未知。
    发表于 12-01 14:22 3.5w次阅读

    基于圆形感兴趣区域多路视频实时拼接

    针对视频拼接过程中面临的许多挑战,如实时性、有动态物体产生鬼影现象等,提出了一种基于圆形感兴趣区域( ROI)图像配准结合简化处理及图形处理器(GPU)加速的方法。首先,仅在ROI内提取
    发表于 12-11 15:23 1次下载
    基于圆形<b class='flag-5'>感兴趣</b><b class='flag-5'>区域</b>多路视频实时拼接

    如何使用感兴趣区域和RS编码机制的QR码美化算法

    针对已有QR码美化方法没有考虑背景图像感兴趣区域,进而影响美化效果的问题,提出基于感兴趣区域和RS编码机制的QR码美化算法。首先提出改进的
    发表于 01-17 13:39 21次下载
    如何使用<b class='flag-5'>感兴趣</b><b class='flag-5'>区域</b>和RS编码机制的QR码美化算法

    简述OpenCV中如何提取不规则ROI区域

    、测量、计算密度等,而且这些ROI区域往往不是矩形区域,一般都是不规则的多边形区域,很多OpenCV初学者都不知道如何提取这些不规则的ROI
    的头像 发表于 05-28 09:16 2333次阅读