2013-07-03 5 views
0
import numpy as np 
import scipy 
import pylab 
import pymorph 
import mahotas 
from scipy import ndimage 

image = mahotas.imread('img.tiff') 

pylab.imshow(image) 
pylab.show() 

Я хочу выбрать (пороговые) коричневые пиксели (сосуды) на медицинском изображении и вычислить область, которую они представляют. Как я могу это сделать в Python, как в Matlab или C++? Есть ли хорошие примеры, которые я не мог найти?Как выбрать коричневые пиксели на .tiff изображении и вычислить область или их количество в Python?

Спасибо

+0

Что вы толпите "коричневый цвет"? Там нет коричневого цветного плана, на котором вы можете установить порог; вам нужно описать его с точки зрения RGB (или CMYK или другого разумного цветового пространства). Если вы можете написать правило только в терминах функции 'is_brown (r, g, b)' или даже написать правило в терминах Matlab или C++, вопрос должен отвечать. – abarnert

ответ

0

Я не знаю, что ваше правило для «коричневый» есть, но по-видимому, это что-то вроде этого (в цветовом RGB):

0.5 <= r < 0.75 and 0.25 <= g < 0.375 and b < 0.1 

ndimage просто 3D массив пикселей, где третье измерение является цветовой плоскостью. Другими словами, для RGBA изображения, image[0, 0, 0] является значение красного для пикселя (0, 0), image[0, 0, 1] является зеленый значение пикселя (0, 0) и т.д.

Итак, вы получили массив пикселей. Вы хотите подсчитать все пиксели, соответствующие этому правилу. Для этого вам не нужны какие-либо функции, связанные с изображением. Просто используйте свой любимый механизм numpy для применения функции ко всем плоскостям в каждой строке и столбце, чтобы получить себе массив 2x2 bools. Например:

browns = ((image[:,:,0] >= 0.50) & (image[:,:,0] < 0.75) & 
      (image[:,:,1] >= 0.25) & (image[:,:,1] < 0.375) & 
      (image[:,:,2] < 0.1))