У меня есть несколько предложений для вас, хотя это трудно проверить без самих исходных изображений. Попробуйте один из них и посмотрите, есть ли у вас что-то значимое.
Метод # 1 - Использование imfill
с последующим imopen
одно предложение у меня есть, чтобы использовать imfill
, чтобы заполнить в любом из отверстий в изображении, а затем с помощью вызова imopen
для выполнения морфологического открытия (т.е. эрозия, за которой следует расширение, как это указано пользователем Paul R). Открытие (через imopen
) удаляет любые небольшие изолированные области на изображении с учетом желаемого структурирующего элемента.
Если предположить, что изображение хранится в переменной BW
, что-то подобное может работать:
BW2 = imfill(BW, 'holes');
se = strel('square', 5);
BW2 = imopen(BW2, se);
BW2
финальное изображение. Метод
# 2 - Использование bwareaopen
с последующим imdilate
Я также могу предложить использовать функцию bwareaopen
, которая удаляет объекты, участки попадают под определенную сумму. Попробуйте что-то маленькое, как область 80 пикселей, чтобы удалить эту выделенную области, а затем использовать расширение команды (imdilate
), который упоминается в сообщении:
BW2 = bwareaopen(BW, 80);
%// Place your code for dilation here using BW2
Метод # 3 - Откройте изображение с imopen
затем выполнить imdilate
Последним, что я могу предложить, чтобы открыть изображение первым, чтобы удалить паразитные небольшие участки пиксельных, а затем выполнить свой код дилатации, как вы предложили:
se = strel('square', 5);
BW2 = imopen(BW, se);
%// Place your code for dilation here using BW2
Поскольку вы занимаетесь обработкой изображений, трудно представить это без фактического изображения. Ваш пост заставляет его звучать так, как будто вы ссылаетесь на изображение, но его нет в вашем сообщении. Не могли бы вы отредактировать свой пост? – rayryeng
Можете ли вы загрузить изображение (a) отдельно? – rayryeng
Вы, вероятно, хотите сначала подорвать, а затем расшириться. –