2013-06-05 41 views
8

Tôi có một hình ảnh png xám và tôi muốn trích xuất tất cả các thành phần được kết nối từ hình ảnh của tôi. Một số thành phần có cùng cường độ nhưng tôi muốn gán một nhãn duy nhất cho mọi đối tượng. đây là hình ảnh của tôiTrích xuất các đối tượng đã kết nối từ một hình ảnh trong Python

enter image description here

Tôi đã thử mã này:

img = imread(images + 'soccer_cif' + str(i).zfill(6) + '_GT_index.png') 
labeled, nr_objects = label(img) 
print "Number of objects is %d " % nr_objects 

Nhưng tôi nhận được chỉ là ba đối tượng sử dụng này. Xin vui lòng cho tôi biết làm thế nào để có được mỗi đối tượng.

+0

Chức năng 'nhãn' đến từ đâu? –

+0

Giải pháp có thể có: http://stackoverflow.com/a/5304140/190597 – unutbu

+0

Tôi đang sử dụng một cái gì đó tương tự thực sự. Chức năng nhãn là từ scipy.ndimage Nhưng nhận được kết quả mà tôi đã đăng – Khushboo

Trả lời

8

J.F. Sebastian shows a way để xác định các đối tượng trong hình ảnh. Nó đòi hỏi phải tự lựa chọn một bán kính mờ và giá trị ngưỡng gaussian, tuy nhiên:

import scipy 
from scipy import ndimage 
import matplotlib.pyplot as plt 

fname='index.png' 
blur_radius = 1.0 
threshold = 50 

img = scipy.misc.imread(fname) # gray-scale image 
print(img.shape) 

# smooth the image (to remove small objects) 
imgf = ndimage.gaussian_filter(img, blur_radius) 
threshold = 50 

# find connected components 
labeled, nr_objects = ndimage.label(imgf > threshold) 
print "Number of objects is %d " % nr_objects 

plt.imsave('/tmp/out.png', labeled) 
plt.imshow(labeled) 

plt.show() 

enter image description here

Với blur_radius = 1.0, điều này thấy 4 đối tượng. Với blur_radius = 0.5, 5 đối tượng được tìm thấy:

enter image description here

+0

Hmm, tôi đã không thử Gaussian làm mờ trước đó. Phương pháp này hoạt động tốt hơn. Cảm ơn :) – Khushboo

0

Nếu biên giới của các đối tượng là hoàn toàn rõ ràng và bạn có một hình ảnh nhị phân trong img, bạn có thể tránh lọc Gaussian và chỉ làm dòng này:

labeled, nr_objects = ndimage.label(img) 
Các vấn đề liên quan