我有一点麻烦,理解如何线绘制后,做了霍夫变换使用极坐标。
在OpenCV example上,他们是这样做的:
a = math.cos(theta)
b = math.sin(theta)
x0 = a * rho
y0 = b * rho
pt1 = (int(x0 + 1000*(-b)), int(y0 + 1000*(a)))
pt2 = (int(x0 - 1000*(-b)), int(y0 - 1000*(a)))
我知道他们是在同一条线上取两个相距很远的点,但我很难理解“投影”/乘以x点的sin和y点的cos。
有人能给我点启发吗?
1条答案
按热度按时间osh3o9ms1#
r
和theta
的定义如下所示。因此,蓝线方向单位向量V是
( cos(theta), sin(theta) )
,线上的一个点是r * **V**
(在您的描述中,这是(x0,y0)
)。线上的点可以通过从该点沿着线移动来获得。沿着方向的单位矢量U(垂直于V)为
( -sin(theta), cos(theta) )
或( sin(theta), -cos(theta) )
。所以,线上的点是:
r * **V** + k * **U**
其中,标量
k
的值是任意移动量。(在您的描述中,使用的k
值为1000
和-1000
)因此,简短的回答
x点的sin和y点的cos
是,U:沿着直线的单位方向向量。