Преобразование изображения PIL в skimage?

У меня есть изображение, загруженное в мой код (очень длинное и ненужное, не буду публиковать здесь), над которым мне нужно работать с помощью skimage, чтобы обнаружить капли на изображении. Однако по какой-то причине все изображения и попытки, которые я использовал, не работают.

Изображение изменено PIL в приведенном выше коде, чтобы объекты, которые я пытаюсь найти, были только белыми (255, 255, 255), а все остальные пиксели черными. Этот код должен только идентифицировать позиции этих. Я пробовал много разных вещей, чтобы заставить это работать (преобразовывая их в массив numpy, а не преобразовывая их в массив numpy и т. д.).

Я следую этим инструкциям: http://scikit-image.org/docs/dev/auto_examples/plot_blob.html для основ, но на самом деле это не учебник, а скорее пример.

Я думаю, что функция rgb2gray вызывает проблемы, поскольку она возвращает только 0, в то время как print(numpy.array(img)) возвращает значения от 0 до 1, предполагая, что потеря информации происходит при вызове rgb2gray.

Вот код, который кажется проблематичным:

img_gray = rgb2gray(numpy.array(img)) # Convert to numpy array for skimage
print(img_gray)
print(numpy.array(img))
img_blobs = blob_doh(img_gray, threshold=0.01, max_sigma=500)
print(img_blobs)

Как я могу это исправить?

ИЗМЕНИТЬ:

Вот что печатает каждое из изображений, массивов и списков:

[[ 0.          0.          0.         ...,  0.          0.          0.        ] #img_gray
 [ 0.          0.00392157  0.01568627 ...,  0.          0.          0.        ]
 [ 0.          0.01176471  0.05882353 ...,  0.          0.          0.        ]
 ..., 
 [ 1.          0.99607843  0.96078431 ...,  0.          0.          0.        ]
 [ 1.          1.          0.98039216 ...,  0.          0.          0.        ]
 [ 1.          1.          0.99215686 ...,  0.          0.          0.        ]]
[[[  0   0   0] #img
  [  0   0   0]
  [  0   0   0]
  ..., 
  [  0   0   0] #img
  [  0   0   0]
  [  0   0   0]]

 [[  0   0   0] #img
  [  1   1   1]
  [  4   4   4]
  ..., 
  [  0   0   0] #img
  [  0   0   0]
  [  0   0   0]]

 [[  0   0   0] #img
  [  3   3   3]
  [ 15  15  15]
  ..., 
  [  0   0   0] #img
  [  0   0   0]
  [  0   0   0]]

 ..., 
 [[255 255 255] #img
  [254 254 254]
  [245 245 245]
  ..., 
  [  0   0   0] #img
  [  0   0   0]
  [  0   0   0]]

 [[255 255 255] #img
  [255 255 255]
  [250 250 250]
  ..., 
  [  0   0   0] #img
  [  0   0   0]
  [  0   0   0]]

 [[255 255 255]
  [255 255 255]
  [253 253 253]
  ..., 
  [  0   0   0]
  [  0   0   0]
  [  0   0   0]]]
[] #img_blobs

person Matthew Winfield    schedule 28.04.2015    source источник
comment
Не могли бы вы опубликовать max(img), min(img), img.dtype ?   -  person Zero    schedule 28.04.2015
comment
попробуйте создать np.array(img) перед rgb2gray() и распечатайте то, что у вас есть до и после (как Мэтью предлагает проверить форму и dtype) Попробуйте создать свои собственные небольшие тестовые массивы (8,8,3) astype(np .uint8) и т. д., чтобы убедиться, что что-то конкретное не останавливает его работу.   -  person paddyg    schedule 28.04.2015
comment
max(img), min(img) и img.dtype вызывают ошибки при запуске (тип изображения не является итерируемым, а dtype не является атрибутом img). Создание массива до rgb2gray() ничего не делает, но в отредактированной части сообщение показывает тестовые распечатки для (по порядку) img_gray, img, затем img_blobs (обнаруженные капли).   -  person Matthew Winfield    schedule 29.04.2015
comment
После прочтения распечаток кажется, что img_gray содержит ЧТО-ТО, но при использовании PIL.Image.fromarray(img_gray).show() я просто получаю черное изображение.   -  person Matthew Winfield    schedule 29.04.2015


Ответы (1)


Это будет читать файлы изображений (с использованием PIL) в scimage:

from skimage import io
img = io.imread("./path/to/image.png")

Поскольку вы уже прочитали изображения и хотели сами преобразовать данные, вы можете посмотреть, как это сделали авторы плагина, здесь: https://github.com/scikit-image/scikit-image/blob/master/skimage/io/_plugins/pil_plugin.py

person keithpjolley    schedule 12.02.2018