Matlab中多尺度形态学图像简化

大家好,我正在尝试使用Dorini的论文“Multiscale Morphological Image Simplification”的SMMT操作符。 由于该页面无法在未订阅的情况下访问,因此我在此发布相关详细信息:

在这里输入图像描述在这里输入图像描述在这里输入图像描述

请注意,我将相关文章的部分内容张贴为图片。 我不知道如何在stackoverflow.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免费访问


这些实现在全球范围内看起来不错,尽管如此,

if ((phi1(j,k)-II(j,k))<(II(j,k)-phi2(j,k)))
                II(j,k) = phi1(j,k);

我想在这里你想在比较phi1I时改变变量II的图像值:

if ((phi1(j,k)-I(j,k))<(I(j,k)-phi2(j,k)))
                II(j,k) = phi1(j,k);
链接地址: http://www.djcxy.com/p/67291.html

上一篇: Multiscale Morphological Image Simplification in Matlab

下一篇: how to make a custom legend