MUH*_*UAZ 5 algorithm matlab image-processing
我试图在MATLAB(特别是)中对图像中的对象进行形状分析.为此,我找到了边界像素.对于每个边界像素,我使用8邻域理论计算它的邻居.现在我正在计算一个点到它的唯一一个邻居的切线(取决于我如何选择顺时针或其他方式).如果每个像素恰好有两个邻居,我的算法工作正常.对于此图中显示的形状(顺序为9 X 15像素).
但如果一个像素的邻居超过2个,那么我的算法就会混淆.例如,如(9×15像素的顺序).
我想用顺时针或逆时针方向的相邻像素取每个边界像素的切线,如果你注意到第二个图像,这是有效的边界图像,如果我在顺时针方向移动,那么红色像素的邻居将是绿色和邻居顺时针方向的绿色为"1","1"的邻居为"2"但是我不能回到蓝色和棕色的像素,我无法访问并获取每个边界像素与其相邻像素的切线.
我已经学习了图形的节点访问算法,你可以在其中维护队列或堆栈,但在这种情况下,我不仅要访问每个像素,还要根据我正在移动的方向采用只有右邻居像素的每个像素的切线.
这是一个示例问题,类似的问题可能以其他方式发生,所以我试图为它生成一些通用算法.我将感谢你的帮助.谢谢.
就像 btilly 已经说过的那样。解决方案是找到像素之间的边界,而不是像素本身。我向你推荐potrace算法的一部分。它是一种矢量化二值图像的算法。对你来说有趣的部分是路径的分解。这是 Path 分解的想法:
Potrace算法您可以在此处找到
另一种算法来自 Wilhelm Burge 和 Burger 在书中“使用在此处输入链接描述的数字图像处理算法介绍”。在链接中您可以看到这本书的某些部分。有趣的部分是第 538 页的函数“TraceContour”。该算法的工作方式就像您想象的那样,并围绕“内部”像素行走。我在这里找到了一些关于 Alorith 的解释,在内边界追踪中。您可以使用四个或八个邻居连接来执行该算法。
归档时间: |
|
查看次数: |
674 次 |
最近记录: |