Я пытаюсь извлечь край из изображения. Я использовал следующий алгоритм. Введено изображение (e11), которое представляет собой изображение в полутонах размером 512 * 512.Ошибка при вычислении края изображения
- Найти морфологический градиент входного изображения (gradientim)
- Найти негативное изображение градиента изображения (negativeim)
- Subtract исходное изображение из закрытого изображения, используя снизу шлема преобразования (bottomhatim).
- Вычислить средний пиксель входного изображения (AVG)
- Найти двоичное изображение на основе AVG, чтобы сгладить изображение.
- Найти самый большой регион связи для поиска больших объектов (CC).
- Вычесть наибольшую область от сглаженного изображения (края).
MATLAB код, я написан приведен ниже
e11 = imread("lena.jpg");
e11= double(e11);
gradientim = imdilate(e11,se) - imerode(e11,se);
negativeim = imcomplement(gradientim);
bottomhatim = imclose(negativeim,se) - e11 ;
AVG = mean2(e11);
%-------Computing binary image--------
for i=1:(height)
for j=1:(width)
if(AVG > bottomhatim(i,j,:))
bottomhatim(i,j,:) = 1;
else
bottomhatim(i,j,:) = 0;
end
end
end
CC = bwconncomp(bottomhatim);
edge = bottomhatim - CC;
Делая шаг 7, Поскольку тип подключенного компонента (CC) является 'структура', I» m получает ошибку следующим образом:
«Неопределенная функция« минус »для входных аргументов типа« struct ».
? Функция "bwconncomp" может использоваться как самая большая связанная область? Есть ли альтернативная функция для этого? Пожалуйста, помогите мне исправить этот код. Спасибо заранее.
Сво работает правильно now.Thanks – Celine