Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Image processing 查找形状是否封装的可能情况_Image Processing_Computer Vision - Fatal编程技术网

Image processing 查找形状是否封装的可能情况

Image processing 查找形状是否封装的可能情况,image-processing,computer-vision,Image Processing,Computer Vision,对于一个学校项目,我使用了一个具有一些高级功能的轮廓查找器。我们的目标是让它快速疯狂,这使得事情有时像现在这样有点复杂。 正如我所读到的,每周的编程可以节省思考的时间,这就是本文的主题 目标是找出哪些blob被另一个blob完全包围 边缘像素是指一个像素为黑色,下一个像素为白色 带有红线的形状是可能的父blob。条件是它得到的形状被一条红线包围。因此,对于图像0,它不是父blob,因为它在顶部是打开的,因此不包含其他blob blobfinder从左到右或从上到下扫描。保存角点像素。如果你想从存

对于一个学校项目,我使用了一个具有一些高级功能的轮廓查找器。我们的目标是让它快速疯狂,这使得事情有时像现在这样有点复杂。 正如我所读到的,每周的编程可以节省思考的时间,这就是本文的主题

目标是找出哪些blob被另一个blob完全包围

边缘像素是指一个像素为黑色,下一个像素为白色

带有红线的形状是可能的父blob。条件是它得到的形状被一条红线包围。因此,对于图像0,它不是父blob,因为它在顶部是打开的,因此不包含其他blob

blobfinder从左到右或从上到下扫描。保存角点像素。如果你想从存储在一个blob中的第一个像素向相反的方向移动,你肯定不会再碰到同一个blob。这个细节非常重要

当轮廓从黑色像素变为白色像素时,也会检测到轮廓。因此,对于图像1,在绿色椭圆处检测到内部正方形get,而不是在红色椭圆处。换句话说,在绿色椭圆处的像素0处,第一个像素位于blob中的像素阵列中

为了实现我们的目标,我们将以与我们如何找到轮廓相反的方向进行扫描。对于图1,我们通过从左到右建立轮廓,发现它是一个封闭的斑点,我们从右到左。 这个细节也很重要

对于我们检查的每个像素,我们还将检查坐标是否在可能的父blob之外。如果这个条件为真,那么它不是一个封闭的斑点。例如,在图1中

如果它发现一个边缘像素,并且该坐标属于我们测试的blob,那么我们知道它属于可能的父blob,请参见图2

如果发现一个blob在测试范围内,则可以忽略该blob,请参见图3

如果发现一个blob超出了可能的父blob的边界,那么我们知道测试的blob没有被可能的父blob包围,请参见图4

如果从可能的父blob中找到一个像素,那么我们现在知道它不是一个封闭的blob,请参见图5

如果我们知道测试中的blob是一个封闭的blob,那么我们测试的blob中的所有blob也都被可能的父blob封闭,请参见图6。 因此,最好先测试较大的斑点,然后再测试较小的斑点

我的问题是,有没有我没有考虑过的案例?还是我在某个案例失败的地方错了? 如果你能想到一些东西,那么请提供一个图像来解释更直观的东西。
如果你有任何问题,然后问他们,我会编辑这篇文章,以更清楚地描述它,如果可能的话。我已经尽了最大努力。

听起来像是一个不错的项目-你没有说一旦你找到一个黑白过渡连接的组件填充和标签,你将如何解决这些斑点?否则,凸面斑点将有问题。也要考虑没有明显的父子关系的情况,比如两个互锁的U形-一个倒置,你明白我的意思吗?我已经有了斑点,我想出了一个新的算法,我称之为LimMein算法。这是非常简单和疯狂的速度。对于其余部分,我有blob的每个角和一个方法来查看坐标是否位于blob的边上。对于这两个互锁的U形,我之前做了一个测试,以获得包含blob的层次结构,其中条件是blob a与blob b不相交。谢谢你的回答,我现在就开始编程,希望一切顺利:你打算分享旅鼠的算法吗?我敢打赌,如果它强劲且速度非常快,将会引起人们极大的兴趣。祝你好运,希望一切顺利。是的,我想在大约2个月后发布。目前它依赖于处理,这就像java的框架。我想摆脱框架,这是一种很容易做到的。此外,我还想制作真正优秀的文档。我想把算法形象化。还有一些空间可以让它更快。我加了一些东西,使它慢了一点,但我更喜欢保持这种状态。例如,您可以向其传递具有检查阈值规则的对象。通过这个,你可以很容易地制作自己的阈值检查器,例如只检查蓝色通道。这里有一个预览:哦,是的,当我发布它时,你知道一个传播消息的好地方吗?我回来的原因是,我认为n5是错误的。我必须写一个新的轮廓扫描仪来处理这是一个很大的工作,但值得它。让我给你贴上标签,这样你就能得到最新消息,@rogerowland