数学图像处理·实验三

合集下载

数字图像处理实验三中值滤波和均值滤波实验报告

数字图像处理实验三中值滤波和均值滤波实验报告

数字图像处理实验三均值滤波、中值滤波的计算机实现12281166 崔雪莹计科1202班一、实验目的:1)熟悉均值滤波、中值滤波处理的理论基础;2)掌握均值滤波、中值滤波的计算机实现方法;3)学习VC++ 6。

0 的编程方法;4)验证均值滤波、中值滤波处理理论;5)观察均值滤波、中值滤波处理的结果。

二、实验的软、硬件平台:硬件:微型图像处理系统,包括:主机,PC机;摄像机;软件:操作系统:WINDOWS2000或WINDOWSXP应用软件:VC++ 6.0三、实验内容:1)握高级语言编程技术;2)编制均值滤波、中值滤波处理程序的方法;3)编译并生成可执行文件;4)考察处理结果。

四、实验要求:1)学习VC++确6。

0 编程的步骤及流程;2)编写均值滤波、中值滤波的程序;3)编译并改错;4)把该程序嵌入试验二给出的界面中(作适当修改);5)提交程序及文档;6)写出本次实验的体会。

五、实验结果截图实验均值滤波采用的是3X3的方块,取周围的像素点取得其均值代替原像素点。

边缘像素的处理方法是复制边缘的像素点,增加一个边框,计算里面的像素值得均值滤波。

六、实验体会本次实验在前一次的实验基础上增加均值滤波和中值滤波,对于椒盐噪声的处理,发现中值滤波的效果更为好一点,而均值滤波是的整个图像变得模糊了一点,效果差异较大。

本次实验更加增加了对数字图像处理的了解与学习。

七、实验程序代码注释及分析// HistDemoADlg.h : 头文件//#include "ImageWnd.h"#pragma once// CHistDemoADlg 对话框class CHistDemoADlg : public CDialogEx{// 构造public:CHistDemoADlg(CWnd* pParent = NULL); // 标准构造函数int nWidth;int nHeight;int nLen;int nByteWidth;BYTE *lpBackup;BYTE *lpBitmap;BYTE *lpBits;CString FileName;CImageWnd source,dest;// 对话框数据enum { IDD = IDD_HISTDEMOA_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:void LoadBitmap(void);afx_msg void OnOpen();afx_msg void OnHist();void HistogramEq(void);void NoColor(void);void HistogramEq1(int nWidth,int nHeight,BYTE *lpInput,BYTE *lpOutput);void MeanFilter(int nWidth,int nHeight,BYTE *lpInput,BYTE *lpOutput);void MedianFilter(int nWidth,int nHeight,BYTE *lpInput,BYTE *lpOutput);afx_msg void OnBnClickedClose();afx_msg void OnBnClickedMeanfilter();afx_msg void OnBnClickedMedianfilter();};HistDemoADlg.cpp对HistDemoADlg.h进行具体的实现,OnOpen()函数响应ID为IDC_OPEN的按钮事件,而且会调取文件选择对话框,选取文件之后,会显示在原始图像区域显示对应的位图图像,OnHist()函数会响应ID为IDC_HIST的按钮事件,调用HistogramEq()进行直方图均衡化的处理,HistogramEq()会调用HistogramEq1()进行直方图均衡化的处理,并用dst.setImage()显示处理之后的图像,以及NoColor()函数,对原始图像转化为灰度图像之后再显示。

实验三、图像的傅立叶变换

实验三、图像的傅立叶变换

实验三、图像的傅立叶变换一、实验目的1了解图像变换的意义和手段;2熟悉傅里叶变换的基本性质;3熟练掌握FFT 的方法及应用;4通过实验了解二维频谱的分布特点;5通过本实验掌握利用MATLAB 编程实现数字图像的傅立叶变换。

二、实验原理1、应用傅立叶变换进行图像处理傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。

通过实验培养这项技能,将有助于解决大多数图像处理问题。

对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。

2、傅立叶(Fourier )变换的定义对于二维傅立叶变换,其离散形式如\* MERGEFORMAT (1)所示:\* MERGEFORMAT (1)112001(,)(,)ux vy M N j M N x y F u v f x y eMNπ⎡⎤⎛⎫--- ⎪⎢⎥⎝⎭⎣⎦===∑∑逆变换公式如\* MERGEFORMAT (2)所示:\* MERGEFORMAT (2)11200(,)(,)ux vy M N j M N u v f x y F u v eπ⎡⎤⎛⎫--+ ⎪⎢⎥⎝⎭⎣⎦===∑∑频谱公式如\* MERGEFORMAT (3)所示:\* MERGEFORMAT (3)(,)1222(,)(,)(,)(,)(,)(,)(,)j u v F u v F u v e R u v jI u v F u v R u v I u v ϕ==+⎡⎤=+⎣⎦图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法,具体参见参考书目,有关傅立叶变换的快速算法的程序不难找到。

实际上,现在有实现傅立叶变换的芯片,可以实时实现傅立叶变换。

3、利用MATLAB 软件实现数字图像傅立叶变换的程序设计主要使用的函数有:fft2/ifft2,fftshift ,abs ,angle fft2/ ifft2 %二维离散傅立叶变换/反变换fftshift %直流分量移到频谱中心real %取傅立叶变换的实部imag %取傅立叶变换的虚部sqrt(RR.^2+II.^2);%计算频谱幅值A=(A-min(min(A)))/(max(max(A))-min(min(A)))*255; %归一化三、实验步骤1.打开计算机,安装和启动MATLAB程序;程序组中“work”文件夹中应有待处理的图像文件;2.利用MatLab工具箱中的相关函数编制FFT显示频谱的函数;3.显示一副有格式图像的频谱、中心化后的频谱和相位谱;4.对一副有格式图像进行傅立叶变换,然后再对其进行反变换,显示反变换的结果;5.构造类似图1的一副图像,然后对其旋转60度,分别显示出它们的傅立叶频谱,验证傅立叶变换的旋转不变性。

图像处理3个实验内容

图像处理3个实验内容

图像处理实验报告格式一、封皮的填写:(1)实验课程名称:图像处理(2)实验名称:按顺序填写图像的二维离散傅立叶变换、图象的增强、图像二值化(3)年月:二、纸张要求:统一采用A4大小纸张,左侧装订,装订顺序与实验顺序一致。

三、书写要求:(1)报告除实验图像可以打印外,其余均须手写。

(2)实验图像及结果图像可以打印,图像均位于实验结果与分析部分,图像打印于纸张上部,下部空白处手写实验分析。

(3)报告中图要有图序及名称,表要有表序及名称,每个实验的图序和表序单独标号,具体格式参照毕业设计手册。

不合格者扣除相应分数。

(4)每个实验均需另起一页书写。

四、关于雷同报告:报告上交后,如有雷同,则课程考核以不及格处理。

五、报告撰写格式及实验内容如下:实验一图像的二维离散傅立叶变换一、实验目的掌握图像的二维离散傅立叶变换以及性质二、实验要求1)建立输入图像,在64⨯64的黑色图像矩阵的中心建立16⨯16的白色矩形图像点阵,形成图像文件。

对输入图像进行二维傅立叶变换,将原始图像及变换图像(三维、中心化)都显示于屏幕上。

2)调整输入图像中白色矩形的位置,再进行变换,将原始图像及变换图像(三维、中心化)都显示于屏幕上,比较变换结果。

3)调整输入图像中白色矩形的尺寸(40⨯40,4⨯4),再进行变换,将原始图像及变换图像(三维、中心化)都显示于屏幕上,比较变换结果。

三、实验仪器设备及软件HP D538、MATLAB四、实验原理以自己的语言结合课堂笔记进行总结,要求过程推导清晰明了。

五、实验步骤及程序实验步骤、程序流程、实验源程序齐全(全部手写)六、实验结果与分析实验二图像的增强一、实验目的1)掌握在计算机上进行直方图统计,以及直方图均衡化、线性变换的图像增强的方法2)掌握在计算机上进行图象平滑、图象锐化特别是中值滤波平滑及拉普拉斯算子锐化的方法二、实验要求1)显示图像(cameraman.tif)及灰度直方图。

2)对指定图像(cameraman.tif)进行直方图均衡化和线性变换,将原始图像及增强后的图像都显示于屏幕上,比较增强的效果。

实验三 IDL图像处理

实验三 IDL图像处理

实验三IDL图像处理目的:掌握IDL图像处理的手段内容:1、显示图像事实上,任何类型的二维数据集都可认为是一幅图像。

但是要在一个8位的显示设备上显示图像数据,就必须将图像数据调整为 0~255之间的字节型数值。

(在一个24-bit的显示设备上,24位图像的RGB值必须调整成字节型数值)。

因为图像总是以字节型数值显示,所以图像总是以字节型数组来存储。

但是无论图像是怎样存储的,在IDL中,图像总是由两个显示图像的IDL命令:TV和TVScl以字节型数值来完成。

可用TV和TVScl两个IDL命令中的任一个来显示图像。

这两个命令几乎在各个方面都是一样的,包括能与之一起使用的关键字。

仅仅在一个方面不同:TVScl将图像数据调整为与IDL运行时所用颜色数目相适应的字节型数值。

注意,与Plot,Surface和Contour命令不同,TV和TVScl命令在显示图像之前不删除窗口中已显示的内容。

一般情况下这个问题影响不大,但有时候也会产生一些麻烦。

如果想要一个空白的显示窗口来显示图像数据,无论当前窗口上的显示内容是什么,都可用一个简单的命令Erase来删除。

IDL>Erase要了解这两个命令是怎样工作的,需要有一些图像数据用于处理。

用命令LoadData来打开图像数据集Ali and Dave。

将要处理这两幅图像数据中的第二幅图像。

键入IDL>image=LoadData(10)IDL>image=image[*,*,1]打开一个显示窗口,装上灰度颜色表, 用TV命令显示图像:IDL>Window,0,XSize=192,YSize=192IDL>TV,image所得图像:IDL和Research Systems公司的创始人--David Stern的图像。

People.dat数据集中的另外一幅图像是Ali Bahrami,Research Systems公司的第一位员工。

他们两人依然致力于IDL的开发因为使用的是TV命令,所以数据没有经过拉伸就被送到显示器中显示。

实验三_数字图像处理空域滤波

实验三_数字图像处理空域滤波

实验三空域滤波一实验目的1了解空域滤波的方法。

2掌握几种模板的基本原理。

二实验条件PC微机一台和MATLAB软件。

三实验内容1使用函数fspecial( ) 生成几种特定的模板。

2使用函数imfilter( ) 配合模板对图象数据进行二维卷积。

3比较各种滤波器的效果。

四实验步骤空域滤波一般分为线性滤波和非线性滤波。

空域滤波器根据功能分为平滑滤波器和锐化滤波器。

1)平滑空间滤波:平滑的目的有两种:一是模糊,即在提取较大的目标前去除太小的细节或将目标内的小间断连接起来;另一种是消除噪声。

线性平滑(低通)滤波器:线性平滑空域滤波器的输出是包含在滤波掩膜邻域内像素的简单平均值。

线性平滑滤波器也称为均值滤波器,这种滤波器的所有系数都是正数,对3*3的模板来说,最简单的是取所有系数为1,为了保持输出图像仍然在原来图像的灰度值范围内,模板与像素邻域的乘积都要除以9。

a用h=fspecial(‘average’) 得到的h 为3×3的邻域平均模板,然后用h来对图象lenna.gif进行平滑处理。

>> x=imread('lenna.gif');h=fspecial('average');y=imfilter(x,h);imshow(x);title('原始图像');subplot(1,2,2);imshow(y);title('均值滤波后图像')实验结果如图:b 把模板大小依次改为7×7,9×9和11×11,观察其效果有什么不同?>>x=imread('lenna.gif');subplot(1,4,1);imshow(x);title('原始图像');h=fspecial('average',7);y=imfilter(x,h);subplot(1,4,2);imshow(y);title('模板大小7*7的图像');h1=fspecial('average',9);y1=imfilter(x,h1);subplot(1,4,3);imshow(y1);title('模板大小9*9的图像');h2=fspecial('average',11);y2=imfilter(x,h2);subplot(1,4,4);title('模板大小11*11的图像')比较效果:造成图像的模糊,n选取的越大,模糊越严重。

数字图像处理上机实验三

数字图像处理上机实验三

医学图像处理实验三1、计算图像的梯度,梯度值和梯度角。

I=imread('C:\Users\Administrator\Desktop\cat.jpg'); B=rgb2gray(I);C=double(B);e=1e-6;%10^-6[dx,dy]=gradient(C);%计算梯度G=sqrt(dx.*dx+dy.*dy);%梯度幅值figure,imshow(uint8(G)),title('梯度图像');pha=atan(dy./(dx+e))figure,imshow(pha,[])图 1图 2 梯度角图2、计算图像边缘检测,用滤波器方式实现各种算子。

(1)Roberts算子clear;I=imread('C:\Users\admin\Desktop\mao.jpg');B=rgb2gray(I);[m,n]=size(B);nB=B;robertsnum=0;%经roberts算子计算得到的每一个像素的值robertsthreshold=0.6;%设定阈值for j=1:m-1;%进行边界提取for k=1:n-1robertsnum=abs(B(j,k)-B(j+1,k+1))+abs(B(j+1,k)-B(j,k+1)); if(robertsnum>robertsthreshold)nB(j,k)=255;elsenB(j,k)=0;endendendsubplot(1,2,1);imshow(B);title('原图');subplot(1,2,2);imshow(nB,[]);title('Robert算子处理后的图像');图 3(2)Sobel算子clear;I=imread('C:\Users\admin\Desktop\mao.jpg');B=rgb2gray(I);[m,n]=size(B);f=double(B);u=double(B);usobel=B;for i=2:m-1%sobel边缘检测for j=2:n-1;gx=(u(i+1,j-1)+2*u(i+1,j)+f(i+1,j+1)-(u(i-1,j-1)+2*u(i-1,j)+f(i-1,j+1)));gy=(u(i-1,j+1)+2*u(i,j+1)+f(i+1,j+1)-(u(i-1,j-1)+2*u(i,j-1)+f(i+1,j-1)));usobel(i,j)=sqrt(gx^2+gy^2);endendsubplot(1,2,1);imshow(B);title('原图');subplot(1,2,2);imshow(im2uint8(usobel));title('Sobel边缘检测后的图像');图 4(3)Prewitt算子clear;I=imread('C:\Users\admin\Desktop\mao.jpg');B=rgb2gray(I);[m,n]=size(B);nB=B;prewittnum=0;%经prewitt算子计算得到的每一个像素的值prewittthreshold=0.6;%设定阈值for j=2:m-1;%进行边界提取for k=2:n-1prewittnum=abs(B(j-1,k+1)-B(j+1,k+1))+B(j-1,k)-B(j+1,k)+B(j-1,k-1)-B(j+1,k-1)+abs(B(j-1,k +1)+B(j,k+1)+B(j+1,k+1)-B(j-1,k-1)-B(j,k-1)-B(j+1,k-1));if(prewittnum>prewittthreshold)nB(j,k)=255;elsenB(j,k)=0;endendendsubplot(1,2,1);imshow(B);title('原图');subplot(1,2,2);imshow(nB,[]);title('Prewitt算子处理后的图像');图 5(4)Laplace边缘检测function flapEdge=LaplaceEdge(pic,Moldtype,thresh)[m,n]=size(pic);flapEdge=zeros(m,n);%四邻域拉普拉斯边缘检测算子if 4==Moldtypefor i=2:m-1for j=2:n-1temp=-4*pic(i,j)+pic(i-1,j)+pic(i+1,j)+pic(i,j-1)+pic(i,j+1);if temp>threshflapEdge(i,j)=255;elseflapEdge(i,j)=0;endendendend%八邻域拉普拉斯边缘检测算子if 8==Moldtypefor i=2:m-1for j=2:n-1temp=-8*pic(i,j)+pic(i-1,j)+pic(i+1,j)+pic(i,j-1)+pic(i,j+1)+pic(i-1, j-1)+pic(i+1,j+1)+pic(i+1,j-1)+pic(i-1,j+1);if temp>threshflapEdge(i,j)=255;elseflapEdge(i,j)=0;endendendend主函数:clear;I=imread('C:\Users\admin\Desktop\mao.jpg');B=rgb2gray(I);C=double(B);t=60;Lapmodtype=8;%设置模板方式flapEdge=LaplaceEdge(C,Lapmodtype,t); fgrayLapedge=uint8(flapEdge);figure()imshow(fgrayLapedge),title('laplace边缘检测图像');图 6(4)Kirsch算子clearclcclose allI=imread('C:\Users\admin\Desktop\mao.jpg');B=rgb2gray(I);figure(1)imshow(B,[])title('原始图象')%对图象进行均值滤波bw2=filter2(fspecial('average',3),B);%对图象进行高斯滤波bw3=filter2(fspecial('gaussian'),bw2);%利用小波变换对图象进行降噪处理[thr,sorh,keepapp]=ddencmp('den','wv',bw3); %获得除噪的缺省参数bw4=wdencmp('gbl',bw3,'sym4',2,thr,sorh,keepapp);%图象进行降噪处理%---------------------------------------------------------------------%提取图象边缘t=3000; %设定阈值bw5=double(bw4);[m,n]=size(bw5);g=zeros(m,n);d=zeros(1,8);%利用Kirsch算子进行边缘提取for i=2:m-1for j=2:n-1d(1)=(5*bw5(i-1,j-1)+5*bw5(i-1,j)+5*bw5(i-1,j+1)-3*bw5(i,j-1)-3*bw5(i,j+1 )-3*bw5(i+1,j-1)-3*bw5(i+1,j)-3*bw5(i+1,j+1))^2;d(2)=((-3)*bw5(i-1,j-1)+5*bw5(i-1,j)+5*bw5(i-1,j+1)-3*bw5(i,j-1)+5*bw5(i, j+1)-3*bw5(i+1,j-1)-3*bw5(i+1,j)-3*bw5(i+1,j+1))^2;d(3)=((-3)*bw5(i-1,j-1)-3*bw5(i-1,j)+5*bw5(i-1,j+1)-3*bw5(i,j-1)+5*bw5(i, j+1)-3*bw5(i+1,j-1)-3*bw5(i+1,j)+5*bw5(i+1,j+1))^2;d(4)=((-3)*bw5(i-1,j-1)-3*bw5(i-1,j)-3*bw5(i-1,j+1)-3*bw5(i,j-1)+5*bw5(i, j+1)-3*bw5(i+1,j-1)+5*bw5(i+1,j)+5*bw5(i+1,j+1))^2;d(5)=((-3)*bw5(i-1,j-1)-3*bw5(i-1,j)-3*bw5(i-1,j+1)-3*bw5(i,j-1)-3*bw5(i, j+1)+5*bw5(i+1,j-1)+5*bw5(i+1,j)+5*bw5(i+1,j+1))^2;d(6)=((-3)*bw5(i-1,j-1)-3*bw5(i-1,j)-3*bw5(i-1,j+1)+5*bw5(i,j-1)-3*bw5(i, j+1)+5*bw5(i+1,j-1)+5*bw5(i+1,j)-3*bw5(i+1,j+1))^2;d(7)=(5*bw5(i-1,j-1)-3*bw5(i-1,j)-3*bw5(i-1,j+1)+5*bw5(i,j-1)-3*bw5(i,j+1 )+5*bw5(i+1,j-1)-3*bw5(i+1,j)-3*bw5(i+1,j+1))^2;d(8)=(5*bw5(i-1,j-1)+5*bw5(i-1,j)-3*bw5(i-1,j+1)+5*bw5(i,j-1)-3*bw5(i,j+1 )-3*bw5(i+1,j-1)-3*bw5(i+1,j)-3*bw5(i+1,j+1))^2;g(i,j) = max(d);endend%显示边缘提取后的图象for i=1:mfor j=1:nif g(i,j)>tbw5(i,j)=255;elsebw5(i,j)=0;endendendfigure(2)imshow(bw5,[])title('Kirsch ')图7(5)LoG和canny算子clear;I=imread('C:\Users\admin\Desktop\mao.jpg');B=rgb2gray(I);bw1=edge(B,'log',0.01);bw3=edge(B,'canny',0.1);figure;subplot(1,2,1);imshow(bw1,[]);title('loG边缘检测'); subplot(1,2,2);imshow(bw3,[]);title('canny边缘检测');图83、大津法实现图像分割clear;I=imread('C:\Users\admin\Desktop\cat.jpg');B=rgb2gray(I);T = graythresh(B);%求阈值BW = im2bw(B,T);%二值化imshow(BW,[])图9。

实验三 图象的代数运算

实验三 图象的代数运算

实验三图像的代数运算一、实验目的1、了解代数运算的基本定义;2、掌握在MTLAB中对图像进行代数运算的方法;3、进一步熟悉了解MA TLAB语言的应用。

二、实验原理代数运算是指对两幅输入图像进行点对点的加、减、乘或除运算而得到输出图像的运算。

对于相加和相乘的情形,可能不止有两幅图像参加运算。

在一般情况下,输入情况之一可能为常数。

四种图像处理代数运算的数学表达式如下:=+C x y A x y B x y(,)(,)(,=-C x y A x y B x y(,)(,)(,=⨯C x y A x y B x y(,)(,)(,=÷C x y A x y B x y(,)(,)(,其中A(x,y)和B(x,y)为输入图像,而C(x,y)为输出图像。

还可以通过适当的组合形成涉及几幅图像的复合代数运算方程。

在MATLAB中,我们可以用函数简单的得到数字图像的图像数据矩阵(即A(x,y)和B(x,y)),有了这些矩阵后我们只要适当的设计代数运算的形式并写出方程,就可以得到一个输出图像的矩阵(即C(x,y))图像相加的一个重要应用是对同一场景的多幅图像求平均值。

这点被经常用来有效的降低加性随机噪声的影响。

在求平均值的过程中,图像的静止部分不会改变,而对每一幅图像,各不相同的噪声图案则过累积很慢。

对M幅图像进行平均,使图像中每一点的平方信噪比提高了M倍幅度信噪比是功率信噪比的平方根,因此达到了提高信噪比降低噪声的作用。

本次实验要求完成人为的往一幅图像中加入噪声,并通过多次相加求平均的方法消除所加入的噪声。

在MA TLAB中提供了给图像加入噪声的函数imnoiseimnoise的语法格式为J = imnoise(I,type)J = imnoise(I,type,parameters)其中J = imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。

参数type和parameters用于确定噪声的类型和相应的参数。

数字图像处理实验三 图像滤波实验(模板运算)

数字图像处理实验三  图像滤波实验(模板运算)

实验三图像滤波实验(模板运算)一.实验目的:模板运算是空间域图象增强的方法,也叫模板卷积。

(1)平滑:平滑的目的是模糊和消除噪声。

平滑是用低通滤波器来完成,在空域中全是正值。

(2)锐化:锐化的目的是增强被模糊的细节。

锐化是用高通滤波器来完成,在空域中,接近原点处为正,在远离原点处为负。

二.实验内容:(1)利用线性空间滤波(均值滤波)对一幅图象进行平滑,验证模板尺寸和滤波参数对图象的模糊效果的影响。

(2)利用非线性空间滤波器(中值滤波)对一幅噪声图象(椒盐噪声)进行平滑去噪,同时检验两种滤波模板(分别使用一个5×5的线性邻域平均模板和一个非线性模板:3×3中值滤波器)对噪声的滤波效果。

(3)利用线性空间滤波器,对灰度图象分别利用二阶标准Laplacian算子和对角线Laplacian算子对其进行锐化操作,增强图像边缘,验证检测效果。

三.实验原理:1.用31×31均值滤波模板,并分别采用参数boundary_options默认值和‘replicate’对图像test_pattern进行平滑处理;用3×3,5×5,7×7均值滤波模板对图像lena平滑处理,观察不同参数、不同模板尺寸对滤波效果的影响。

1.线性空间滤波函数imfilter来实现线性空间滤波,语法为:g = imfilter(f, w, filtering_mode, boundary_options, size_options)其中,f是输入图像,w为滤波模板,g为滤波结果,filtering_mode用于指定在滤波过程中是使用相关运算(‘corr’)还是卷积运算(‘conv’),相关就是按模板在图像上逐步移动运算的过程,卷积则是先将模板旋转180度,再在图像上逐步移动的过程,显然,若模板中心对称,则相关和卷积运算是相同操作,默认为相关运算;boundary_options用于处理边界充零问题,默认为赋零,若该参数为’replicate’表示输出图像边界通过复制原图像边界的值来扩展;size_options可以是’full’或’same’,默认为’same’,表示输出图像与输入图像的大小相同。

数字图像处理实验报告(三四五)

数字图像处理实验报告(三四五)

实验三图像的几何变换一.实验目的及要求掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其MATLAB编程实现方法。

二、实验内容(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。

熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

1. 图像缩放clear all, close allI = imread('cameraman.tif');Scale = 1.35; % 将图像放大1.35倍J1 = imresize(I, Scale, 'nearest'); %using the nearest neighbor interpolationJ2 = imresize(I, Scale, 'bilinear'); %using the bilinear interpolationimshow(I), title('Original Image');figure, imshow(J1), title('Resized Image-- using the nearest neighbor interpolation ');figure, imshow(J2), title('Resized Image-- using the bilinear interpolation ');% 查看imresize使用帮助help imresizeCommand窗口显示如下:IMRESIZE Resize image.B = IMRESIZE(A, SCALE) returns an image that is SCALE times thesize of A, which is a grayscale, RGB, or binary image.B = IMRESIZE(A, [NUMROWS NUMCOLS]) resizes the image so that it hasthe specified number of rows and columns. Either NUMROWS or NUMCOLS may be NaN, in which case IMRESIZE computes the number of rows orcolumns automatically in order to preserve the image aspect ratio.[Y, NEWMAP] = IMRESIZE(X, MAP, SCALE) resizes an indexed image.[Y, NEWMAP] = IMRESIZE(X, MAP, [NUMROWS NUMCOLS]) resizes an indexed image.T o control the interpolation method used by IMRESIZE, add a METHODargument to any of the syntaxes above, like this:IMRESIZE(A, SCALE, METHOD)IMRESIZE(A, [NUMROWS NUMCOLS], METHOD),IMRESIZE(X, MAP, M, METHOD)IMRESIZE(X, MAP, [NUMROWS NUMCOLS], METHOD) METHOD can be a string naming a general interpolation method: 'nearest' - nearest-neighbor interpolation'bilinear' - bilinear interpolation'bicubic' - cubic interpolation; the default method METHOD can also be a string naming an interpolation kernel: 'box' - interpolation with a box-shaped kernel'triangle' - interpolation with a triangular kernel(equivalent to 'bilinear')'cubic' - interpolation with a cubic kernel(equivalent to 'bicubic')'lanczos2' - interpolation with a Lanczos-2 kernel'lanczos3' - interpolation with a Lanczos-3 kernelFinally, METHOD can be a two-element cell array of the form {f,w}, where f is the function handle for a custom interpolation kernel, andw is the custom kernel's width. f(x) must be zero outside the interval -w/2 <= x < w/2. Your function handle f may be called with a scalar or a vector input.You can achieve additional control over IMRESIZE by using parameter/value pairs following any of the syntaxes above. For example:B = IMRESIZE(A, SCALE, PARAM1, VALUE1, PARAM2, VALUE2, ...)Parameters include:'Antialiasing' - true or false; specifies whether to performantialiasing when shrinking an image. Thedefault value depends on the interpolationmethod you choose. For the 'nearest' method,the default is false; for all other methods,the default is true.'Colormap' - (only relevant for indexed images) 'original'or 'optimized'; if 'original', then theoutput newmap is the same as the input map.If it is 'optimized', then a new optimizedcolormap is created. The default value is'optimized'.'Dither' - (only for indexed images) true or false;specifies whether to perform colordithering. The default value is true.'Method' - As described above'OutputSize' - A two-element vector, [MROWS NCOLS],specifying the output size. One element maybe NaN, in which case the other value iscomputed automatically to preserve the aspectratio of the image.'Scale' - A scalar or two-element vector specifying theresize scale factors. If it is a scalar, thesame scale factor is applied to eachdimension. If it is a vector, it containsthe scale factors for the row and columndimensions, respectively.Examples--------Shrink by factor of two using the defaults of bicubic interpolation and antialiasing.I = imread('rice.png');J = imresize(I, 0.5);figure, imshow(I), figure, imshow(J)Shrink by factor of two using nearest-neighbor interpolation. (This is the fastest method, but it has the lowest quality.)J2 = imresize(I, 0.5, 'nearest');Resize an indexed image.[X, map] = imread('trees.tif');[Y, newmap] = imresize(X, map, 0.5);imshow(Y, newmap)Resize an RGB image to have 64 rows. The number of columns is computed automatically.RGB = imread('peppers.png');RGB2 = imresize(RGB, [64 NaN]);Note----The function IMRESIZE in previous versions of the Image ProcessingT oolbox used a somewhat different algorithm by default. If you need the same results produced by the previous implementation, call the function IMRESIZE_OLD.Class Support-------------The input image A can be numeric or logical and it must be nonsparse. The output image is of the same class as the input image. The inputindexed image X can be uint8, uint16, or double.See also imresize_old, imrotate, imtransform, tformarray.Reference page in Help browserdoc imresize执行程序所得结果如下:改变参数Scale =0.5得到图形结果如下:对以上实验结果,分析如下:通过查看命令窗口查看imresize函数的使用方法。

数字图像处理实验

数字图像处理实验

数字图像处理实验实验总学时:10学时实验目的:本实验的目的是通过实验进一步理解和掌握数字图像处理原理和方法。

通过分析、实现现有的图像处理算法,学习和掌握常用的图像处理技术。

实验内容:数字图像处理的实验内容主要有三个方面:(1) 对图像灰度作某种变换,增强其中的有用信息,抑制无用信息,使图像的视在质量提高,以便于人眼观察、理解或用计算机对其作进一步的处理。

(2) 用某种特殊手段提取、描述和分析图像中所包含的某些特征和特殊的信息,主要的目的是便于计算机对图像作进一步的分析和理解,经常作为模式识别和计算机视觉的预处理。

这些特征包括很多方面,例如,图像的频域特性、灰度特征、边界特征等。

(3) 图像的变换,以便于图像的频域处理。

实验一图像的点处理实验内容及实验原理:1、灰度的线性变换灰度的线性变换就是将图像中所有的点的灰度按照线性灰度变换函数进行变换。

该线性灰度变换函数是一个一维线性函数:灰度变换方程为:其中参数为线性函数的斜率,函数的在y轴的截距,表示输入图像的灰度,表示输出图像的灰度。

要求:输入一幅图像,根据输入的斜率和截距进行线性变换,并显示。

2、灰度拉伸灰度拉伸和灰度线性变换相似。

不同之处在于它是分段线性变换。

表达如下:其中,(x1,y1)和(x2,y2)是分段函数的转折点。

要求:输入一幅图像,根据选择的转折点,进行灰度拉伸,显示变换后的图像。

3、灰度直方图灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表示像素的灰度级别,纵坐标表示该灰度出现的频率(象素的个数)。

要求:输入一幅图像,显示它的灰度直方图,可以根据输入的参数(上限、下限)显示特定范围的灰度直方图。

4、直方图均衡:要求1 显示一幅图像pout.bmp的直方图;2 用直方图均衡对图像pout.bmp进行增强;3 显示增强后的图像。

实验二:数字图像的平滑实验内容及实验原理:1.用均值滤波器(即邻域平均法)去除图像中的噪声;2.用中值滤波器去除图像中的噪声3. 比较两种方法的处理结果 实验步骤:用原始图象lena.bmp 或cameraman.bmp 加产生的3%椒盐噪声图象合成一幅有噪声的图象并显示;1. 用均值滤波器去除图像中的噪声(选3x3窗口);2. f (x 0,y 0)=Med {f (x,y )∨x ∈[x 0−N,x 0+N ],y ∈[y 0−N,y 0+N ]}用中值滤波器去除图像中的噪声(选3x3窗口做中值滤波);3. 将两种处理方法的结果与原图比较,注意两种处理方法对边缘的影响。

图形图像处理 实验三 图像的灰度变换及答案

图形图像处理  实验三  图像的灰度变换及答案

实验三 图像的灰度变换一.实验目的1.掌握图像的灰度变换方法;2.掌握MATLAB 语言中图像数据与信息的读取方法;3.理解图像灰度变换处理在图像增强的作用。

二.实验基本原理灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。

1) 图像反转灰度级范围为[0, L-1]的图像反转可由下式获得r L s --=12) 对数变换:有时原图的动态范围太大,超出某些显示设备的允许动态范围,如直接使用原图,则一部分细节可能丢失。

解决的方法是对原图进行灰度压缩,如对数变换:s = c log(1 + r ),c 为常数,r ≥ 03) 幂次变换:0,0,≥≥=γγc cr s4) 分段线性变换:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性变换:其对应的数学表达式为: 0f(x,y) g(x,y)a b cdM f M g⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧<≤<≤+---≤≤+---=a y x f y x f a c b y x f a c a y x f a b c d M y x f b d b y x f bM d M y x g f f g ),(0),(),(]),([),(]),([),(三.实验内容1) 对图像(a )进行取反操作,输出变换结果图。

(a ) 2) 对图像(b )进行对数变换,输出变换结果图。

(b )3) 对图像(c )进行幂次变换,输出γ分别等于3.0、4.0和5.0时的变换结果图。

(c )4)对图像(d)进行分段线性变换,输出变换函数图和变换结果图。

(d)答案:1)对图像(a)进行取反操作,输出变换结果图i=imread('1.jpg');g=255;p=imshow(g)2)像(b)进行对数变换i=imread('2.jpg');g=im2uint8(mat2gray(log(1+double(i))));imshow(g)3) 对图像(c)进行幂次变换,输出γ分别等于3.0、4.0和5.0时的变换结果图。

数字图像处理实验报告(五个实验全)

数字图像处理实验报告(五个实验全)

数字图像处理实验报告(五个实验全)实验⼀ Matlab图像⼯具的使⽤1、读图I=imread('lena.jpg');imshow(I);2、读⼊⼀幅RGB图像,变换为灰度图像和⼆值图像,并在同⼀个窗⼝内分成三个⼦窗⼝来分别显⽰RGB图像和灰度图像。

a=imread('lena.jpg')i = rgb2gray(a)I = im2bw(a,0.5)subplot(3,1,1);imshow(a);subplot(3,1,2);imshow(i);subplot(3,1,3);imshow(I);原图像灰度图像⼆值图像实验⼆图像变换1、对⼀幅图像进⾏平移,显⽰原始图像与处理后图像,分别对其进⾏傅⾥叶变换,显⽰变换后结果,分析原图的傅⾥叶谱与平移后傅⾥叶频谱的对应关系。

s=imread('beauty.jpg');i=rgb2gray(s)i=double(i)j=fft2(i);k=fftshift(j); 原图像原图的傅⾥叶频谱l=log(abs(k));m=fftshift(j);RR=real(m);II=imag(m);A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A)))*255;b=circshift(s,[800 450]);b=rgb2gray(b)b=double(b) 平移后的图像平移后的傅⾥叶频谱c=fft2(b);e=fftshift(c);l=log(abs(e));f=fftshift(c);WW=real(f);ZZ=imag(f);B=sqrt(WW.^2+ZZ.^2);B=(B-min(min(B)))/(max(max(B)))*255;subplot(2,2,1);imshow(s);subplot(2,2,2);imshow(uint8(b));subplot(2,2,3);imshow(A);subplot(2,2,4);imshow(B);2、对⼀幅图像进⾏旋转,显⽰原始图像与处理后图像,分别对其进⾏傅⾥叶变换,显⽰变换后结果,分析原图的傅⾥叶谱与旋转后傅⾥叶频谱的对应关系。

图像处理实验3-4

图像处理实验3-4

数字图像处理实验1. 直方图修正灰度变换是图像增强的一种重要手段,使图像对比度扩展,图像更加清晰,特征更加明显。

灰度级的直方图给出了一幅图像概貌的描述,通过修改灰度直方图来得到图像增强。

(1)计算出一幅灰度图像的直方图clearclose allI=imread(' rice.png');imhist(I)title('实验一(1)直方图');(2)对灰度图像进行简单的灰度线形变换,figuresubplot(2,2,1)imshow(I);title('试验2-灰度线性变换');subplot(2,2,2)histeq(I);(3)看其直方图的对应变化和图像对比度的变化原图像f(m,n) 的灰度范围[a,b] 线形变换为图像g(m,n),灰度范围[a’,b’] 公式:g(m,n)=a’+(b’-a’)* f(m,n) /(b-a)figuresubplot(2,2,1)imshow(I)J=imadjust(I,[0.3,0.7],[0,1],1);title(' 实验一(3)用g(m,n)=a’+(b’-a’)* f(m,n)/(b-a)进行变换');subplot(2,2,2)imshow(J)subplot(2,2,3)imshow(I)J=imadjust(I,[0.5 0.8],[0,1],1);subplot(2,2,4)imshow(J)(4) 图像二值化(选取一个域值,将图像变为黑白图像)figuresubplot(2,2,1)imshow(I)J=find(I<150);I(J)=0;J=find(I>=150);I(J)=255;title(' 实验一(4)图像二值化( 域值为150 )');subplot(2,2,2)imshow(I)clc;I=imread(‘rice.png');bw=im2bw(I,0.5);%选取阈值为0.5figure;imshow(bw) %显示二值图像2. 图像处理变换1.傅立叶变换熟悉其概念和原理,实现对一幅灰度图像的快速傅立叶变换,并求其变换后的系数分布. 2.离散余弦变换熟悉其概念和原理,实现对一幅灰度和彩色图像作的离散余弦变换,选择适当的DCT系数阈值对其进行DCT反变换.% 图像的FFT变换clc;I=imread('rice.png');subplot(1,2,1)imshow(I);title('原图');subplot(1,2,2)imhist(I);title('直方图');colorbar;J=fft2(I);figure;subplot(1,2,1)imshow(J);title('FFT变换结果');subplot(1,2,2)K=fftshift(J);imshow(K);title('零点平移');figure;imshow(log(abs(K)),[]),colormap(jet(64)),colorbar;title('系数分布图');% 图像的DCT变换RGB=imread('onion.png');figure;subplot(1,2,1)imshow(RGB);title('彩色原图');a=rgb2gray(RGB);subplot(1,2,2)imshow(a);title('灰度图');figure;b=dct2(a);imshow(log(abs(b)),[]),colormap(jet(64)),colorbar; title('DCT变换结果');figure;b(abs(b)<10)=0;% idctc=idct2(b)/255;imshow(c);title('IDCT变换结果');3. 小波变换实验内容:熟悉小波变换的概念和原理,熟悉matlab小波工具箱主要函数的使用.利用二维小波分析对一幅图像作2层小波分解,并在此基础上提取各层的低频信息实现图像的压缩.程序如下:clcclose allcleara=imread('deblur1.png ');subplot(1,2,1);imshow(a);title('原始图像');I=rgb2gray(a);subplot(1,2,2);imshow(I);title('原始图像的灰度图');% 进行二维小波变换[a,b] = wavedec2(I, 2, 'bior3.7');% 提取各层低频信息figure;c = appcoef2( a, b, 'bior3.7', 1 );subplot(1,2,1);imshow(c, []);title('一层小波变换结果');d = appcoef2( a, b, 'bior3.7', 2 );subplot(1,2,2);imshow(d, []);title('二层小波变换结果');4. 模板运算一、实验内容:(1)平滑:平滑的目的是模糊和消除噪声。

数字图像处理实验报告实验三

数字图像处理实验报告实验三
2.设计一个检测图3-2中边缘的程序,要求结果类似图3-3,并附原理说明
代码:
I=imread('lines.png');
F=rgb2gray(I);
subplot(2,2,1);
imshow(I);
title('原始图像');
thread=130/255;
subplot(2,2,2);
imhist(F);
图5-2 添上一层(漆)
3.开运算open:
4.闭close:
5.HMT(Hit-Miss Transform:击中——击不中变换)
条件严格的模板匹配
模板由两部分组成。 :物体, :背景。
图5-3 击不中变换示意图
性质:
(1) 时,
(2)
6.细化/粗化
(1)细化(Thin)
去掉满足匹配条件的点。
图5-4 细化示意图
se = strel('ball',5,5);
I2 = imerode(I,se);
imshow(I), title('Original')
figure, imshow(I2), title('Eroded')
Matlab用imopen函数实现图像开运算。用法为:
imopen(I,se);
I为图像源,se为结构元素
构造一个中心具有菱形结构的结构元素,R为跟中心点的距离
SE = strel('rectangle',MN)
构造一个矩形的结构元素,MN可写在[3 4],表示3行4列
SE = strel('square',W)
构造一个正方形的矩阵。

数字图像处理实验三

数字图像处理实验三

数字图像处理—实验三一.实验内容:⑴5⨯5区域的邻域平均法⑵5⨯5中值滤波法二.实验目的:了解各种平滑处理技术的特点和用途,掌握平滑技术的仿真与实现方法。

学会用Matlab中的下列函数对输入图像进行上述2类运算。

感受不同平滑处理方法对最终图像效果的影响。

nlfilter;mean2;std2;fspecial;filter2;medfilt2;imnoise三.实验步骤:1.仔细阅读Matlab帮助文件中有关以上函数的使用说明,能充分理解其使用方法并能运用它们完成实验内容。

2.将test3_1.jpg图像文件读入Matlab,用nlfilter对其进行5⨯5邻域平均和计算邻域标准差。

显示邻域平均处理后的结果,以及邻域标准差图像。

clc;clear;figure;subplot(1,3,1);i1=imread('test3_1.jpg');i1=im2double(i1);imshow(i1);title('原图像');subplot(1,3,2);T1=nlfilter(i1,[5 5],@mean2);imshow(T1);title('邻域平均处理后结果');subplot(1,3,3);T2=nlfilter(i1,[5 5],@std2);imshow(T2);title('邻域标准差图像');3.在test3_1.jpg图像中添加均值为0,方差为0.02的高斯噪声,对噪声污染后的图像用nlfilter进行5⨯5邻域平均。

显示处理后的结果。

(使用imnoise 命令)clc;clear;figure;subplot(1,3,1);i1=imread('test3_1.jpg');i1=im2double(i1);imshow(i1);title('原图像');subplot(1,3,2);T1=imnoise(i1,'gaussian',0,0.2);imshow(T1);title('加高斯噪声');subplot(1,3,3);T2=nlfilter(i1,[5 5],@mean2);imshow(T2);title('处理后结果');4.将test3_2.jpg图像文件读入Matlab,用fspecial函数生成一5⨯5邻域平均窗函数,再用filter2函数求邻域平均,试比较与用nlfilter 函数求邻域平均的速度。

数字图像处理四个实验

数字图像处理四个实验

数字图像处理实验指导书目录实验一MATLAB数字图像处理初步实验二图像的代数运算实验三图像增强-空间滤波实验四图像分割实验五形态学运算3实验一 MATLAB数字图像处理初步一、实验目的与要求1.熟悉及掌握在MATLAB中能够处理哪些格式图像。

2.熟练掌握在MATLAB中如何读取图像。

3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。

4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。

5.图像间如何转化。

二、实验原理及知识点1、数字图像的表示和类别一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。

灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。

例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。

因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。

图像关于x和y坐标以及振幅连续。

要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。

将坐标值数字化成为取样;将振幅数字化成为量化。

采样和量化的过程如图1所示。

因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。

作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。

图1 图像的采样和量化根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类:亮度图像(Intensity images)二值图像(Binary images)索引图像(Indexed images)RGB图像(RGB images)(1) 亮度图像一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。

若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。

数字图像处理 实验报告(完整版)

数字图像处理 实验报告(完整版)

数字图像处理实验一 MATLAB数字图像处理初步一、显示图像1.利用imread( )函数读取一幅图像,假设其名为lily.tif,存入一个数组中;2.利用whos 命令提取该读入图像flower.tif的基本信息;3.利用imshow()函数来显示这幅图像;实验结果如下图:源代码:>>I=imread('lily.tif')>> whos I>> imshow(I)二、压缩图像4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为lily.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。

6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flily.bmp。

7.用imread()读入图像Sunset.jpg和Winter.jpg;8.用imfinfo()获取图像Sunset.jpg和Winter.jpg的大小;9.用figure,imshow()分别将Sunset.jpg和Winter.jpg显示出来,观察两幅图像的质量。

其中9的实验结果如下图:源代码:4~6(接上面两个) >>I=imread('lily.tif')>> imfinfo 'lily.tif';>> imwrite(I,'lily.jpg','quality',20);>> imwrite(I,'lily.bmp');7~9 >>I=imread('Sunset.jpg');>>J=imread('Winter.jpg')>>imfinfo 'Sunset.jpg'>> imfinfo 'Winter.jpg'>>figure(1),imshow('Sunset.jpg')>>figure(2),imshow('Winter.jpg')三、二值化图像10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。

数字图像处理实验报告实验三

数字图像处理实验报告实验三
SE = strel('square',W)
构造一个正方形的矩阵。
计算二值图像面积
bwarea
功能:
计算二进制图像对象的面积。
语法:
total = bwarea(BW)
举例
BW = imread('circles.png');
imshow(BW);
bwarea(BW)
ans =
15799
bwmorph
图5-5
图5-6
图5-7
五、实验过程与结果
1.分别用Roberts,Sobel和拉普拉斯高斯算子对图像进行边缘检测。比较三种算子处理的不同之处
代码:
I=imread('test_pattern.tif');
subplot(2,2,1);imshow(I),title('原图');
BW1=edge(I,'roberts');
二值形态学
I(x,y), T(i,j)为0/1图像
腐蚀:
膨胀:
灰度形态学T(i,j)可取 以外的值
腐蚀:
膨胀:
1.腐蚀Erosion:
删两边 删右上
图5-1 剥去一层(皮)
2.膨胀Dilation:
补两边 补左下
图5-2 添上一层(漆)
3.开运算open:
4.闭close:
5.HMT(Hit-Miss Transform:击中——击不中变换)
将NHOOD构造成你设定的矩阵;如将NHOOD写在[1 1 1;1 1 1; 1 1 1]
SE = strel('diamond',R)
构造一个中心具有菱形结构的结构元素,R为跟中心点的距离

实验三 图像形态学处理

实验三  图像形态学处理

实验三图像形态学处理一.实验目的及要求1.利用MATLAB研究二值形态学图像处理常用算法;2.掌握MATLAB形态学图像处理基本操作函数的使用方法;3.了了解形态学的基本应用。

二、实验内容(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。

熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

1.膨胀与腐蚀(Dilation and Erosion)(1)对简单二值图像进行膨胀与腐蚀clear all, close allBW = zeros(9,10);BW(4:6,4:7) = 1;BWSE = strel('square',3)BW1 = imdilate(BW,SE)BW2 = imerode (BW,SE)figure(1),subplot(1,2,1), imshow(BW), title(' Original Image ');subplot(1,2,2), imshow(BW1), title(' Dilated Image ');figure(2),subplot(1,2,1), imshow(BW), title(' Original Image ');subplot(1,2,2), imshow(BW2), title(' Eroded Image ');修改参数:clear all, close allBW = zeros(9,10);BW(4:8,4:8) = 1;BWSE = strel('square',3)BW1 = imdilate(BW,SE)BW2 = imerode (BW,SE)figure(1),subplot(1,2,1), imshow(BW), title(' Original Image ');subplot(1,2,2), imshow(BW1), title(' Dilated Image ');figure(2),subplot(1,2,1), imshow(BW), title(' Original Image ');subplot(1,2,2), imshow(BW2), title(' Eroded Image ');(2)对文本图像进行膨胀与腐蚀clear all, close allI = imread('C:\Users\Administrator\Desktop\broken_text.tif'); SE = [0,1,0;1,1,1;0,1,0]BW1 = imdilate(I, SE);BW2 = imerode (I, SE);figure(1),subplot(1,2,1), imshow(I), title(' Original Image ');subplot(1,2,2), imshow(BW1), title(' Dilated Image ');figure(2),subplot(1,2,1), imshow(I), title(' Original Image ');subplot(1,2,2), imshow(BW2) , title(' Eroded Image ');修改参数:clear all, close allI = imread('C:\Users\Administrator\Desktop\broken_text.tif'); SE = [0,0,0;0,0,0;0,0,0]BW1 = imdilate(I, SE);BW2 = imerode (I, SE);figure(1),subplot(1,2,1), imshow(I), title(' Original Image '); subplot(1,2,2), imshow(BW1), title(' Dilated Image '); figure(2),subplot(1,2,1), imshow(I), title(' Original Image '); subplot(1,2,2), imshow(BW2) , title(' Eroded Image ');2. 开、闭运算(Open and Close)clear all, close allI = imread('cameraman.tif');bw = ~im2bw(I,graythresh(I));se = strel('disk',5);bw2 = imopen(bw,se);subplot(1,2,1), imshow(bw), title('Thresholded Image')subplot(1,2,2), imshow(bw2), title('After opening')bw3 = imclose(bw,se);figure;subplot(1,2,1), imshow(bw), title('Thresholded Image')subplot(1,2,2), imshow(bw3), title('After Closing')修改参数:clear all, close allI = imread('cameraman.tif');bw = ~im2bw(I,graythresh(I));se = strel('disk',8);bw2 = imopen(bw,se);subplot(1,2,1), imshow(bw), title('Thresholded Image')subplot(1,2,2), imshow(bw2), title('After opening')bw3 = imclose(bw,se);figure;subplot(1,2,1), imshow(bw), title('Thresholded Image')subplot(1,2,2), imshow(bw3), title('After Closing')3. 击中/击不中变换(hit-and-miss operation)clear all, close allbw = [0 0 0 0 0 00 0 1 1 0 00 1 1 1 1 00 1 1 1 1 00 0 1 1 0 00 0 1 0 0 0]interval = [0 -1 -11 1 -10 1 0]bw2 = bwhitmiss(bw,interval)subplot(1,3,1), imshow(bw), title(' Original Image ');subplot(1,3,2), imshow(interval), title(' Interval Image ');subplot(1,3,3), imshow(bw2) , title('after hit/miss transformation');修改参数:clear all, close allbw = [0 0 0 0 0 00 0 1 1 0 00 1 1 1 1 00 1 1 1 1 00 0 1 1 0 00 0 1 0 0 0]interval = [0 0 00 1 00 1 0]bw2 = bwhitmiss(bw,interval)subplot(1,3,1), imshow(bw), title(' Original Image ');subplot(1,3,2), imshow(interval), title(' Interval Image ');subplot(1,3,3), imshow(bw2) , title('after hit/miss transformation')4.细化与骨架抽取clear all, close allBW = ~ imread('logo.tif');BW1 = bwmorph(BW,'thin',Inf);BW2 = bwmorph(BW,'skel',Inf);subplot(1,3,1), imshow(BW), title(' Original Image ');subplot(1,3,2), imshow(BW1), title(' Thinned Image ');subplot(1,3,3), imshow(BW2), title(' Image skeleton');help bwmorph(二)用MATLAB二值数学形态学函数编程提取’rice.gif’图像中的物体边界。

数字图像三、四实验报告

数字图像三、四实验报告
数学与计算科学学院 实 验 报 告
实验项目名称 所属课程名称 实 验 类 型 实 验 日 期 图像的平滑和锐化 数字图像处理 验证型实验 2011.10.19
班 学 姓 成
级 号 名 绩
xxxxx xxxxxxx xxxxxxx
一、实验概述: 实验概述: 【实验目的】 1. 掌握常见的图像噪声种类。 2. 掌握图像的线性滤波和中值滤波的处理。 3. 掌握用梯度算子和拉式算子对图像进行锐化。 实验原理】 【实验原理】 MATLAB 对图像的处理提供了很多方便, 本实验就是调用相应的图像处理函数编写 出正确可行的程序并经过调试和运行来完成了实验的要求。 实验环境】 【实验环境】 MATLAB 7.4.0 实验内容: 二、实验内容: 实验方案】 【实验方案】 首先要明确实验要求我们实现的图像处理的效果, 然后查找正确的图像处理函数 并编写程序,最后完成程序的调试和验证。 实验过程】 实验步骤、记录、数据、分析) (实验步骤 【实验过程】 实验步骤、记录、数据、分析) ( 1. 对图像 lena512.bmp 分别叠加零均值高斯噪声、椒盐噪声和乘性噪声,利用线 性滤波法和中值滤波法对图像进行滤波,显示叠加噪声前后的图像和滤波后的 图像,比较滤波效果 2. 利用二个低通邻域平均模板(3×3 和 9×9)对图像 lena512.bmp 进行平滑,验 证模板尺寸对图象的模糊效果的影响 3. 利用一个低通模板对一幅有噪图像 lena512.bmp(GAUSS 白噪声)进行滤波,检 验两种滤波模板(分别使用一个 5×5 的线性邻域平均模板和一个非线性模 板:3×5 中值滤波器)对噪声的滤波效果。 4. 选择一个经过低通滤波器滤波的模糊图象,利用 sobel 和 prewitt 水平边缘增 强高通滤波器(模板)对其进行高通滤波图象边缘增强,验证模板的滤波效果。 实验结论 (结果) 结论】 【实验结论】 结果) 的实验结果: (1) 的实验结果: 1(如下图) Figure 1(如下图):
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一实验目的
1.了解图像变换的意义和手段;
2.熟悉傅立叶变换的基本性质;
3.熟练掌握FFT变换方法及应用;
4.通过实验了解二维频谱的分布特点;
5.通过本实验掌握利用MATLAB编程实现数字图像的傅立叶变换。

6.评价人眼对图像幅频特性和相频特性的敏感度。

二实验要求
(一)请按以下操作步骤完成实验内容:
1.将图像内容读入内存;
2.用Fourier变换算法,对图像作二维Fourier变换;
3.将其幅度谱进行搬移,在图像中心显示;
4.用Fourier系数的幅度进行Fourier反变换;
5.用Fourier系数的相位进行Fourier反变换;
6.将原图像分别旋转45度和90度后重复步骤2-5
7.比较4、5的结果,评价人眼对图像幅频特性和相频特性的敏感度。

8.记录和整理实验报告。

(二)实验拓展
独立完成以下实验:创建一副图像,大小为 128*128,背景为黑色,中间开出一个 8×8 白色的窗口;运用 ff2 函数,对上面产生的图像做二维离散傅立叶变换。

将图像旋转45度后重复一次实验。

(此附加操作不用另写实验报告只把操作原始图和频谱图粘贴到上面实验报告的最后面就可以。


(三)完成后请整理实验报告,实验报告要求如下:
在实验报告中写出实验目的实验原理,描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果和源代码,并进行必要的讨论,必须包括原始图像及其计算/处理后的图像。

三实验器材
1.计算机(windows10);
2.MATLAB 程序;
3.移动式存储器
4.记录用的笔、纸。

四 实验原理
1 应用傅立叶变换进行图像处理
傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。

通过实验培养这项技能,将有助于解决大多数图像处理问题。

对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。

2 傅立叶(Fourier )变换的定义
对于二维信号,二维Fourier 变换定义为:
2()(,)(,)j ux uy F u v f x y e dxdy π∞∞
−+−∞−∞=
⎰⎰
逆变换: 2()(,)(,)j ux uy f x y F u v e dudv π∞∞
+−∞−∞=
⎰⎰
二维离散傅立叶变换为: 11
2()00
1(,)(,)i k N N j m n N N i k F m n f i k e N π−−−+===∑∑ 逆变换:
112()001(,)(,)i k N N j m n N N m n f i k F m n e N π−−+===∑∑
图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法,具体参见参考书目,有关傅立叶变换的快速算法的程序不难找到。

实际上,现在有实现傅立叶变换的芯片,可以实时实现傅立叶变换。

五 实验步骤
1.下载实验图片,利用PS 将所下载图片格式转为tif ;
2.利用imread ()函数读入原图像.tif 格式;
3.利用傅里叶变换函数,对图像进行傅里叶变换;
4.利用fftshift()函数将其幅度谱进行搬移,将变换后的图像频谱中心从矩阵的原点移到矩阵的中心,在图像中心显示;
5.用Fourier系数的幅度进行Fourier反变换;
6.用Fourier系数的相位进行Fourier反变换;
7.利用imrotate()函数将原图像分别旋转45度和90度后重复步骤2-6
8.比较4、5的结果,评价人眼对图像幅频特性和相频特性的敏感度。

8.记录和整理实验报告。

六实验代码
%原图像
N=imread('number.tif'); %将图像内容读入内存
subplot(2,2,1);
imshow(N); %显示原图像
title('原图像');
fftN=fft2(N); %二维离散傅里叶变换
sfftN=fftshift(fftN); %直流分量移到频谱
RR=real(sfftN); %取傅里叶变换的实部
II=imag(sfftN); %取傅里叶变换的虚部
A=sqrt(RR.^2+II.^2); %计算频谱幅值
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225
%归一化
subplot(2,2,2);
imshow(A); %显示原图像的频谱
title('原图像频谱');
f1=ifft2(A); %用傅里叶系数的幅度进行傅里叶反变换
f2=ifft2(angle(fftN)); %用相位进行傅里叶反变换
subplot(2,2,3);
imshow(f1,[]);
title('幅度进行傅里叶反变换');
subplot(2,2,4);
imshow(f2,[]);
title('相位进行傅里叶反变换')
%旋转45度
M=imread('number.tif'); %将图像内容读入内存
N=imrotate(M,315); %将原图像顺时针旋转45度subplot(2,2,1);
imshow(N); %显示原图像
title('旋转45度图像');
fftN=fft2(N); %二维离散傅里叶变换sfftN=fftshift(fftN); %直流分量移到频谱
RR=real(sfftN); %取傅里叶变换的实部
II=imag(sfftN); %取傅里叶变换的虚部
A=sqrt(RR.^2+II.^2); %计算频谱幅值
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225 %归一化
subplot(2,2,2);
imshow(A); %显示原图像的频谱
title('旋转45度后图像频谱');
f1=ifft2(A); %用傅里叶系数的幅度进行傅里叶反变换f2=ifft2(angle(fftN)); %用相位进行傅里叶反变换subplot(2,2,3);
imshow(f1,[]);
title('幅度进行傅里叶反变换');
subplot(2,2,4);
imshow(f2,[]);
title('相位进行傅里叶反变换')
%旋转90度
M=imread('number.tif'); %将图像内容读入内存
N=imrotate(M,270); %将原图像顺时针旋转90度subplot(2,2,1);
imshow(N); %显示原图像
title('旋转90度图像');
fftN=fft2(N); %二维离散傅里叶变换sfftN=fftshift(fftN); %直流分量移到频谱
RR=real(sfftN); %取傅里叶变换的实部
II=imag(sfftN); %取傅里叶变换的虚部
A=sqrt(RR.^2+II.^2); %计算频谱幅值
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225 %归一化
subplot(2,2,2);
imshow(A); %显示原图像的频谱
title('旋转90度后图像频谱');
f1=ifft2(A); %用傅里叶系数的幅度进行傅里叶反变换f2=ifft2(angle(fftN)); %用相位进行傅里叶反变换subplot(2,2,3);
imshow(f1,[]);
title('幅度进行傅里叶反变换');
subplot(2,2,4);
imshow(f2,[]);
title('相位进行傅里叶反变换')
七实验结果
1.原图像
2.旋转45度后
3.旋转90度后
八实验反思
1.fft2()函数将二维数据变换为频率空间
函数的一种调用格式为y=fft(x),其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT。

且和x相同长度。

若x为一矩阵,则y是对矩阵的每一列向量进行FFT。

经函数fft求得的序列y一般是复序列,通常要求其幅值和相位。

MATLAB提供求复数的幅值和相位函数:abs(),angle(),这些函数一般和FFT同时使用。

2. fftshift()函数将其幅度谱进行搬移,将变换后的图像频谱中心从矩阵的原点移到矩阵的中心
Fftshift()函数的作用为:将零频点移到频谱的中间。

其用法为:
Y=fftshift(X)
Y=fftshift(X,dim)
Fftshift()函数移动零频点到频谱中间,重新排列fft2()函数的输出结果。

将零频点放到频谱的中间对于观察傅立叶变换是有用的。

3.ifft()函数实现傅里叶的逆变换
MATLAB中,对向量(或直接对矩阵的行或列)进行离散傅立叶逆变换的函数的调用方法是:
X = ifft2(Y)
使用快速傅里叶变换算法返回矩阵的二维离散傅里叶逆变换。

如果 Y 是一个多
维数组,则 ifft2 计算大于 2 的每个维度的二维逆变换。

输出 X 的大小与 Y 相同。

相关文档
最新文档