У меня есть изображение с мелкими предметами. Я рассчитал их площади, используя

area=regionprops(CC,'Area');

CC - это связанные компоненты, возвращаемые

CC=bwconncomp(BW);

Теперь мне нужно удалить объекты с площадью меньше 15 (установить их на ноль в исходном изображении BW).

Я знаю, что могу сделать это более простыми способами, отличными от regionprops, но мне нужно сделать это из выходных данных regionprops, потому что я извлечу другие свойства, которые поддерживаются {{X2 }} и снова отфильтруйте изображение в соответствии с этими извлеченными функциями аналогичным образом. Кто-нибудь может мне помочь с этой задачей?

2
AAA 25 Фев 2018 в 22:47

1 ответ

Лучший ответ

После двух команд, которые вы показываете,

CC=bwconncomp(BW);
area=regionprops(CC,'Area');

area - это структурный массив, где area(ii).Area - это область для объекта ii. Это соответствует компоненту связности, заданному CC.PixelIdxList{ii}.

Индексы с небольшой площадью можно найти по

I = find([area.Area] < 15);

Затем,

CC.PixelIdxList{I}

Дает разделенный запятыми список векторов с индексами пикселей. Вы можете объединить эти векторы в один вектор, используя cat:

pixels = cat(1,CC.PixelIdxList{I});

Теперь все, что осталось, - это установить эти пиксели на 0 во входном изображении:

BW(pixels) = 0;
1
Cris Luengo 26 Фев 2018 в 07:41