Я пытался подсчитать количество объектов из изображения и наткнулся на следующий код из другого вопроса, я применил его на моем образце изображения следующим образом:Объединение близких объектов после гауссова фильтра
import numpy
import matplotlib.pyplot as plt
from scipy import misc, ndimage
from skimage import feature
from skimage.filters import roberts, sobel
im = misc.imread('/home/nvp/temp/kaw.png',flatten=True)
im = im.astype('int32')
edges1 = feature.canny(im, sigma=3)
plt.imshow(edges1,interpolation='nearest')
dx = ndimage.sobel(im, 1) # horizontal derivative
dy = ndimage.sobel(im, 0) # vertical derivative
mag = numpy.hypot(dx, dy) # magnitude
mag *= 255.0/numpy.max(mag)
dna = mag
dnaf = ndimage.gaussian_filter(dna, 7)
T = 27 # set threshold by hand to avoid installing `mahotas` or
# `scipy.stsci.image` dependencies that have threshold() functions
# find connected components
labeled, nr_objects = ndimage.label(dnaf > T) # `dna[:,:,0]>T` for red-dot case
print(dnaf, labeled,len(labeled))
print("Number of objects is %d " % nr_objects)
# show labeled image
####scipy.misc.imsave('labeled_dna.png', labeled)
####scipy.misc.imshow(labeled) # black&white image
import matplotlib.pyplot as plt
plt.imsave('labeled_dna.png', labeled)
plt.imshow(labeled)
plt.show()
Однако это выводит следующее изображение:
конечные объекты хранятся в labeled
np.array Я думаю, что я хотел бы сделать, это объединить близкие объекты в этом выходном массиве. Как вы можете видеть, второй объект в последней строке имеет две части, но они очень близки друг к другу.
Поскольку я понятия не имею о numpy, я бы хотел установить порог и объединить объекты, которые имеют меньшее расстояние между ними. Любая помощь приветствуется. Спасибо :)
могли бы вы разработать немного и показать пример, я могу следовать? –
Я добавил псевдокод, я не могу проверить его сейчас, но он должен работать. Не стесняйтесь играть с параметрами для достижения ожидаемого результата. – Gwen
Привет, я изменил значения на 'max_dilat = 9, sz_small = 90, sz_big = 10000', и результаты выглядят следующим образом: [результаты] (http://imgur.com/a/FPysS), как вы можете видеть объектов исчезает после расширения, любая идея, как противостоять этому? Большое спасибо! –