当前位置: 首页 > 知识库问答 >
问题:

如何获得笛卡尔坐标系中endpoint的坐标以及线段极坐标系中相应的(ρ,θ)

郑哲彦
2023-03-14

我使用Canny方法得到图像的边缘。然后我应用约多边形方法来近似边,得到一组折线(不是多边形)和线段。每个折线由线段形成。我的目的是得到每个线段endpoint在笛卡尔坐标系(2D平面)中的坐标和相应的极坐标参数(rho,θ)。任何想法?谢谢!

顺便说一句:我知道我们可以使用HoughLines方法查找直线(而不是线段)并获得极坐标中的参数(rho,θ),或者我们可以使用HoughLinesP方法查找线段和endpoint坐标。但这两种方法不能同时得到线段endpoint坐标和相应的参数(ρ、θ)。

共有1个答案

拓拔稳
2023-03-14

下面是一些示例C代码,用于解释OpenCV HoughLines中的一行。如果你想要坡度,只需找到两个点,并计算上升超过运行。

不幸的是,重要的公式没有文档中应有的那么明显,它是:rho=x*cos(θ)y*sin(θ)

float yForHoughLine(float x, const Vec2f houghLine) {
    float rho = houghLine[0];
    float theta = houghLine[1];
    if (theta == 0)
       return NAN;
    return (rho - (x * cos(theta))) / sin(theta);
}

float xForHoughLine(float y, const Vec2f houghLine) {
    float rho = houghLine[0];
    float theta = houghLine[1];
    float cosTheta = cos(theta);
    if (cosTheta == 0)
        return NAN;
    return (rho - (y * sin(theta))) / cosTheta;
}

这里是等效的Python:

def y_for_line(x, r, theta):
    if theta == 0:
        return np.nan
    return (r - (x * np.cos(theta))) / np.sin(theta)


def x_for_line(y, r, theta):
    cos_theta = np.cos(theta)
    if cos_theta == 0:
        return np.nan
    return (r - (y * np.sin(theta))) / cos_theta
 类似资料:
  • 我试图将图像从极坐标转换为笛卡尔坐标,但在应用公式后,我得到了浮点坐标(r和teta),我不知道如何使用x和y的浮点来表示空间中的点。可能有一种方法可以将它们转换为整数,并仍然保留分布,但我不知道如何。我知道OpenCV中有像warpPolar这样的函数,但我想自己实现它。任何想法都会有帮助:) 这是我的代码:

  • 我正在尝试将极坐标的图像转换为笛卡尔坐标。 将图像转换为极坐标的示例显式执行-想要一个光滑的矩阵方法 我原以为使用上述方法是小菜一碟,但事实并非如此!!如果有人发现我的代码有错误,请告诉我! 我发现非常奇怪的是,当我改变phi时,它会做出根本性的改变,而不是以我期望的方式! 干杯

  • 我想知道是否有人帮助我理解如何将顶部图像转换为底部图像。以下链接中提供了这些图像。顶部图像采用笛卡尔坐标。底部图像是极坐标中的转换图像

  • 我知道这个问题已经被回答了很多次,但是我不知道我做的是好是坏。 我得到了一个带有缺陷位置和图像ID的文件。图像大小为96*96。起源是(48,48) 由此计算R和T 然后,我为每个图像创建大小为96×96的空矩阵,对于图像1(例如),我在每个坐标(R,T)处赋值0 当我绘制矩阵时,我的结果很奇怪。。我错过了什么重要的事情吗?

  • 我试图计算一种有效的方法,将笛卡尔坐标系中的图像转换为极坐标表示。我知道ImToPolar等一些功能正在实现这一点,它工作得很好,但对于大图像来说需要相当长的时间,尤其是当它们需要来回处理时。 这是我的输入图像: 然后我使用以0为中心的笛卡尔网格和函数生成一个极网格。最后,我使用绘制我的图像。 这是我得到的: 这正是我需要的图像,它与ImToPolar相同,或者更好。 既然MATLAB知道如何计算

  • 我正在尝试将球坐标转换为笛卡尔坐标,以绘制一个简单的三维金字塔。 下面是获取金字塔四个主要角的代码,具体取决于极角yrad和方位角xrad以及顶点坐标x和y: 方位角轴似乎工作正常,但问题是,在操纵极轴角时,当它们越过天顶或底部时,左右会互换,如图所示(选择顶部的mp4以更平滑地播放):http://gyazo.com/4a245713c232893960863cf4ea4186f6 怎么了?