Tôi muốn chuyển đổi trong mảng 2d Python/hình ảnh thành cực, xử lý rồi, và sau đó chuyển đổi chúng trở lại Descartes. Sau đây là kết quả từ ImajeJ Polar Transformer plugin (sử dụng trên các vòng tròn đồng tâm của mã mẫu):fast Descartes to Polar to Cartesian trong Python
Số lượng và làm mờ của hình ảnh là khá lớn vì vậy tôi đã kiểm tra xem OpenCV có nhanh và cách đơn giản để làm điều này.
Tôi đã đọc về cv. CartToPolar
và PolarToCart
nhưng tôi không sử dụng được. Tôi hiểu rõ hơn về số LogPolar
trong đó đầu vào và đầu ra là các mảng và nơi bạn có thể đặt trung tâm, nội suy và nghịch đảo (ví dụ: CV_WARP_INVERSE_MAP
). Có cách nào để sử dụng CartToPolar/PolarToCart theo cách tương tự?
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()
Đây là quy trình làm việc chụp cắt lớp (CT) nơi các đồ tạo tác có thể lọc ra dễ dàng hơn nếu chúng xuất hiện dưới dạng dòng.
Cảm ơn bạn rất nhiều! Thật vậy 'LinearPolar' làm những gì nó nói. Thật không may bằng cách sử dụng 'import cv', nó không có sẵn, nhưng tôi đã thử' from opencv import cv' và sau đó là 'cv.cvLinearPolar' và hoạt động. Ngày tiếp theo tôi sẽ thử hiệu suất của nó trong các tập dữ liệu lớn. Cảm ơn bạn! – Papado
tuyệt. tôi tự hỏi tại sao nó không nhìn thấy được? Tôi sẽ thử nộp báo cáo lỗi. –
http://code.opencv.org/issues/1729 –