Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 对于图像内部的区域是否有规则性检测工具?_Matlab_Image Processing - Fatal编程技术网

Matlab 对于图像内部的区域是否有规则性检测工具?

Matlab 对于图像内部的区域是否有规则性检测工具?,matlab,image-processing,Matlab,Image Processing,我正在用MATLAB处理图像中的一些区域。我希望能够将具有某种规律性的区域(例如,圆形或方形)与不类似于任何已知图形的区域(对于我的应用来说,这些区域仅仅是噪声)分开。我将使用描述性MS Paint图像对此进行说明: 有没有任何工具,在大多数情况下(甚至更少,我知道这不可能是100/100),会识别红色的东西是不同的 我将在一张图片中处理许多形状,所以我不介意我沿途携带一些红色怪物,只要大部分被踢出。当然我知道这些区域的指数,所以我可以在MATLAB中操作它们 我想到了许多算法,例如,获取边界

我正在用MATLAB处理图像中的一些区域。我希望能够将具有某种规律性的区域(例如,圆形或方形)与不类似于任何已知图形的区域(对于我的应用来说,这些区域仅仅是噪声)分开。我将使用描述性MS Paint图像对此进行说明:

有没有任何工具,在大多数情况下(甚至更少,我知道这不可能是100/100),会识别红色的东西是不同的

我将在一张图片中处理许多形状,所以我不介意我沿途携带一些红色怪物,只要大部分被踢出。当然我知道这些区域的指数,所以我可以在MATLAB中操作它们

我想到了许多算法,例如,获取边界并检查其规则性/曲率变化的次数/…,检查通过不同列的垂直长度变化(线性特征接近0,红色特征非常高)

然而,我希望能从外面的工具中得到一些帮助。如果这个工具不能涵盖所有的情况(例如,将踢出圆圈),这并不重要,我已经非常广泛地从你们那里获得了最大数量的输入-任何工具都将是鼓舞人心和有用的(然而,对于更深层次的问题——识别规则形状——这似乎更像是人工智能的研究领域——我们不能期待一个完美的答案)。我还认为,虽然范围很广,但这是完全非主观的,因此应该适合这样做。谢谢

旁注1:我将主要讨论延长的、扩展的功能,如右上角的功能,因此圆圈没有那么重要

旁注2:为了100%清楚,我需要一些东西(无论是现有的工具,还是您提出的一些想法)作用于形状的索引、原始图像中的行、列或形状本身的边界


旁注3:除了工具/建议/想法之外,欢迎您写下一些代码行;)我从
bwconcomp
中获取作为连接组件的区域我最近不得不解决一个类似的问题,该问题涉及计算图像中斑点上的缩进数(基本上是bwconncomp返回的连接组件)。我使用的方法是查看通过FFT计算的沿边界的曲率变化。在您的例子中,红色斑点会有大量的曲率变化,而黑色区域不会。这是一个非常简单的计算,速度相对较快。代码在github上:

感兴趣的文件是src/countindents.m。这里简要介绍了该方法:


我选择了@Mikhail在评论中建议的更轻松的道路。 我发现,
regionprops
有一个非常有用的工具,叫做.Quoting docs

返回一个标量,指定凸包中也在区域中的像素比例。计算为面积/凸面面积

凸包被定义为可以包含该区域的最小凸面多边形。因此,如果形状是规则的,并且没有凸面变化,则“Solidity”将上升到1;对于我的红色形状,将下降到0,这将在其自身和凸面多边形之间留有空间


当然,它永远不会达到0,最低值应该属于一种
+
形状的符号。

有一个强大的工具
regionprops
。我将从确定椭圆和矩形开始,包围你的区域。然后你可以计算这个矩形/圆和你的对象的面积比。如果这个比例o接近1,你的对象看起来像椭圆/矩形,否则不用谢,这绝对是我要找的输入类型。