【发布时间】:2015-01-13 16:00:14
【问题描述】:
我正在尝试实现霍夫变换算法。算法有效,但速度很慢。 目前我在两个for循环中通过这个等式计算rho:
对于 i = 1:长度(x)
j=1; for theta = -pi/2:nBinsTheta:pi/2-nBinsTheta ro =round(x(i).*cos(theta) + y(i).*sin(theta)); .... j = j + 1; end结束
我怎样才能简化这个,在没有 for 循环的情况下工作? 我需要在没有循环的情况下计算 ro,但我该怎么做才能涵盖所有可能的 theta?
编辑:现在我需要知道如何在给定 x 和 y 坐标向量的情况下将 1 加到累加器矩阵中的指定单元格。例如,假设我有如下向量:
x:[1 2 1 3]
y: [1 3 1 4]
我想在没有循环的情况下解决这个问题。我知道我需要使用 sub2ind 转换为线性索引,但问题是会有很多相同的线性索引,例如我给出的,会有 2x1 (1 ,1 坐标重复两次)。如果您尝试像这样添加 1:
A([1 1]) = A([1 1]) + 1;
它只会加 1 一次,这是我的问题。
【问题讨论】:
-
里面
j有什么用? -
j 是为了在累加器数组中获取适当的值,以便进行投票
-
你能格式化编辑部分吗?很难像现在这样阅读。
标签: matlab computer-vision vectorization hough-transform