После того, как вы запустите это:
% Segment nodules
BW = im2bw(segM, 0.55);
У вас есть узелки на черно-белом изображении. Теперь, чтобы отфильтровать узлы по размеру, вы можете подогнать эллипс к каждому узлу и проверить длину главной оси. Для этого вы можете использовать regionprops и запросить MajorAxisLength
.
Реквизиты региона обнаружат все группы пикселей (связанные компоненты) вашего бинарного изображения и вернут информацию о каждой группе в массиве структур.
Попробуйте назвать это так:
nodules = regionprops(BW, 'MajorAxisLength');
Он вернет массив структур nodules
, где вы можете получить доступ к каждому узлу следующим образом:
>> nodules(1)
ans =
MajorAxisLength: 4.6188
>> nodules(1).MajorAxisLength
ans =
4.6188
Это означает, что первый узелок имеет основную длину 4,6188 пикселей. Вы можете преобразовать этот размер в миллиметры, если знаете пропорцию вашего изображения к реальным данным. Например, предположим, что вы знаете, что в реальном мире каждый пиксель равен 0,4 мм. Затем вам просто нужно умножить это значение на MajorAxisLength
, чтобы получить значение в миллиметрах (и отфильтровать нужные узелки).
Также было бы полезно знать, где находится узелок, который вы только что отфильтровали. Вы можете запросить у regionprops
дополнительные данные, например Centroid
или BoundingBox
. Возможно, также стоит взглянуть на MinorAxisLength
, чтобы избежать обнаружения «линий» как узелков, или на значение Eccentricity
, которое говорит вам, «насколько похожа на круг» группа пикселей. Дополнительные сведения см. в документации.
Также взгляните на этот другой вопрос, это может быть полезно:
person
Rafael Monteiro
schedule
19.04.2014
segmented Lung
с узелками в легких, обведенными каким-либо цветом? - person Divakar   schedule 19.04.2014