我想在Python中将二维数组/图像转换为极坐标,进行处理,然后再转换回笛卡尔坐标系。以下是ImajeJ Polar Transformer插件(用于示例代码的同心圆)的结果:链接如下:Polar Transformer
由于图像的数量和维数相当大,因此我正在查看openCV是否有一种快速简便的方法来完成此操作。
我了解到cv.
我了解到cv.
CartToPolar
和 PolarToCart
,但我无法使用它们。我更理解LogPolar
,其中输入和输出都是数组,并且可以设置中心,插值和反演(即CV_WARP_INVERSE_MAP
)。是否有一种类似的方式使用CartToPolar/PolarToCart? import numpy as np
import cv
#sample 2D array that featues concentric circles
circlesArr = np.ndarray((512,512),dtype=np.float32)
for i in range(10,600,10): cv.Circle(circlesArr,(256,256),i-10,np.random.randint(60,500),thickness=4)
#logpolar
lp = np.ndarray((512,512),dtype=np.float32)
cv.LogPolar(circlesArr,lp,(256,256),100,cv.CV_WARP_FILL_OUTLIERS)
#logpolar Inverse
lpinv = np.ndarray((512,512),dtype=np.float32)
cv.LogPolar(lp,lpinv,(256,256),100, cv.CV_WARP_INVERSE_MAP + cv.CV_WARP_FILL_OUTLIERS)
#display images
from scipy.misc import toimage
toimage(lp, mode="L").show()
toimage(lpinv, mode="L").show()
这是针对计算机断层扫描(CT)工作流程的,如果出现环形伪影,可以更容易地将其过滤为线条。