MATLAB数字图像处理的应用
程序员文章站
2022-04-01 10:25:52
...
一、利用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('分割后图像');
推荐阅读
-
javascript - 用户发帖应用开发中,用户异步上传了图片,但最终帖子没发布,那么上传的图不就没有用了吗怎么处理这种情况?
-
ios蓝牙开发学习笔记(四)ios蓝牙应用的后台处理
-
站内信/消息功能的小型推送应用,用轮询还是长轮询?该如何处理
-
c#数字图像处理的3种方法示例分享
-
Javaweb应用使用限流处理大量的并发请求详解
-
c#使用微信接口开发微信门户应用中微信消息的处理和应答
-
Python利用pandas处理Excel数据的应用详解
-
在WinForm应用程序中快速实现多语言的处理的方法
-
iOS应用中使用AsyncSocket库处理Socket通信的用法讲解
-
在WinForm应用程序中快速实现多语言的处理的方法