У меня есть изображение, как показано ниже, и я хотел бы подсчитать количество ошибок (непрерывных капель цвета/серого), которые отображаются на нем с помощью Python. Как я мог сделать это лучше всего?
Я до сих пор смотрел на ImageChops, SciPy и PIL, но я не уверен, что я могу/должен использовать...
Я думаю, что могу использовать ndimage.gaussian_filter()
, а затем scipy.ndimage.measurements.label()
просто не уверен, как использовать последний, чтобы подсчитать мои голубые точки в гауссовом изображении... он выглядит примерно как
Хорошо,
С приведенным выше изображением я получил этот код:
#! /usr/bin/python
import numpy as np
import scipy
import pylab
import pymorph
import mahotas
from PIL import Image
import PIL.ImageOps
from scipy import ndimage
image = Image.open('bugs.jpg')
inverted_image = PIL.ImageOps.invert(image)
inverted_image.save('in_bugs.jpg')
dna = mahotas.imread('in_bugs.jpg')
#pylab.imshow(dna)
pylab.gray()
#pylab.show()
T = mahotas.thresholding.otsu(dna)
pylab.imshow(dna > T)
#pylab.show()
dnaf = ndimage.gaussian_filter(dna, 8)
T = mahotas.thresholding.otsu(dnaf)
pylab.imshow(dnaf > T)
#pylab.show()
labeled,nr_objects = ndimage.label(dnaf > T)
print nr_objects
pylab.imshow(labeled)
pylab.jet()
pylab.show()
проблема в том, что это возвращает мне число 5, которое не так плохо, но мне нужно, чтобы он был более точным, я хочу видеть два. Как я могу это сделать? Помогло ли это размыть изображение перед применением гауссового фильтра?
Спасибо за помощь!
Рон