MATLAB数字图像处理实验报告

时间:2024.4.5

《数字图像处理》实验报告

实验功能:

一、     图像的预处理,读入彩色图像将其灰度化

二、     绘制直方图

三、     直方图均衡化

四、     Butterworth低通滤波器

五、     几何变换

六、     彩色图像分离

2013  年  11  月 2   日

目    录

程序整体功能介绍

我们这实验主要实现了六个功能,用软件系统自带函数和自己写的函数实现将彩色图像灰度化、绘制直方图、直方图均衡化、Butterworth低通滤波器、几何变换、彩色图像分离。

子功能的理论介绍

实验一,图像的预处理,读入彩色图像将其灰度化

灰度图像是数组矩阵,矩阵的值表示灰度浓淡。使用灰度变换函数来实现彩色图像的灰度化,灰度变换函数形式:s=T(r),r代表图像f中的灰度,s表示图像g中的灰度值,两者在图像中处于相同的坐标(x,y)imwrite(rgb2gray(PS),'PicSampleGray.bmp');将彩色图片灰度化并保存,这个函数把输入灰度图像的窄范围扩展到输出灰度的宽范围。PS=rgb2gray(PS),灰度化后的数据存入数组

实验二,绘制直方图

灰度直方图是灰度级的函数,直方图定义离散函数h(r)=n,r是【0,G】间隔内第k级灰度,n为图像中出现r这种灰度的像素数。用h(r)的所有元素除以图像中像素总数,就可以简单的得到归一化直方图。对于整数图像k=0,1,2,3,…,L-1,可用p(r)表示灰度级r出现的概率。

for k=0:255

     GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置

end

figure,bar(0:255,GP,'g') ,%绘制直方图

实验三,直方图均衡化

直方图均衡化实质上是对图像进行非线性拉伸,重新分配图像象元值,使一定灰度范围内象元值得数量相等。当灰度级为离散值时,我们利用处理直方图来实现图像均衡化。利用公式s=T(r)==,j=0,1,2,…,L-1—代表给定图像的灰度值直方图,在归一化图中,各个值大致是图像取灰度级的概率,k=0,1,2,3,…,L-1,s是输出的图像灰度值,对应输入图像的灰度值为r

for i=1:256

     for j=1:i

          S1(i)=GP(j)+S1(i);    %计算Sk

end

end

S2=round((S1*256)+0.5);                          %将Sk归到相近级的灰度

for i=1:256

     GPeq(i)=sum(GP(find(S2==i)));           %计算现有每个灰度级出现的概率

实验四,Butterworth低通滤波器

n阶的布特沃斯低通滤波器具有从滤波中心到D的距离的截止频率,传递函数为:H(u,v)=,D为整数,D(u,v)为点(u,v)到滤波器中心的距离。与理想低通滤波器不同,布特沃斯低通滤波器的传递函数在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:M

       for j=1:N

           d=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{·}叫做正向变换或正向映射。仿射变换是从一个向量空间变换到另一个向量空间,由线性部分组成,表示成矩阵相乘部分、加法部分、偏移部分。变换公式=  +,这个公式可以写成=T,T为仿射矩阵,重要的仿射变换包括缩放、旋转、平移、裁剪和反射,为了实现不同的种类的变换,可以设置不同的T的值。

实验六,彩色图像分离

一幅RGB图像就是大小的彩色像素的数组,其中每个彩色像素点都是在特定空间位置的彩色图像所对应的红、绿、蓝三个分量。分量图像的数据类决定了它们的取值范围,如果一幅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:255

     GP(k+1)=length(find(PS==k))/(m*n);      %计算每级灰度出现的概率,将其存入GP中相应位置

end

figure,bar(0:255,GP,'g')                    %绘制直方图

title('原图像直方图')

xlabel('灰度值')

ylabel('出现概率')

%三,直方图均衡化

S1=zeros(1,256);

for i=1:256

     for j=1:i

          S1(i)=GP(j)+S1(i);                 %计算Sk

     end

end

S2=round((S1*256)+0.5);                          %将Sk归到相近级的灰度

for i=1:256

     GPeq(i)=sum(GP(find(S2==i)));           %计算现有每个灰度级出现的概率

end

figure,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:M

       for j=1:N

           d=sqrt((i-m)^2+(j-n)^2);

           h1=1/(1+0.414*(d/d0)^(2*nn));  % 计算低通滤波器传递函数

           result1(i,j)=h1*g(i,j);

       end

end

result1=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实验报告_半色调打印技术


自动点焊技术之数字图像处理

实验报告

实验名称:Image Printing Program Based on Halftoning

实验编号:Proj02-01

作    者:珠海博泰科技:莫工

实验日期:20##年11月30日

摘    要:本实验采用半色调技术对图像进行打印和显示,先编程产生一个256*256大小渐变的测试图像,然后再编写一个半色调技术的打印程序,再用打印程序分别打印测试图像以及书本中给的3个不同图像细节的图片,并比较变换前后的图像效果,验证了书本中图2.23偏爱曲线所揭示的结论,即对具有大量细节的图像,可能只需要少量的灰度级就可以表示。

一、技术论述

将图像中各像素点变换成3*3的点阵,256个灰度级别量化为10个灰度级,每个灰度级用3*3的矩阵点来表示,用黑点全部填充的9个点近似表示灰度级为0,全部填白色表示灰度级为9,其他的模式表示这二者之间的灰度级。

 对应关系可表示为:dot(i,j)/10=gray(i,j)/256.

其中gray(i,j)为原像素点的灰度级,dot(i,j)为变换后的灰度级 。10灰度级的点阵如下图所示:

二、实验结果及讨论

实验中所使用的原图片以及经过半色调技术转换后的图片如下:

 

整体实验产生的图片如下

实验结果讨论:

   实验结果符合书本图2.23的结论,图2-3图像的细节较小,图2-5图像的细节中等,图2-7的图像细节较多, 经过半色调技术变换后,细节较多的图2-7使人感受到图像质量变化不大,这一实验表明,当图像中的细节增加时,等偏爱曲线会变得更加垂直,所以,对于有大量细节的图像,可能只需要较少的灰度级就行。

附录:

1、主M程序:charpter2.m

   该程序调用半色调打印函数convert(),完成相关图像的打印

   源码如下:

function exe2()

%

%功能: 第2章实验题目

%输入参数:无

%

%输出参数:无

%

         wH=2; wL=4;

       %人为产生一个256*256大小的渐变测试图像

          image256=zeros(256,256)

          for(i=1:256)

             image256(:,i)=(i-1)*ones(256,1);

          end

         image256=uint8(image256);

         imwrite(image256,'picture256.bmp');

        % image256=creat_picture();

         %image256=imread('picture256.jpg');

         subplot(wH,wL,1);

         imshow(image256);

         title('图2-1:256*256原图像');

         

         %对程序生成的256*256大小的渐变测试图像实行半色调变换

         y=convert(image256);

         subplot(wH,wL,2);

         imshow(y);

         imwrite(y,'p2-2.jpg');

         title('图2-2:半调色变换后256*256图像');

        

         %对课本图2.2(a)到(c)进行半调色打印对比

         img222a=imread('d:\data_s\Fig2.22(a).jpg');

         subplot(wH,wL,3);

         imshow(img222a);

         title('图2-3:图像2.22a原图');

         y=convert(img222a);

         subplot(wH,wL,4);

         imshow(y);

         imwrite(y,'p2-4.jpg');

         title('图2-4:图像2.22a原图半色调变换图');

        

          img222b=imread('Fig2.22(b).jpg');

         subplot(wH,wL,5);

         imshow(img222b);

         title('图2-5:图像2.22b原图');

         y=convert(img222b);

         subplot(wH,wL,6);

         imshow(y);

         imwrite(y,'p2-6.jpg');

         title('图2-6:图像2.22b原图半色调变换图');

        

         img222c=imread('Fig2.22(c).jpg');

         subplot(wH,wL,7);

         imshow(img222c);

         title('图2-7:图像2.22c原图');

         y=convert(img222c);

         subplot(wH,wL,8);

         imshow(y);

         imwrite(y,'p2-8.jpg');

         title('图2-8:图像2.22c原图半色调变换图');

     

2、半色调打印函数convert()

   function y = convert(x)

[r,c]=size(x);%得到这个图像有多少行多少列

%A4纸的21.6 * 27.9cm 换算成英寸为 8.5 * 10.98

pixelsperinch=96;

widthmaxpixels = 8.5*pixelsperinch;

heighminpixels = 11*pixelsperinch;

rscale=double(r)/widthmaxpixels;

cscale = double(c)/heighminpixels;

scale = rscale;

if(scale<cscale)

    scale=cscale;

end

if(scale >1)

    downsampling_ave(x,fix(scale));

end

gimg = fix(double(x)/25.6);%求这个点的灰度级为10个灰度级中的哪一个

y=zeros(r*3,c*3);%先清掉灰度矩阵

%得到一个10维的灰度级

dotz = zeros(3,3,10);

dotz(1:3,1:3,1:5) = zeros(3,3,5);

dotz(1,2,2:5) = 255*ones(1,1,4);

dotz(3,3,3:5) = 255*ones(1,1,3);

dotz(1,1,4:5) = 255*ones(1,1,2);

dotz(3,1,5) = 255;

dotz(1:3,1:3,6:10) = 255*ones(3,3,5);

dotz(2,2,6:9) = zeros(1,1,4);

dotz(2,1,6:8) = zeros(1,1,3);

dotz(3,2,6:7) = zeros(1,1,2);

dotz(2,3,6) = 0;

%把图像中的每个像素点换成某个灰度级的3*3的矩阵

for(i=1:r)

    for(j=1:c)

        level=gimg(i,j);

        y((i-1)*3+1:i*3,(j-1)*3+1:j*3)=dotz(1:3,1:3,level+1);

    end

end

y=uint8(y);%强制转为8位整数

end 

       

3、实验中产生的单幅图片

                                  图3-1 半调色变换后256*256图像

                           图3-2 Fig2.22(a) 半色调打印图像

                             图3-3 Fig2.22(b) 半色调打印图像

                          图3-4 Fig2.22(c) 半色调打印图像

更多相关推荐:
数字图像处理 实验报告(完整版)

数字图像处理实验一MATLAB数字图像处理初步一显示图像1利用imread函数读取一幅图像假设其名为lilytif存入一个数组中2利用whos命令提取该读入图像flowertif的基本信息3利用imshow函数...

图像恢复(数字图像处理实验报告)

数字图像处理作业图像恢复摘要数字图像恢复是数字图像处理的一个基本的和重要的课题它是后期图像处理分析和理解的前提图像在摄取传输储存的过程中不可避免地引起图像质量的下降图像退化图像恢复就是试图利用退化过程的先验知识...

数字图像处理实验报告

数字图像处理与分析课程设计20XX~20XX学年第二学期院(系)计算机科学与通信工程专业计算机科学与技术班级计算机1201学号学生姓名指导老师**一.实验目的:熟悉数字图像处理中各种椒盐噪声的实质,明确各种滤波…

数字图像处理实验报告

数字图像处理实验报告专业计算机科学与技术学号11101115姓名王晓东实验一数字图像的读入与显示实验目的了解opencv的开发环境设置读取并显示一幅图像掌握Imreadimwriteimshow的使用掌握ope...

数字图像处理实验报告

电子科技大学中山学院电子信息学院学生实验报告注实验报告不得少于2页不得超过5页电子科技大学中山学院电子信息学院学生实验报告电子科技大学中山学院电子信息学院学生实验报告电子科技大学中山学院电子信息学院学生实验报告

数字图像处理实验报告(空间域图像增强)

实验报告实验名称课程名称空间域图像增强数字图像处理姓名成绩班级学号日期地点1实验目的1了解空间域图像增强的各种方法点处理掩模处理2通过编写程序掌握采用直方图均衡化进行图像增强的方法3使用邻域平均法编写程序实现图...

数字图像处理实验报告

数字图像处理实验报告实验一图像的几何变换一P200一图像平移一实验目的对图像进行平移二实验步骤Iimread39beautyjpg39subplot211imshowItitle39原图39a为垂直移动b为水平...

数字图像处理实验报告

数字图像处理实验报告学号0904210226姓名柏雄文实验一C实现图像的旋转一实验目的用VC编程实现图像任意角度的旋转二程序设计1实现图像的打开主要打开图像的程序OpenPictureDialog1gtExec...

数字图像处理实验报告

数字图像处理作业报告一实验内容图像的锐化使用SobelLaplacian算子分别对图像进行运算观察并体会运算结果综合练习对需要进行处理的图像分析正确运用所学的知识采用正确的步骤对图像进行各类处理以得到令人满意的...

数字图像处理实验指导书-matlab[1]

数字图像处理实验报告一实验目的1熟悉MATLAB基本图像操作2结合实例学习如何在程序中增加图像处理算法3理解和掌握图像的线性变换和直方图均衡化的原理和应用4了解平滑处理的算法和用途学习使用均值滤波中值滤波和拉普...

5.图像增强—空域滤波 - 数字图像处理实验报告

计算机与信息工程学院验证性实验报告一实验目的进一步了解MatLab软件语言学会使用MatLab对图像作滤波处理使学生有机会掌握滤波算法体会滤波效果了解几种不同滤波方式的使用和使用的场合培养处理实际图像的能力并为...

数字图像处理报告 图像二值化

数字图像处理实验报告实验二灰度变换实验目的通过实验掌握灰度变换的基本概念和方法实验内容掌握基本的灰度变换图像反转对数变换幂次变换和二值化1图像反转对数变换幂次变换Iimread39fengjingjpg39Ji...

数字图像处理实验报告(28篇)