我想将Python 2d数组/图像转换为极坐标,然后进行处理,然后将它们转换回笛卡儿坐标系。以下是从ImajeJ Polar Transformer插件的结果(样品上代码的同心圆使用):在Python中快速笛卡尔到极坐标到笛卡尔
的图像的数量和变暗是相当大的,所以我检查的OpenCV是否具有快速和简单的方法来做到这一点。
我读过关于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)工作流程,其中环状伪像如果以线条形式出现可以更容易地过滤掉。
非常感谢你!事实上'LinearPolar'就是这么说的。不幸的是,通过使用'import cv',它不可用,但我尝试了'从opencv导入cv'然后'cv.cvLinearPolar'并且工作。接下来的几天我会尝试它在大型数据集中的表现。谢谢! – Papado 2012-03-29 17:11:18
很酷。我想知道为什么它不可见?我会尝试提交一个错误报告。 – 2012-03-29 17:18:52
http://code.opencv.org/issues/1729 – 2012-03-29 17:30:23