python直角坐标转极坐标_python - 如何使用Python将FFT(快速傅立叶变换)转换为极坐标变换? - SO中文参考 - www.soinside.com...

这大致是你解决问题的方法;它在一个样本图像上进行了测试,结果看起来很可靠。

# your code goes here...

def transform_data(m):

dpix, dpiy = m.shape

x_c, y_c = np.unravel_index(np.argmax(m), m.shape)

angles = np.linspace(0, np.pi*2, min(dpix, dpiy))

mrc = min(abs(x_c - dpix), abs(y_c - dpiy), x_c, y_c)

radiuses = np.linspace(0, mrc, max(dpix, dpiy))

A, R = np.meshgrid(angles, radiuses)

X = R * np.cos(A)

Y = R * np.sin(A)

return A, R, m[X.astype(int) + mrc - 1, Y.astype(int) + mrc - 1]

angles, radiuses, m = transform_data(magnitude_spectrum)

plt.contourf(angles, radiuses, m)

最后,我们可以得到我们想要转动原始图像的角度:

sample_angles = np.linspace(0, 2 * np.pi, len(c.sum(axis=0))) / np.pi*180

turn_angle_in_degrees = 90 - sample_angles[np.argmax(c.sum(axis=0))]

对于我的示例图像,我得到了:

turn_angle_in_degrees = 3.2015810276679844 degrees.

此外,我们可以绘制投影频谱幅度:

plt.plot(sample_angles, c.sum(axis=0))

希望有帮助......

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值