У меня есть несколько предложений для вас, хотя это трудно проверить без самих необработанных изображений. Попробуйте один из них и посмотрите, получится ли у вас что-то значимое.
Способ №1. Используйте imfill
, а затем imopen
У меня есть одно предложение: использовать imfill
для заполнения любых пробелов. на изображении, за которым следует вызов imopen
для выполнения морфологического открытия (т. е. эрозии с последующим расширением, на что ссылается пользователь Пол Р.). При открытии (через 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
person
rayryeng
schedule
11.03.2016