收藏 分销(赏)

图像处理上机作业题.doc

上传人:仙人****88 文档编号:8890115 上传时间:2025-03-06 格式:DOC 页数:15 大小:1.21MB 下载积分:10 金币
下载 相关 举报
图像处理上机作业题.doc_第1页
第1页 / 共15页
图像处理上机作业题.doc_第2页
第2页 / 共15页


点击查看更多>>
资源描述
2、用Matlab语言编写直方图规定化程序 clc; I=imread('tire.tif'); J=histeq(I,32); [counts,x]=imhist(J); Q=imread('eight.tif'); figure; imshow(Q); figure; imhist(Q); M=histeq(Q,counts); figure; imshow(M); figure; imhist(M); 3、编写程序实现半邻域选择平均法进行空间域图像平滑的程序。 clear;clc; I=imread('pout.tif'); J=imnoise(I,'salt & pepper',0.02); K=filter2(fspecial('average',3),J)/255; subplot(131),imshow(I); subplot(132),imshow(J); subplot(133),imshow(K); 4、针对某种平滑方法,比较对高斯噪声,椒盐噪声和乘法性噪声的去噪效果 %% % 使用二维中值滤波对噪声进行处理 clc; %% %原始图像以及加上噪声后的图像 [I,map]=imread('pout.tif'); imshow(I,map); noisy1=imnoise(I , 'gaussian' , 0.05);%加入0.05的高斯白噪声 noisy2=imnoise(I , 'salt & pepper' , 0.05);%加入0.05的椒盐噪声 noisy3=imnoise(I , 'speckle' , 0.05);%加入0.05的乘法性噪声 figure; imshow(noisy1,map); figure; imshow(noisy2,map); figure; imshow(noisy3,map); %% %二维窗口越大图像细节丢失越多 % 3*3窗口的二维中值滤波 hood=3; filtered1=medfilt2(noisy1,[hood hood]); filtered2=medfilt2(noisy2,[hood hood]); filtered3=medfilt2(noisy3,[hood hood]); figure; imshow(filtered1); figure; imshow(filtered2); figure; imshow(filtered3); 原图像 加噪声后 去噪声后 5、编写掩模匹配法实现锐化的程序,对同一图像比较Robison,Prewitt及Kirsch模板的锐化效果 %% % RobisonÄ£°åÑÚģƥÅä·¨ clc; [I,map]=imread('pout.tif'); imshow(I,map); [M N]=size(I); %% myfilt1=[ 1 2 1; 0 0 0; -1 -2 -1]; filtered1=filter2(myfilt1,I); %% myfilt2=[ 2 1 0; 1 0 -1; 0 -1 -2]; filtered2=filter2(myfilt2,I); %% myfilt3=[ 1 0 -1; 2 0 -2; 1 0 -1]; filtered3=filter2(myfilt3,I); %% myfilt4=[ 0 -1 -2; 1 0 -1; 2 1 0]; filtered4=filter2(myfilt4,I); %% myfilt5=[-1 -2 -1; 0 0 0; 1 2 1]; filtered5=filter2(myfilt5,I); %% myfilt6=[-2 -1 0; -1 0 -1; 0 1 2]; filtered6=filter2(myfilt6,I); %% myfilt7=[-1 0 1; -2 0 2; -1 0 1]; filtered7=filter2(myfilt7,I); %% myfilt8=[ 0 1 2; -1 0 1; -2 -1 0]; filtered8=filter2(myfilt8,I); %% for i=1:M for j=1:N x=[filtered1(i,j),filtered2(i,j),filtered3(i,j),filtered4(i,j),... filtered5(i,j),filtered6(i,j),filtered7(i,j),filtered8(i,j)]; OUT(i,j)=max(x); end end figure; imshow(OUT,map); % PrewittÈñ»¯µÄ³ÌÐò clc; %% [I,map]=imread('pout.tif'); imshow(I,map); [M N]=size(I); %% myfilt1=[1 1 1;1 -2 1;-1 -1 -1]; filtered1=filter2(myfilt1,I); myfilt2=[1 1 1;1 -2 -1;1 -1 -1]; filtered2=filter2(myfilt2,I); myfilt3=[1 1 -1;1 -2 -2;1 1 -1]; filtered3=filter2(myfilt3,I); myfilt4=[1 -1 1;1 -2 -1;1 1 1]; filtered4=filter2(myfilt4,I); myfilt5=[-1 -1 -1;1 -2 1;1 1 1]; filtered5=filter2(myfilt5,I); myfilt6=[-1 -1 1;-1 -2 1;1 1 1]; filtered6=filter2(myfilt6,I); myfilt7=[-1 0 1;-1 -2 1;-1 1 1]; filtered7=filter2(myfilt7,I); myfilt8=[1 1 1;-1 -2 1;-1 -1 1]; filtered8=filter2(myfilt8,I); %% for i=1:M for j=1:N x=[filtered1(i,j),filtered2(i,j),filtered3(i,j),filtered4(i,j),... filtered5(i,j),filtered6(i,j),filtered7(i,j),filtered8(i,j)]; OUT(i,j)=max(x); end end %% figure; imshow(OUT,map); %% % KirschÄ£°åÑÚģƥÅä·¨ clc; [I,map]=imread('pout.tif'); imshow(I,map); [M N]=size(I); %% myfilt1=[5 5 5;-3 0 -3;-3 -3 -3]; filtered1=filter2(myfilt1,I); myfilt2=[5 5 -3;5 0 -3;-3 -3 -3]; filtered2=filter2(myfilt2,I); myfilt3=[5 -3 -3;5 0 -3;5 -3 -3]; filtered3=filter2(myfilt3,I); myfilt4=[-3 -3 -3;5 0 -3;5 5 -3]; filtered4=filter2(myfilt4,I); myfilt5=[-3 -3 -3;-3 0 -3;5 5 5]; filtered5=filter2(myfilt5,I); myfilt6=[-3 -3 -3;-3 0 5;-3 5 5]; filtered6=filter2(myfilt6,I); myfilt7=[-3 -3 5;-3 0 5;-3 -3 5]; filtered7=filter2(myfilt7,I); myfilt8=[-3 5 5;-3 0 5;-3 -3 3]; filtered8=filter2(myfilt8,I); %% for i=1:M for j=1:N x=[filtered1(i,j),filtered2(i,j),filtered3(i,j),filtered4(i,j),... filtered5(i,j),filtered6(i,j),filtered7(i,j),filtered8(i,j)]; OUT(i,j)=max(x); end end %% figure; imshow(OUT,map); 6、用Matlab编写出图像高通滤波实现锐化的程序,并通过实例进行各种高通滤波器性能的比较 %¸ßͨÂ˲¨ clc; [I,map]=imread('pout.tif'); figure; imshow(I,map); noisy=imnoise(I,'gaussian', 0.05); figure; imshow(noisy,map); [M N]=size(I); F=fft2(double(noisy)); fftshift(F); Dcut=100; D0=150; D1=250; for u=1:M for v=1:N D(u,v)=sqrt(u^2+v^2); BUTTERH(u,v)=1/(1+(sqrt(2)-1)*(Dcut/D(u,v))^2); EXPOTH(u,v)=exp(log(1/sqrt(2))*(Dcut/D(u,v))^2); if D(u,v)<=200 IDEALH(u,v)=1; else IDEALH(u,v)=0; end if D(u,v)<=D1 TRAPEH(u,v)=0; elseif D(u,v)<=D0; TRAPEH(u,v)=(D(u,v)-D1)/(D0-D1); else TRAPEH(u,v)=1; end end end IDEALG=IDEALH.*F; IDEALfiltered=ifft2(IDEALG); BUTTERG=BUTTERH.*F; BUTTERfiltered=ifft2(BUTTERG); EXPOTG=EXPLOTH.*F; EXPOTfiltered=ifft2(EXPOTG); TRAPEG=TRAPEH.*F; TRAPEfiltered=ifft2(TRAPEG); figure; imshow(IDEALfiltered,map) figure; imshow(BUTTERfiltered,map) figure; imshow(EXPOTfiltered,map) figure; imshow(TRAPEfiltered,map) 1、Matlab编程实现点模板,线模板检测图像区域 应用点模板的初始灰度级分布如下图,输出点模板匹配后的灰度分布: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 4 4 4 4 4 1 1 1 1 1 1 1 4 4 4 4 4 4 1 1 1 1 1 1 1 4 4 4 4 4 1 1 1 1 1 1 1 4 4 4 4 1 1 1 1 1 1 1 1 1 4 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 data=[1,1,1,1,1,1,1,1,1,1,1,1; 1,1,1,1,1,4,1,1,1,1,1,1; 1,1,1,4,4,4,4,4,1,1,1,1; 1,1,1,4,4,4,4,4,4,1,1,1; 1,1,1,1,4,4,4,4,4,1,1,1; 1,1,1,1,4,4,4,4,1,1,1,1; 1,1,1,1,1,4,4,1,1,1,1,1,; 1,1,1,1,1,1,1,1,1,1,1,1]; [n,m]=size(data); disp('初始灰度级分布'); data dm=ones(n,m); myfit=[-1 -1 -1;-1 8 -1;-1 -1 -1]; for i=1:n-2 for j=1:m-2 dm(i+1,j+1)=sum(sum(myfit.*data(i:i+2,j:j+2))); end end disp('点模板匹配后的灰度分布'); [n,m]=find(dm~=1); data(n,m)=dm(n,m); data(data<0)=0; data 初始灰度级分布 data = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 4 4 4 4 4 1 1 1 1 1 1 1 4 4 4 4 4 4 1 1 1 1 1 1 1 4 4 4 4 4 1 1 1 1 1 1 1 4 4 4 4 1 1 1 1 1 1 1 1 1 4 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 点模板匹配后的灰度分布 data = 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 15 0 0 0 0 0 1 1 0 0 15 6 6 6 12 0 0 0 1 1 0 0 12 3 0 0 3 12 0 0 1 1 0 0 0 6 0 0 3 12 0 0 1 1 0 0 0 12 3 3 9 0 0 0 1 1 0 0 0 0 12 12 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 应用线模板的初始灰度级分布如下图,输出线模板匹配后的灰度分布: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 2 2 1 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Grey=textread ('D:\我的文档\桌面\初始图像灰度分布.txt'); [n,m]=size (Grey); k=max ([n,m])/min([n,m]); Lmould_ 00=[-1 -1 -1;2 2 2;-1 -1 -1]; Lmould_ 45=[-1 -1 2;-1 2 -1;2 -1 -1]; Lmould_ 90=[-1 2 -1;-1 2 -1;-1 2 -1]; Lmould_ 135=[2 -1 -1;-1 2 -1;-1 -1 2]; Grey_Leaf=ones (n,n,k); Grey_temp=ones (n,n); account=1; for t=1:k Grey_Leaf (:,:,t)=Grey (:,account:account+n-1); account=account+n; end for t=1:k for i=1:n-2 for j=1:n-2 a1=sum (sum (Lmould_ 00.*Grey_Leaf (i:i+2,j:j+2,t))); a2=sum (sum (Lmould_ 45.*Grey_Leaf (i:i+2,j:j+2,t))); a3=sum (sum (Lmould_ 90.*Grey_Leaf (i:i+2,j:j+2,t))); a4=sum (sum (Lmould_ 135.*Grey_Leaf (i:i+2,j:j+2,t))); Grey_temp (i+1,j+1)=max ([a1,a2,a3,a4]); end end [n1,m1]=find (Grey_temp~=1); Grey_Leaf (n1,m1,t)=Grey_temp (n1,m1); Grey_temp (n1,m1)=1; end disp ('初始灰度级分布'); Grey_Leaf disp ('线模板边缘检测结果'); Grey_Leaf 2、用Mathematical求解一次平面拟合中a,b,c三个参量。即给出书中P115公式4.1.31, 4.1.32, 4.1.33的求解过程。 ClearAll["Global`*"] g[x_,y_]:=a x+b y+c; f[x_,y_]:=M[x,y]; M[x,y]:=A[[x;;y]](*矩阵元素*) G[x_,y_]:=(g[x,y]-f[x,y])^2; \[Epsilon]=G[m,n]+G[m+1,n]+G[m,n+1]+G[m+1,n+1]; DJ=Solve[D[\[Epsilon],a]==0&&D[\[Epsilon],b]==0&&D[\[Epsilon],c]==0,{a,b,c}]; aa=DJ[[1,1,2]] bb=DJ[[1,2,2]] cc=DJ[[1,3,2]] 结果: a= 1/2 (-M[m,n]-M[m,1+n]+M[1+m,n]+M[1+m,1+n]) b= 1/2 (-M[m,n]+M[m,1+n]-M[1+m,n]+M[1+m,1+n]) c= 1/4 (3 M[m,n]+2 m M[m,n]+2 n M[m,n]+M[m,1+n]+2 m M[m,1+n]-2 n M[m,1+n]+M[1+m,n]-2 m M[1+m,n]+2 n M[1+m,n]-M[1+m,1+n]-2 m M[1+m,1+n]-2 n M[1+m,1+n]) 3、编程实现灰度差判别准则的合并法形成区域的过程。 假设原图像矩阵为 2 1 1 2 1 1 1 5 4 5 5 1 2 5 8 9 6 2 1 6 9 8 6 1 1 6 8 9 8 1 1 2 1 1 2 1 设T=2 编程实现其最终区域分割的结果,基本要求:分割出A区域。高级要求:A,B,C三个区域全部分割出来 data=[ 2 1 1 2 1 1 1 5 4 5 5 1 2 5 8 9 6 2 1 6 9 8 6 1 1 6 8 9 8 1 1 2 1 1 2 1]; global data_sign; global T; global count; global Sum; [N,M]=size(data); data_sign=zeros(N,M); T=input('please input the threshold T=='); disp('-------ÊäÈë»ù±¾µ¥ÔªµÄ×ø±ê--------'); n=input('ºá×ø±ê n=='); m=input('×Ý×ø±ê m=='); Area_Number=1; data_temp=(data_sign==0); flag=sum(data_temp(:)); while flag Sum=data(n,m); %ÓÃÓÚÀÛ¼ÓÇ󯽾ùÖµ Average=data(n,m); count=1; for i=1:N for j=1:M if(data_sign(i,j)==0||data_sign(i,j)==Area_Number) Average=Auto_search(data,i,j,Area_Number,Average); end end end Area_Number=Area_Number+1; data_temp=(data_sign==0); flag=sum(data_temp(:)); [n1,m1]=find(data_sign==0); n=min(n1); m=m1(min(find(n1==n))); end for i=1:Area_Number-1 data_sign(find(data_sign==i))=64+i; end data_sign=setstr(data_sign)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服