ImageMagick的hough变换说明

时间:2015-06-23 06:27:42

标签: imagemagick

预览

我使用下面提到的代码进行了hough line检测:

convert image.jpg -threshold 90% -canny 0x1+10%+30%      \
    \( +clone -background none                           \
              -fill red -stroke red -strokewidth 2       \
              -hough-lines 5x5+80 -write lines.mvg       \
    \) -composite hough.png

我在.mvg文件中写了这行的详细信息。 .mvg文件内容如下所示:

# Hough line transform: 5x5+80
viewbox 0 0 640 360
line 448.256,0 473.43,360  # 104
line 0,74.5652 640,29.8121  # 158
line 0,289.088 640,244.335  # 156
line 0,292.095 640,247.342  # 133
line 154.541,0 179.714,360  # 125
line 151.533,0 176.707,360  # 145

在这里查看输出hough.png文件。

enter image description here

问题:

  1. #104,#158,#156 ...代表什么,我猜他们是行号。如果是这样,为什么他们会以这种方式编号?

  2. 此外,我想知道如何分配坐标

  3. 如果我可以获得.mvg文件中的内容的解释,那将非常有用。

1 个答案:

答案 0 :(得分:3)

# <number>maxima值。它默认为count,由line_count设置,并且返回受您指定的threshold影响。如果矩阵元素计数大于先前的高度/宽度迭代,则数字将减少。所以...如果你给它一个-hough-lines 5x5+80的阈值,那么line 448.256,0 473.43,360 # 104被发现大约超过阈值的24个像素(或行?)。下一次迭代会将maxima放在80 threashold之下,所以我们停止比较矩阵元素。

  

此外,我想知道如何分配坐标。

我只能通过伪引用源代码来回答这个问题,但它是基本的三角函数。

if ((x >= 45) %% (x <= 135)) {
     y = (r-x cos(t))/sin(t)
else {
     x = (r-y cos(t))/sin(t)
}

where r is defined as y - midpoint element matrix height
where t is defined as x + midpoint rows

HoughLineImage

中的feature.c方法中了解详情