使用广义霍夫变换比较任意形状

时间:2012-07-20 23:02:25

标签: c++ image-processing opencv hough-transform

我使用广义霍夫变换来区分各种任意形状。我将要处理的几个形状如下所示: http://i50.tinypic.com/2u550t5.png

我已成功实施以下步骤:

A)转型/培训阶段

i)获取二进制图像的阈值 ii)使用cvFindContour获取轮廓 iii)计算每个边缘像素的距离'r'和渐变方向(phi) iv)创建R-table

为每个形状创建一个R-table数据库

B)表彰

i)获取任意形状的轮廓 ii)计算每个边缘像素的渐变方向 iii)使用R-table,构建累加器

我的问题是如何进一步处理?

如何使用此累加器数据检测形状?

1 个答案:

答案 0 :(得分:0)

基本上,一旦你有累加器图像,你必须找到它中的峰值,即具有最高“投票数”的像素(或单元格),一个峰值应该粗略地表示你的位置形状

有很多关于广义霍夫教程的教程,我喜欢M. Ulrich撰写的论文"Hierarchical Real-Time Recognition of Compound Objects in Images",其中图4.3,4.4和4.5清楚地解释了这个主题。