图像处理实验报告_第1页
图像处理实验报告_第2页
图像处理实验报告_第3页
图像处理实验报告_第4页
图像处理实验报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实习记录1常用MATLAB图像处理命令一、实验目的

1、熟悉并掌握MATLAB工具的使用;2、实现图像的读取、显示、代数运算和简单变换。二、实验环境MATLAB2012a版本、WIN7计算机三、常用函数读写图像文件1imreadimread函数用于读入各种图像文件,如:a=imread('e:\w01.tif')2imwriteimwrite函数用于写入图像文件,如:imwrite(a,'e:\w02.tif',’tif’)3imfinfoimfinfo函数用于读取图像文件的有关信息,如:imfinfo('e:\w01.tif')图像的显示1imageimage函数是MATLAB提供的最原始的图像显示函数,如:a=[1,2,3,4;4,5,6,7;8,9,10,11,12];image(a);2imshowimshow函数用于图像文件的显示,如:i=imread('e:\w01.tif');imshow(i);title(‘原图像’)%加上图像标题3colorbarcolorbar函数用显示图像的颜色条,如:i=imread('e:\w01.tif');imshow(i);colorbar;4figurefigure函数用于设定图像显示窗口,如:figure(1);/figure(2);5subplot把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。Subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形。6plot绘制二维图形plot(y)Plot(x,y)xy可以是向量、矩阵。图像类型转换1rgb2gray把真彩图像转换为灰度图像i=rgb2gray(j)2im2bw通过阈值化方法把图像转换为二值图像I=im2bw(j,level)Level表示灰度阈值,取值范围0~1(即0.n),表示阈值取自原图像灰度范围的n%3imresize改变图像的大小I=imresize(j,[mn])将图像j大小调整为m行n列图像运算1imadd两幅图像相加,要求同样大小,同种数据类型Z=imadd(x,y)表示图像x+y2imsubstract两幅图像相减,要求同样大小,同种数据类型Z=imsubtract(x,y)表示图像x-y3immultiplyZ=immultiply(x,y)表示图像x*y4imdivideZ=imdivide(x,y)表示图像x/y四、心得体会 学习了matlab中基本的图像处理命令,为以后图像处理打下了较好的基础。2、对图像灰度分布的分析和直方图均衡1、实验目的 (1)理解灰度分布直方图、累积灰度分布函数的概念,图像二值化的概念。 (2)学习用matlab编程计算图像直方图,累积分布函数并进行初步分析。 (3)深入理解灰度分布直方图的意义,并根据灰度直方图进行简单图像增强——直方图均衡。 (4)改进直方图均衡算法,进行直方图分段均衡并进行分析。2、编程实现closeall;clear;clc;%%读入图像并转换为灰度图,显示I=imread('E:\photos\109NIKON\e1.JPG');figure(1);imshow(I);J=rgb2gray(I);figure(2);imshow(J);one_or_zero=(J>128);figure(3)imshow(one_or_zero)%%对原始灰度图的分析[m,n]=size(J);%图片的维数note=zeros(1,256);%统计对应某灰度值图像点数fori=1:mforj=1:nnote(J(i,j)+1)=note(J(i,j)+1)+1;%256色是不是0—255?endendfigure(4)stem(note);%灰度分布直方图(imhist函数可实现)sum_note=zeros(1,256);sume_note(1)=note(1);fori=2:256sum_note(i)=sum_note(i-1)+note(i);endfigure(5)plot(sum_note)%累积分布图axis([02560m*n])gridon%%%图像灰度映射关系的确定%fff=zeros(1,256);%fori=1:255%fff(i+1)=note(i+1)*255/m/n+fff(i);%核心!%%fff(i+1)=sum_note(i+1)*255/m/n;%运算量会稍小一些%end%floor(fff);%取整,貌似不取整也不会错%%fff虽然是一个变量,记录了相应的对应关系fff=fenduan();%%图像灰度均衡简单处理K=J;%新建图像fori=1:mforj=1:nK(i,j)=fff(J(i,j)+1);endendfigure(6)imshow(K)%%处理后的图像note_f=zeros(1,256);%%对新图像的灰度分析这块和前边的分析完全相同,以后用考虑变成函数调用fori=1:mforj=1:nnote_f(K(i,j)+1)=note_f(K(i,j)+1)+1;endendfigure(4);holdon;stem(note_f,'r');sum_note_f=zeros(1,256);sume_note_f(1)=note_f(1);fori=2:256sum_note_f(i)=sum_note_f(i-1)+note_f(i);endfigure(5);holdon;plot(sum_note_f,'r')axis([02560m*n])gridon%%分段均衡时调用的函数:%%图像灰度映射关系的确定functionfff=fenduan()fff=zeros(1,256);fff(1:100)=0;fori=100:150fff(i+1)=(i-100)*3;endfff(152:199)=150;fori=200:250fff(i)=(i-200)*2+150;endfori=251:256fff(i)=i;endfloor(fff);%取整,貌似不取整也不会错figure(8)plot(fff)%fff虽然是一个变量,记录了相应的对应关系f3.实验结果与分析3.1直方图均衡结果与分析(a)原始彩色图像(b)灰度图(c)图像二值化结果(128为界)(d)直方图均衡效果图图2.2灰度分布直方图,蓝色对应原始图像,红色对应均衡后图像图2.3均衡前后累积分布函数(未归一化)结论:直方图均衡后,灰度分布均匀,图像较处理前细节表现有所改善3.2直方图分段均衡(a)原始彩色图像(b)灰度图(c)图像二值化结果(128为界)(d)分段均衡效果图图2.5分段均衡映射曲线图2.6灰度分布直方图,蓝色对应原始图像,红色对应分段均衡后图像图2.7分段均衡前后累积分布函数(未归一化)说明与分析:(1)首先说明分段映射曲线的选取。从图像的灰度分布直方图中可以看到,灰度区间100-150以及200-250内像素点分布校多而其余区间基本没有像素点分布,所以要压缩像素分布点较少的区间,而在这两段进行扩张。100—150区间进行了3倍扩展,200-250区间进行了2倍扩展。当然这并不是最优的映射方案,但在处理此图像时有效果,能说明问题。由图像以及直方图、累积分布曲线可以看出图像有所改善。(3)分段法对于不同的图像需要采取不同的曲线。要注意到此方法的局限性。而直接的整个区间内的均衡不存在这个问题。(4)注意到有失真现象。而且原本灰度在0-100,以及150-200的像素点归为0和150,仔细观察会发现这使图像质量有所下降。当然,这是某些区间扩展所必然引起的。我们要做的,根本上来说就是寻求某种更好的折中方法。3QDHE算法的实现实验目的(1)、跟踪学术前沿,深入理解直方图均衡算法(2)、实现QDHE(QuadrantsDynamicHistogramEqualizationforContrastEnhancement,基于动态象限直方图均衡的对比度增强)算法。2、QDHE算法说明(1)、QDHE算法是基于HE、PHE、BBHE、DPHE改善算法。(2)、算法计算过程第一步:直方图分割,按照像素点分布直方图将所以像素点等量分布在四个区间中。第二步:ClippingProcessThereasonbehindtheclippingprocessistocontroltheenhancementrateofHEinordertoovercomeunnaturalandover-enhancementoftheprocessedimagetooccur.ClippingthresholdisreplacedbytheaverageofthenumberoftheintensityintheproposedQDHE.第三步:灰度区间重分配第四部:子区间内进行直方图均衡3、编程实现%Quadtantsdynamichistogramequalization动态象限对比度均衡实现代码closeall;clear;clc;L=256;%%读入图像并转换为灰度图,显示I=imread('E:\photos\study\IMG_20130903_211732340.JPG');J=rgb2gray(I);figure(20);imshow(J);[m,n]=size(J);%图片的维数%%图像灰度做预处理fori=1:mforj=1:nifJ(i,j)>100J(i,j)=round(100*rand(1,1));endendendfigure(2)imshow(J)%处理后的图像%%对原始灰度图的分析note=zeros(1,256);%统计对应某灰度值图像点数fori=1:mforj=1:nnote(J(i,j)+1)=note(J(i,j)+1)+1;%256色是不是0—255?endendfigure(3)stem(note);figure(4)imhist(J)%灰度分布直方图(imhist函数可实现)sum_note=zeros(1,256);sum_note(1)=note(1);fori=2:256sum_note(i)=sum_note(i-1)+note(i);endfigure(5)plot(sum_note)%累积分布图axis([02560m*n])gridon%%A区间划分%这里只实现均衡算法,累积分布函数在别处实现,额可是我还要求分割点,先copy一下吧[note,sum_note,m,n]=hist_mine(J);%区间分割点mm_huidu=[00000];fori=1:256ifnote(i)~=0;break;endendmm_huidu(1)=i-1;m1=m*n/4;m2=m*n*0.5;m3=m*n*0.75;fori=256:-1:1ifnote(i)~=0;break;endendmm_huidu(5)=i-1mm=[0,m1,m2,m3,m*n];%找到区间分割点对应的灰度值forj=2:4fori=2:256ifsum_note(i-1)<mm(j)&&sum_note(i)>=mm(j)mm_huidu(j)=i;break;endendend%分别以mm_huidu为分割点,分割点无论是归前还是归后都有误差,但不大,忽略之,归后%%BClippingprocess%我认为Tc是所有灰度值对应的像素(不为零)的的平均值,先确定阀值Tcsum_note_you=0;fori=mm_huidu(1):mm_huidu(5)sum_note_you=note(i+1)+sum_note_you;endTc=sum_note_you/(mm_huidu(5)-mm_huidu(1));%clippingfori=1:256ifnote(i)>Tcnote(i)=Tc;endend%%C灰度区间重分配%这里的理解可能有错误fori=1:4span(i)=mm_huidu(i+1)-mm_huidu(i);range(i)=(L-1)*span(i)/(mm_huidu(5)-mm_huidu(1));endI_start(1)=0;I_end(4)=255;fori=1:3I_start(i+1)=range(i)+I_start(i);endfori=1:4I_end(i)=I_start(i)+range(i);end%%D直方图均衡%在单个直方图内进行直方图均衡%%注意这个直方图均衡是在clipping之后的单个直方图中进行均衡,努力写个函数……%%像往常一样,先建立映射关系,这个要在四个区间内映射,复杂度稍高%fori=1:4%sum_note_sub(i,:)=zeros(1,mm_huidu(i+1)-mm_huidu(i))%end%sum_note_sub=[sum_note_subsum_note_subsum_note_subsum_note_sub];%fork=1:4%fori=mm_huidu(k):mm_huidu(k+1)%i=i+1;%sum_note_sub(k,i)=note(i)+sum_note_sub(k,i)%end%figure%plot(sume_note_sub(k))%end%%%forii=1:4%ifJ(i,j)>mm_huidu(i)&&J(i,j)<=mm_huidu(i+1)%break%end%end%sum_note(J(i,j))*range(ii)+I_start(ii)sum_clip=fendu_cdf(note,mm_huidu);fff=fenduan_yingshe(sum_clip,mm_huidu,I_start,I_end);%%图像灰度均衡简单处理K=J;%新建图像fori=1:mforj=1:nK(i,j)=fff(J(i,j)+1);endendfigure(6)imshow(K)%处理后的图像note_f=zeros(1,256);%%对新图像的灰度分析这块和前边的分析完全相同,以后用考虑变成函数调用fori=1:mforj=1:nnote_f(K(i,j)+1)=note_f(K(i,j)+1)+1;endendfigure(3);holdon;stem(note_f,'r');sum_note_f=zeros(1,256);sume_note_f(1)=note_f(1);fori=2:256sum_note_f(i)=sum_note_f(i-1)+note_f(i);endfigure(5);holdon;plot(sum_note_f,'r')axis([02560m*n])gridonclc;clear;调用的分段累积分布函数如下:functionsum_clip=fendu_cdf(note,mm_huidu)sum_clip={};fori=1:4m1=mm_huidu(i);m2=mm_huidu(i+1);%m2,bigeronem1smallonesum_note=zeros(1,m2-m1);%%%m2不计入,前几段正确,最后一段最后一个灰度值没有录入,对此细节暂不处理%此问题已通过最后的加一解决%fori=256:-1:1%ifnote(i)~=0;%break;%end%end%mm_huidu(5)=i+1;sum_note(1)=note(m1+1);forj=m1+1:m2-1sum_note(j-m1+1)=sum_note(j-m1)+note(j);endsum_clip{i}=sum_note/sum_note(m2-m1);end映射关系生成函数如下:functionfff=fenduan_yingshe(sum_clip,mm_huidu,I_start,I_end)fff=zeros(1,256);mm_huidu=round(mm_huidu)fori=1:4forj=mm_huidu(i)+1:mm_huidu(i+1)fff(j)=sum_clip{i}(j-mm_huidu(i))*(I_end(i)-I_start(i))+I_start(i);endend3.实验结果与分析3.1直方图均衡结果与分析图3.1预处理之后、处理之前的图片图3.2处理后图片图3.3处理前后直方图,蓝色对应处理前,红色对应处理后图3.3处理前后累积分布函数,蓝色对应处理前,红色对应处理后说明与分析:(1)、对比两图像可以发现,经过处理,总体来看对比度得到了增强;从细节观察,发现乌龟右前脚脚趾变得清晰。说明此算法对图像质量起到了改善作用。(2)、对预处理的说明:从原理上分析,QDHE算法对图像的改善作用来自两方面:一方面是图像灰度区间的扩展,另一方面是区间内进行直方图均衡。原图像灰度值大于100的像素点很少,但有分布,如此相应灰度区间被占用则灰度空间扩展的效果将不明显,所以进行预处理。(3)、从直方图和累积分布函数的图像也可发现有改善作用。(4)、此处理方法适用于光照不足时获得的图像的处理,由于像素点的灰度值分布在零到几十的范围内,经过灰度区间重新分配并进行区间内均衡会有较好的效果;对于灰度值分配不均,但分布范围较大的图片,处理效果不明显。4简单的目标跟踪算法的实现实验目的(1)、理解目标跟踪的概念(2)、掌握初步的目标跟踪算法,如相关算法、差值平方法、差值绝对值法(3)、实现算法后,进行简单的改进并观察对性能的影响2、目标跟踪的编程实现closeall;clear;clc;%%模板信息M=rgb2gray(imread('E:\photos\study\feiji\pic436.bmp'));%T_cai=imread('E:\photos\study\feiji\plane_zuolun.bmp');%T=zeros(100,200);%T=M(171:310,201:500);%飞机主体第一种比较好用的T=M(120:310,201:550);%飞机主体,大的,第二种方法%%熊杰模板M=rgb2gray(imread('E:\photos\study\feiji\pic435.bmp'));%T_cai=imread('E:\photos\study\feiji\plane_zuolun.bmp');%T=zeros(100,200);%T=M(171:310,201:500);%飞机主体第一种比较好用的T=M(107:300,215:500);%飞机主体,大的,第二种方法%%%T=M(100:200,490:550);%飞机尾%T=M(100:200,500:540);%飞机尾,另一个%T=M(190:260,290:440);[m_T,n_T]=size(T);%fori=1:m_T%forj=1:n_T%ifT(i,j)>100%T(i,j)=200;%end%end%endfigure(2);imshow(T);T_ave=sum(sum(T))/m_T/n_T;Fangcha_T=sum(sum((T-T_ave).^2));%%打开图像forpic=12:57%36:36%12:13%:57I=imread(['E:\photos\study\feiji\pic4',num2str(pic),'.bmp']);J=rgb2gray(I);[m_J,n_J]=size(J);%%求相关fori=1:10:m_J-m_T+1%行遍历forj=1:10:n_J-n_T+1%列遍历%%第一种算法%Ave_J_ij=sum(sum(J(i:m_T+i-1,j:n_T+j-1)))/m_T/n_T;%Fangcha_J_ij=sum(sum((T-T_ave).^2));%R(i,j)=sum(sum(((J(i:m_T+i-1,j:n_T+j-1)-Ave_J_ij).*(T-T_ave))))/...%Fangcha_T.^(1/2)/Fangcha_J_ij.^(1/2);%%第二种算法R(i,j)=sum(sum((J(i:m_T+i-1,j:n_T+j-1)-T).^2));%R((i-1)/10+1,(j-1)/10+1)%10跨步%%第三种算法%R(i,j)=sum(sum((abs(J(i:m_T+i-1,j:n_T+j-1)-T))));endend%%发现位置并标记%[row,colum]=find(R==max(max(R)));%第一种算法,求最大相关值[row,colum]=find(R==min(min(R(R~=0))));%第二种算法,求最小值K=zeros(m_T-10,n_T-10);K=I(row+5:row+m_T-1-5,colum+5:n_T+colum-1-5);I(row:row+m_T-1,colum:n_T+colum-1)=255;%-J(row:m_T+row-1,colum:n_T+colum-1);I(row+5:row+m_T-1-5,colum+5:n_T+colum-1-5)=K;imshow(I);pause(0.01);%max(max(R))

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论