我想將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