目录
圆的算法
投票实用技巧
优点和缺点
结束语
圆的算法
这是一个简单描述圆的算法。
和之前一样:
1、循环每一个边缘像素;
2、循环每个可能的半径;这是对的,因为我们不知道半径。
3、循环每一个可能的边缘梯度;如果我们投票给圆锥,或如果我们使用估计的梯度
4、然后我们计算 a 和 b ,我们增加 a、b和r,然后那会在你的霍夫空间投票给你。
一般来说,即使3D仅比2D多50%,你会发现3D投票比2D难多50%。
这是因为,我们可以这样想,假设每个维度有100个桶。
如果你有一个维度,那将是多少?是100个桶。
如果你有两个纬度,那将是多少? 是10000个桶。
如果你有三个纬度,那将是多少? 是1000000个桶。
你必须考虑单元格的数量,在维数上是指数级的,这是使用霍夫变换的一个挑战。
投票实用技巧
下面是投票给霍夫变换的几个实用技巧。
1、你要做的一件事就是不要做太多无关紧要的投票。所以尽量减少那些不健壮或不太可能有用的边缘元素。
因为记住,我们不需要找到这条直线上的所有点,只要找到足够多的点。
2、你想为霍夫累加器阵列选择一个好的网格离散化。你做了多少个箱子。这里没有什么神奇的答案,这有点像是一门艺术。
2.1、问题是:如果东西太大了,箱子太大了,那么太多的错误点会投给同一个箱子;
2.2、如果东西太好了,那么一点点噪音会让你投错了箱子;
所以这是一种权衡,这是一种如何处理和完善数据结构的方法。
你可以做的其他事情,你事实上可以说,我要表明我的观点,我要投票给箱子。
3、但也许我也会投票给附近的箱子,因为也许我投的不是我真正需要的地方。这有点像累加器阵列中的平滑。这确实有帮助。
4、使用梯度或边缘方向可以减少一个人的投票自由度,有时这非常有用。
5、最后一件事是,一旦你找到了,比如说圆或者直线。你可以把它画在图像上,但是如果你想找到边缘点,
你可以做一些事情。一个是你可以试着沿着这个圆寻找边缘点。或者你可以聪明一点,你可以有,当你在那些桶里投票,
在那些箱子里,你可以记录每一个投给那个桶的点。然后一旦你有了一个获胜的木桶,你去看,在桶里有一列投票给它的分数。
这样你就能在边缘图像中找到选择那个物体的点。
优点和缺点
霍夫变换的一些优点和缺点。
优点:
1、所有点都是独立处理的,因此可以处理遮挡;
所有的点都是独立处理的,Okay,如果我的部分内容被遮挡了因为每个点都可以投票。
2、对噪声具有一定的鲁棒性:噪声点不太可能对任何单个箱子产生一致性;
对于噪声有一定的鲁棒性,因为噪声点,就像我们之前说的,它们不太可能串通起来投票给错误的东西。
3、可以在一次遍历中检测一个模型的多个实例;
您可以使用它在单个图像中查找对象的多个实例。
缺点:
1、随着模型参数的增加,搜索时间复杂度呈指数增长;
最大的挑战是复杂性随模型参数的数量呈指数增长。如果你有7个模型参数,甚至4个,你永远都不会用到它。
你必须使用其他方法。
2、非目标形状可以在参数空间中产生假峰;
另一件事是,如果你有某种非目标形状,假设不是圆,你实际上有稍微压扁的椭圆,那么投票就会失败,你必须小心处理它。
3、量化:很难选择一个好的网格大小;
正如我们之前说过的,量化是很难挑选好的网格大小,需要实验。
结束语
这就结束了使用霍夫变换来找到圆的环节。
这是一种非常古老的参数化方法找到参数化对象的方法。尽管它很古老,但它是学习从图像中提取结构的好方法。
记住,我们从像素到物体。这就是为什么它是第一个严肃的问题集。
下次,我们将讨论,霍夫变换的更一般的用法。
你的参数不是建立在分析模型上的,比如线和圆。而是基于某人给你的物体的形状。
我们会讲到如何做到这一点以及为什么这在最近几年有了一些复苏。
——学会编写自己的代码,才能练出真功夫。