Chúng ta hãy có một hình ảnh (thang màu xám hoặc thậm chí là nhị phân) như được hiển thị trên hình dưới đây ở phía bên trái, mục tiêu là tạo ra một danh sách các điểm tức là tọa độ dưới dạng (x, y) cho mỗi gói của pixel tối trong hình ảnh.
Các công cụ xử lý hình ảnh thích hợp để làm điều này là gì và chúng có sẵn ở đâu?
Cập nhật:
1)
Tại đây bạn có thể tìm thấy một số chi tiết về vấn đề. (Lưu ý sự thay đổi kích thước của các gói)
Tôi có thể đề nghị có các gói được phát hiện để tính ranh giới lồi cho mỗi và sau đó tìm trung tâm đại diện {xem phần này để biết chi tiết} .
2)
Đây là kết quả được tạo ra bởi ứng dụng Biến đổi khoảng cách (được đề xuất bởi "Libor"). Lưu ý các chú thích của tôi trên hình. Phương pháp này không hoạt động như đã hứa!
3)
Ăn mòn loại bỏ các gói nhỏ!
from __future__ import division
from scipy import zeros, ndimage as dsp
from pylab import subplot,plot,matshow,show
img = zeros((30,30))
img[10:14,10:14] = 1
img[16:17,16:17] = 1
img[19:23,19] = 1
img[19,19:23] = 1
subplot(221)
matshow(img,0)
subplot(222)
y = dsp.binary_erosion(img,[[1,1],[1,1]])
matshow(y,0)
subplot(223)
y = dsp.binary_erosion(img,[[0,1,0],[1,1,1],[0,1,0]])
matshow(y,0)
subplot(224)
y = dsp.binary_erosion(img,[[1,1,1],[1,1,1],[1,1,1]])
matshow(y,0)
show()
4)
Vâng, đây là một Python (nghĩa là ngôn ngữ của tình yêu :)) thực hiện ý tưởng ghi nhãn (cũng được đề xuất bởi "Jean-Yves" bên dưới):
subplot(221)
l,n = dsp.label(img)
sl = dsp.find_objects(l)
for s in sl:
x = (s[1].start+s[1].stop-1)/2
y = (s[0].start+s[0].stop-1)/2
plot(x,y,'wo')
và kết quả:
Lưu ý rằng mặc dù nó được thực hiện bằng Python rất nhanh do hiệu năng Scipy, quy trình nền trong label
chức năng phải là một phép lặp hết sức. Điều này có thể được coi là một sự đánh đổi. Vì vậy, trong một thời gian, tôi luôn mong muốn tìm kiếm các thuật toán hiệu quả hơn. Và cũng lưu ý rằng trong đoạn mã đã cho ở trên, tôi thấy trung tâm của hình học rất đơn giản trong khi đối với các hình dạng phức tạp hoặc không đối xứng, điều này có thể khiến định vị bị sai lệch. Đó là một công việc đang tiến triển;).
5)
Đây là một trường hợp phức tạp (một hình ảnh thực) được chụp từ đây mà đề xuất ghi nhãn được áp dụng và bạn thấy kết quả. Lưu ý rằng chỉ mất 0,015 giây cho toàn bộ quy trình bao gồm ghi nhãn và tìm các đối tượng. Những người Scipy , tôi đã làm rất tốt, tôi nghĩ vậy. Ồ {nhấp chuột phải vào hình ảnh, nhấp vào xem hình ảnh để có độ phân giải đầy đủ}