MATLAB数字图像处理的应用

一、利用MATLAB生成LOG算子图像

%%用matlab生成LOG图像
x=-2:0.06:2
y=-2:0.06:2
sigma=0.6
y=y';
for i=1:(4/0.06+1)
    xx(i,:)=x;
    yy(:,i)=y;
end
r=1/(2*pi*sigma^4)*((xx.^2+yy.^2)/(sigma^2)-2).*exp(-(xx.^2+yy.^2)/(sigma^2));
colormap(jet(16));
mesh (xx,yy,r);
figure;

二、用分水岭算法分割图像

%%用分水岭算法分割图像
I=imread('cdl.png');
f=rgb2gray(I);
subplot(2,2,1);
imshow(f);
title('(a)原始图像');
subplot(2,2,2);
f=double(f);
hv=fspecial('prewitt');
hh=hv.';
gv=abs(imfilter(f,hv,'replicate'));
gh=abs(imfilter(f,hh,'replicate'));
g=sqrt(gv.^2+gh.^2);
subplot(2,2,2);
L=watershed(g);
wr=L==0;
imshow(wr);
title('(b)分水岭');
f(wr)=255;
subplot(2,2,3);
imshow(uint8(f));
title('(c)分割结果');
rm=imregionalmin(g);
subplot(2,2,4);
imshow(rm);
title('(d)局部极小值');

三、用区域分裂合并法分割图像

%%需调用的split函数
function v=split(b,mindim,fun)
k=size(b,3);
v(1:k)=false;
for i=1:k
    quadrgn=b(:, :,i);
    if size(quadrgn,1)<=mindim
        v(i)=false;
        continue;
    end
    flag=feval(fun,quadrgn);
    if flag
        v(i)=true;
    end
end
end
%%需调用的predicate函数
function flag=predicate(region)
sd=std2(region);
m=mean2(region);
flag= (sd>5) & (m>0) & (m<200);
end
%%用区域分裂合并法分割图像
I=imread('cdl.png');
f=rgb2gray(I);
q=2^nextpow2(max(size(f)));
[m n]=size(f);
f=padarray(f,[q-m,q-n],'post');
mindim=2;
s=qtdecomp(f,@split,mindim,@predicate);
lmax=full(max(s(:)));
g=zeros(size(f));
marker=zeros(size(f));
for k=1:lmax
    [vals,r,c]=qtgetblk(f,s,k);
    if ~isempty(vals)
        for i=1:length(r)
            x1ow=r(i);
            ylow=c(i);
            xhigh=x1ow+k-1;
            yhigh=ylow+k-1;
            region=f(x1ow:xhigh,ylow:yhigh);
            flag=feval(@predicate,region);
            if flag
                g(x1ow:xhigh,ylow:yhigh)=1;
                marker(x1ow,ylow)=1;
            end
        end
    end
end
g=bwlabel(imreconstruct(marker,g));
g=g(1:m,1:n);
f=f(1:m,1:n);
subplot(1,2,1),imshow(f),title('原始图像');
subplot(1,2,2),imshow(g),title('分割后图像');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值