边界跟踪算法(一)——Square跟踪算法
2017-07-10 23:09
92 查看
最近研究图像边界跟踪的相关算法,看了一些论文,得到一些相关的算法知识,与大家分享。
Square算法为了提取图案的边界,
首先,对给定的数字图像,即在网格平面白像素背景上的一组黑色像素,我们需要找到一个黑色边界像素,并把它作为跟踪的“开始”点。
算法将从该“开始”点出发来完成对边界的跟踪。
具体过程如下:
(1)每当发现自己站在一个黑色的像素,则向左进入相邻的像素;
(2)每当发现自己站在一个白色像素,就右转进入相邻像素;
(3)直到你再次遇到开始点时,停止;
(4)走过的黑色像素就是是图案的边界。
研究表明,跟踪算法不能提取在现实生活中出现的大多数图形的轮廓。换句话说,它的性能有非常大的局限性。这在很大程度上是归因于左,右转往往会错过给定的像素“斜侧”的像素。
![](https://img-blog.csdn.net/20170710231934061?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2tzYzEwOTkwNTQ4NTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20170710231941218?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2tzYzEwOTkwNTQ4NTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
改进方法:
规定第n次跟踪到开始像素后才停止跟踪,其中至少为2;
算法跟踪边界进入起始点时与第一次进入的方向相同时,停止追踪,结束运行。
更改终止准则会改善边界跟踪算法的性能,但不会克服它只针对具有特殊的邻接性图形有效的弱点:边界跟踪算法无法跟踪具有邻接性而不是邻接模式的图形边界。在下面的图中,我们可以看出:即使应用Jacob Eliosoff停止准则,边界跟踪算法也无法追踪得到只具有八邻接性而不具有四邻接性的图形的边界。
![](https://img-blog.csdn.net/20170710232306942?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2tzYzEwOTkwNTQ4NTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这个边界跟踪算法不能提取大部分图像的轮廓。但是,它并不是完全没有用处。对于一种特别类型的图形,边界跟踪算法可以完整地并且准确地提取它的边界,那就是背景与目标均为四邻接的图形。对给定符合这种连通特性的图像进行处理,Square边界跟踪算法(应用停止准则)可以成功地提取图形的边界。
Square算法为了提取图案的边界,
首先,对给定的数字图像,即在网格平面白像素背景上的一组黑色像素,我们需要找到一个黑色边界像素,并把它作为跟踪的“开始”点。
算法将从该“开始”点出发来完成对边界的跟踪。
具体过程如下:
(1)每当发现自己站在一个黑色的像素,则向左进入相邻的像素;
(2)每当发现自己站在一个白色像素,就右转进入相邻像素;
(3)直到你再次遇到开始点时,停止;
(4)走过的黑色像素就是是图案的边界。
研究表明,跟踪算法不能提取在现实生活中出现的大多数图形的轮廓。换句话说,它的性能有非常大的局限性。这在很大程度上是归因于左,右转往往会错过给定的像素“斜侧”的像素。
改进方法:
规定第n次跟踪到开始像素后才停止跟踪,其中至少为2;
算法跟踪边界进入起始点时与第一次进入的方向相同时,停止追踪,结束运行。
更改终止准则会改善边界跟踪算法的性能,但不会克服它只针对具有特殊的邻接性图形有效的弱点:边界跟踪算法无法跟踪具有邻接性而不是邻接模式的图形边界。在下面的图中,我们可以看出:即使应用Jacob Eliosoff停止准则,边界跟踪算法也无法追踪得到只具有八邻接性而不具有四邻接性的图形的边界。
这个边界跟踪算法不能提取大部分图像的轮廓。但是,它并不是完全没有用处。对于一种特别类型的图形,边界跟踪算法可以完整地并且准确地提取它的边界,那就是背景与目标均为四邻接的图形。对给定符合这种连通特性的图像进行处理,Square边界跟踪算法(应用停止准则)可以成功地提取图形的边界。
相关文章推荐
- 浅析时钟向量算法
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#基础入门之算法:交换
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- 经典排序算法之冒泡排序(Bubble sort)代码
- Android数据加密之异或加密算法的实现方法
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- C语言实现图的搜索算法示例