将圆形图转换为水平图

时间:2018-10-09 07:42:08

标签: python numpy opencv image-processing python-imaging-library

我有一个带有圆形x轴的图形,其中有一些对象。

  1. 我想转换图形并使其x轴水平。
  2. 我想测量每个对象在x轴上方的高度(像素距离)。

我用numpy数组尝试了此操作,但是只能获得轴和对象之间的垂直像素差,而没有真正的最小像素差。我想我应该对所有圆形x轴点进行迭代并测量到一个对象的距离,但是我该怎么做?

enter image description here

编辑: 这是原始图片

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为您的问题有几种潜在的解决方案。

1-转换回笛卡尔图像

这是一个简单的解决方案:将极坐标图像转换回笛卡尔坐标,并计算到两条水平线的距离。为此,您将需要两个圆的中心和半径,因为您已将它们绘制在图像上,所以我认为您已经有了。在以下SO问题中讨论了翘曲的技术解决方案:Reprojecting polar to cartesian grid

2-直接几何计算

这比第一点还要简单,如果不需要进一步处理,则可以直接实施解决方案。

同样,假设对于每个圆,您都知道其中心的位置(X,Y)以及半径R。如果图像中有坐标点(x,y),则可以计算距离使用简单的欧几里德距离计算得出圆心:d = sqrt((Xx)** 2 +(Yy)** 2)。到圆的距离就是R-d。使用numpy在python中编写的代码,它会给出类似以下内容:

def distToCircle(pt, center, R):
    d = np.linalg.norm(center-pt)
    return R-d