Мультимасштабное упрощение морфологического изображения в Matlab
Привет всем, в настоящее время я пытаюсь использовать оператор SMMT из статьи "Многоуровневое морфологическое упрощение изображения" в Дорини. Поскольку страница не может быть доступна без подписки, я публикую соответствующие подробности здесь:
Обратите внимание, что я публикую части соответствующей статьи в виде изображений. Я не знаю, как писать уравнения в stackru.com. Я хочу использовать этот оператор SMMT в качестве предварительного этапа обработки изображения. Код, который я записал, приведен ниже:
clc;clear all;close all;
tic
I=imread('handwritten.jpg');
I=I(:,:,1);
dim=11 ;
HEIGHT=zeros(dim,dim);
sigma=1/10;
for i=-floor(dim/2):floor(dim/2)
for j=-floor(dim/2):floor(dim/2)
HEIGHT(i+ceil(dim/2),j+ceil(dim/2))=-(1/sigma).*max(abs(i),abs(j));
end
end
NHOOD=ones(dim,dim);
se = strel('arbitrary',NHOOD,HEIGHT);
se
IM1 = imdilate(I,se,'same');
IM2 = imerode(I,se,'same');
figure;
subplot(2,2,1),imshow(I)
subplot(2,2,2),imshow(IM1)
subplot(2,2,3),imshow(IM2)
II = I;
for i=1:1
phi1 = imdilate(II,se,'same');
phi2 = imerode(II,se,'same');
for j=1:size(I,1)
for k=1:size(I,2)
if ((phi1(j,k)-II(j,k))<(II(j,k)-phi2(j,k)))
II(j,k) = phi1(j,k);
elseif ((phi1(j,k)-II(j,k))==(II(j,k)-phi2(j,k)))
II(j,k) = II(j,k);
else
II(j,k) = phi1(j,k);
end
end
end
end
IM3=II;
subplot(2,2,4),imagesc(IM3,[0 255]);colormap('gray');axis off;
toc
Результат кода должен быть примерно таким: (снова из бумаги): ,
Мой результат таков: ,
Моя реализация правильная?? Это может быть улучшено дальше? Любые предложения будут полезны. Заранее спасибо за вашу помощь, ребята! Для более подробной информации обратитесь к Dorini Free Access
1 ответ
Реализации выглядят хорошо во всем мире, хотя небольшое пояснение:
if ((phi1(j,k)-II(j,k))<(II(j,k)-phi2(j,k)))
II(j,k) = phi1(j,k);
Я думаю, что здесь вы хотели бы изменить значение изображения в переменной II
сравнивая phi1
а также I
:
if ((phi1(j,k)-I(j,k))<(I(j,k)-phi2(j,k)))
II(j,k) = phi1(j,k);