voglio trasformare in Python 2d array/immagini a polare, processo poi, e successivamente trasformarli di nuovo a cartesiano. Quello che segue è il risultato da ImajeJ Polar Transformer plug-in (utilizzato sui cerchi concentrici del codice di esempio):veloce cartesiana a polare a cartesiani in Python
Il numero e si affievolisce delle immagini è abbastanza grande in modo da stavo controllando se OpenCV ha un veloce e modo semplice per farlo.
ho letto su cv. CartToPolar
e PolarToCart
ma non sono riuscito a usarlo. Comprendo meglio il LogPolar
dove l'ingresso e l'uscita sono array, e dove è possibile impostare il centro, interpolazione e inversione (cioè CV_WARP_INVERSE_MAP
). C'è un modo per usare CartToPolar/PolarToCart in modo simile?
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()
Questo è per una tomografia (CT) dove workflow anelli manufatti possono essere filtrati più facile se appaiono come linee.
Grazie molto molto! Infatti 'LinearPolar' fa quello che dice. Sfortunatamente usando 'import cv' non era disponibile, ma ho provato' da opencv import cv' e poi 'cv.cvLinearPolar' e funziona. I prossimi giorni proverò le sue prestazioni in serie di dati di grandi dimensioni. Grazie! – Papado
cool. mi chiedo perché non è visibile? proverò a compilare una segnalazione di bug. –
http://code.opencv.org/issues/1729 –