
MATLAB数字图像处理实验报告5100字.docx
28页MATLAB数字图像处理实验报告5100字 《数字图像处理》实验报告 实验功能:一、 图像的预处理,读入彩色图像将其灰度化二、 绘制直方图三、 直方图均衡化四、 Butterworth低通滤波器五、 几何变换六、 彩色图像分离2013 年 11 月 2 日目 录程序整体功能介绍:我们这实验主要实现了六个功能,用软件系统自带函数和自己写的函数实现将彩色图像灰度化、绘制直方图、直方图均衡化、Butterworth低通滤波器、几何变换、彩色图像分离子功能的理论介绍实验一,图像的预处理,读入彩色图像将其灰度化灰度图像是数组矩阵,矩阵的值表示灰度浓淡使用灰度变换函数来实现彩色图像的灰度化,灰度变换函数形式:s=T(r),r代表图像f中的灰度,s表示图像g中的灰度值,两者在图像中处于相同的坐标(x,y)imwrite(rgb2gray(PS),'PicSampleGray.bmp');将彩色图片灰度化并保存,这个函数把输入灰度图像的窄范围扩展到输出灰度后的数据存入数组实验二,绘制直方图灰度直方图是灰度级的函数,直方图定义离散函数h(rk)=nk,rk是【0,G】间隔内第k级灰度,nk为图像中出现rk这种灰度的像素数。
用h(rk)的所有元素除PS=rgb2gray(PS),灰度化以图像中像素总数,就可以简单的得到归一化直方图对于整数图像k=0,1,2,3,…,L-1,可用p(rk)表示灰度级rk出现的概率for k=0:255GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置endfigure,bar(0:255,GP,'g') ,%绘制直方图实验三,直方图均衡化for i=1:256for j=1:iS1(i)=GP(j)+S1(i); %计算SkendendS2=round((S1*256)+0.5); %将Sk归到相近级的灰度 for i=1:256GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率实验四,Butterworth低通滤波器n阶的布特沃斯低通滤波器具有从滤波中心到D0的距离的截止频率,传递函数为:H(u,v)=1,D0为整数,D(u,v)为点(u,v)到滤波1?[D(u,v)/D0]2n器中心的距离与理想低通滤波器不同,布特沃斯低通滤波器的传递函数在D点没有尖锐的不连续在实验中我们使用的是2阶布特沃斯低通滤波器,用傅里叶函数将数组转换为矩阵,再计算低通滤波器传递函数g=fft2(f); % 傅立叶变换g=fftshift(g); % 转换数据矩阵[M,N]=size(g);nn=2; % 二阶巴特沃斯(Butterworth)低通滤波器d0=50;m=fix(M/2); n=fix(N/2);for i=1:Mfor j=1:Nd=sqrt((i-m)^2+(j-n)^2);h1=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数 result1(i,j)=h1*g(i,j);实验五,几何变换几何变换改变了图像中像素间的空间关系,可以使图像变大、变小、旋转等。
实验中我们设计了放大1.5倍、缩小0.8倍装置后图像功能几何变换主要是通过坐标点变换、仿射变换等来实现,假设(w,z)和(x,y)是两个空间的坐标系统,分别为输入空间和输出空间,几何坐标变换可定义为输入空间点到输出空间点的映射:(x,y)=T{(w,z)},T{·}叫做正向变换或正向映射仿射变换是从一个向量空间变换到另一个向量空间,由线性部分组成,表示成矩阵相乘部分、加法部分、偏移部分变换公式?x?a11y?=?wz? ??a21a12? +?b1a22??b2?,这个公式可以写成?xy?=?wz?T,T为仿射矩阵,重要的仿射变换包括缩放、旋转、平移、裁剪和反射,为了实现不同的种类的变换,可以设置不同的T的值实验六,彩色图像分离一幅RGB图像就是M?N?3大小的彩色像素的数组,其中每个彩色像素点都是在特定空间位置的彩色图像所对应的红、绿、蓝三个分量分量图像的数据类决定了它们的取值范围,如果一幅RGB图像的数据类是double,那么取值范围就是[0,1],类似的,对于unit8和unit16类的RGB图像,取值范围分别是[0,255],[0,65535],用来表达这些分量图像像素值得比特数决定了一幅RGB图像的比特深度。
fR、fG、fB分别表示三幅RGB分量图像,RGB图像就是利用cat操作将这些分量图像组合而成的彩色图像:rab.image=cat(3,fR,fG,fB).子程序的实现(程序)图像的预处理,读入彩色图像将其灰度化PS=imread('1.jpg'); %读入JPG彩色图像文件imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %将彩色图片灰度化并保存PS=rgb2gray(PS); %灰度化后的数据存入数组imshow(PS) %显示出来%二,绘制直方图[m,n]=size(PS); %测量图像尺寸参数GP=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置endfigure,bar(0:255,GP,'g') %绘制直方图title('原图像直方图')xlabel('灰度值')ylabel('出现概率')%三,直方图均衡化S1=zeros(1,256);for i=1:256for j=1:iS1(i)=GP(j)+S1(i); %计算SkendendS2=round((S1*256)+0.5); %将Sk归到相近级的灰度 for i=1:256GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率endfigure,bar(0:255,GPeq,'b') %显示均衡化后的直方图title('均衡化后的直方图')xlabel('灰度值')ylabel('出现概率');%四,Butterworth低通滤波器I= imread('1.jpg');figure;subplot(1,2,1);imshow(I);title('test1.jpg');f=double(I);g=fft2(f); % 傅立叶变换g=fftshift(g); % 转换数据矩阵[M,N]=size(g);nn=2; % 二阶巴特沃斯(Butterworth)低通滤波器d0=50;m=fix(M/2); n=fix(N/2);for i=1:Mfor j=1:Nd=sqrt((i-m)^2+(j-n)^2);h1=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数 result1(i,j)=h1*g(i,j);endendresult1=ifftshift(result1);J2=ifft2(result1);J3=uint8(real(J2));subplot(1,2,2);imshow(J3);title('低通滤波图t.jpg'); % 显示滤波处理后的图像 %六,几何变换f=imread('1.jpg');f=double(f);f1=imresize(f,1.5,'bilinear');figure;imshow(uint8(f1));title('放大1.5倍');f2=imresize(f,0.8,'bilinear');figure;imshow(uint8(f2));title('缩小0.8倍');i=imread('1.jpg');[height,width,dim]=size(i);tform=maketform('affine',[-1 0 0;0 1 0;width 0 1]); b=imtransform(i,tform,'nearest');tform1=maketform('affine',[0 1 0;1 0 0;0 0 1]); c=imtransform(i,tform1,'nearest');%七,彩色图像分离a=imread('1.jpg');[r,c,d]=size(a);%提取红色分量red=a;red(:,:,1)=a(:,:,1);red(:,:,2)=zeros(r,c);red(:,:,3)=zeros(r,c);red=uint8(red);subplot(131),imshow(red);%提取绿色分量green=zeros(r,c);green(:,:,2)=a(:,:,2);green(:,:,1)=zeros(r,c);green(:,:,3)=zeros(r,c);green=uint8(green);subplot(132),imshow(green);%提取蓝色分量blue=zeros(r,c);blue(:,:,1)=zeros(r,c);blue(:,:,2)=zeros(r,c);blue(:,:,3)=a(:,:,3);blue=uint8(blue);subplot(133),imshow(blue);子功能的输入、输出、结果原图实验一,输入PS=imread('1.jpg') 输出imshow(PS)实验二,输入输入PS=imread('1.jpg') 输出title('原图像直方图')实验三,输入PS=imread('1.jpg') 输出title('均衡化后的直方图')实验四,输入I= imread('1.jpg'); 输出imshow(J3);title('低通滤波图t.jpg')实验五,输入f=imread('1.jpg') 输出imshow(uint8(f2)); title('放大1.5倍');输出imshow(uint8(f2));title('缩小0.8倍');输入i=imread('1.jpg');输出imshow(c);imwrite(c,'nir装置后图像.jpg');实验六,输入a=imread('1.jpg'); 输出imshow(red);imshow(green);imshow(blue);第二篇:自动点焊技术之数字图像处理matlab实验报告_半色调打印技术 3100字自动点焊技术之数字图像处理实验报告实验名称:Image Printing Program Based on Halftoning实验编号:Proj02-01作 者:珠海博泰科技:莫工实验日期:20xx年11月30日摘 要:本实验采用半色调技术对图像进行打印和显示,先编程产生一个256*256大小渐变的测试图像,然后再编写一个半色调技术的打印程序,再用打印程序分别打印测试图像以及书本中给的3个不同图像细节的图片,并比较变换前后的图像效果,验证了书本中图2.23偏爱曲线所揭示的结论,即对具有大量细节的图像,可能只需要少量的灰度级就可以表示。
一、技术论述将图像中各像素点变换成3*3的点阵,256个灰度级别量化为10个灰度级,每个灰度级用3。