失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > MATLAB数字图像处理的应用

MATLAB数字图像处理的应用

时间:2021-04-06 06:37:54

相关推荐

MATLAB数字图像处理的应用

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

%%用matlab生成LOG图像x=-2:0.06:2y=-2:0.06:2sigma=0.6y=y';for i=1:(4/0.06+1)xx(i,:)=x;yy(:,i)=y;endr=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:kquadrgn=b(:, :,i);if size(quadrgn,1)<=mindimv(i)=false;continue;endflag=feval(fun,quadrgn);if flagv(i)=true;endendend

%%需调用的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 flagg(x1ow:xhigh,ylow:yhigh)=1;marker(x1ow,ylow)=1;endendendendg=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('分割后图像');

如果觉得《MATLAB数字图像处理的应用》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。