数字图像处理实验报告实验三
数字图像处理实验三中值滤波和均值滤波实验报告
数字图像处理实验三均值滤波、中值滤波的计算机实现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、实验⽬的1)熟悉常⽤的图像⽂件格式与格式转换;2)熟悉图像矩阵的显⽰⽅法(灰度、索引、⿊⽩、彩⾊);3)熟悉图像矩阵的格式转换2、实验内容练习图像读写命令imread和imwrite并进⾏图像⽂件格式间的转换。
特别是索引图像与1,4,8,16⽐特图像的存储与转换。
3、实验步骤a.⽤图像读命令(imread)从你的硬盘中读取图像(cameramen.tif);b.⽤图像显⽰功能(imshow)将刚读⼊的图像显⽰在⼀图像窗中;c.显⽰颜⾊条功能(colorbar)在图像的左边画⼀条颜⾊亮度显⽰条;d.⽤(imfinfo)功能得到(gray.bmp)图像的相关信息;e.⽤(colormap )获取当前图像的调⾊板,观察调⾊板中的颜⾊设置;f.⽤(getimage)功能从坐标轴取得当前图像数据;g.⽤(imagesc)功能显⽰图像从64-128的灰度值;h. ⽤(immovie)功能将⼀个4-D 图像创建多帧索引图的电影动画;i. ⽤(warp)功能将图像('testpat1.tif)显⽰到纹理映射柱⾯;思考:怎样让(cameraman.tif)图像如下图⼀样显⽰?四.实验结果及代码a.代码:>>X=imread(‘cameraman.tif’)b.代码:>>y=imshow(X)显⽰的图像为:c、代码:>>I = colorbar('cameraman.tif')H=imshow('cameraman.tif')显⽰的图像为d、代码:>>info=imfinfo(‘gray.bmp')显⽰结果为:Filename: [1x71 char]FileModDate: '16-Apr-2010 11:23:52'FileSize: 107786Format: 'bmp'FormatV ersion: 'V ersion 3 (Microsoft Windows 3.x)' Width: 409Height: 259BitDepth: 8ColorType: 'indexed'FormatSignature: 'BM'NumColormapEntries: 256Colormap: [256x3 double]RedMask: []GreenMask: []BlueMask: []ImageDataOffset: 1078BitmapHeaderSize: 40NumPlanes: 1CompressionType: 'none'BitmapSize: 106708HorzResolution: 0V ertResolution: 0NumColorsUsed: 0NumImportantColors: 0e、代码:>>x=imread(‘256.bmp’)color1=colormap %获取当前图象的调⾊板image (x)info=imfinfo(’256.bmp’)color2=info.Colormap %注意观察调⾊板有多少种颜⾊colormap(color2)f、代码:>>I=getimageg、代码:>> imagesc(x,[64 128])h、代码:>> load mri;mov = immovie(D,map); movie(mov,3)显⽰图像为:i.源代码:>>[x,y,z]=cylinder;I= imread('testpat1.tif');warp(x,y,z,I),图像显⽰为:思考:代码:>>X=inread('cameramen.tif'); Y=[X X];[x,-y,z]=cylinder;I=imread(Y);warp(x,y,z,I)显⽰图像为:实验⼆、图像增强⼀、实验⽬的1.理解图像直⽅图的含义;2.了解直⽅图的应⽤;3.掌握直⽅图均衡化的实现⽅法。
实验三_数字图像处理空域滤波
实验三空域滤波一实验目的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选取的越大,模糊越严重。
数字图像处理实验报告
数字图像处理实验报告光信13-2班2013210191韩照夏数字图像处理实验报告实验一数字图像空间域平滑一、实验目的掌握图像空间域平滑的原理和程序设计;观察对图像进行平滑增强的效果。
二、实验设备计算机,Matlab程序平台。
三、实验原理图像平滑处理的目的是改善图像质量和抽出对象特征。
任何一幅未经处理的原始图像,都存在着一定程度的噪声干扰。
噪声恶化了图像质量,使图像模糊,甚至淹没特征,给分析带来困难。
消除图像噪声的工作称为图像平滑或滤波。
针对不同噪声源(如光栅扫描、底片颗粒、机械元件、信道传输等)引起的不同种类噪声(如加性噪声、乘性噪声、量化噪声等),平滑方法也不同。
平滑可以在空间域进行,也可以在频率域进行。
1.局部平均法局部平滑法是一种直接在空间域上进行平滑处理的技术。
假设图像由许多灰度恒定的小块组成,相邻象素间存在很高的空间相关性,而噪声则是统计独立的。
因此,可用邻域内各象素的灰度平均值代替该象素原来的灰度值,实现图像的平滑。
对图像采用3×3的邻域平均法,其作用相当于用以下模板与图像进行卷积运算。
2. 超限象素平滑法 对邻域平均法稍加改进,可导出超限象素平滑法。
其原理是将f(x,y)和邻域平均g(x,y)差的绝对值与选定的阈值进行比较,根据比较结果决定点(x,y )的最后灰度g ´(x,y)。
其表达式为3. 二维中值滤波中值滤波就是用一个奇数点的移动窗口, 将窗口中心点的值用窗口内各点的中值代替。
二维中值滤波可由下式表示常用的窗口有:四、实验步骤1.实验准备:打开计算机,进入Matlab 程序界面。
2.输入图像空间域平滑处理程序,程序如下:⎩⎨⎧>-= ),(),(),( ),,(),('其他,当y x f T y x g y x f y x g y x g )},({),(y x f Med y x g A=程序1.1 图像平滑处理clear;clc;I=imread('lena.jpg');subplot(3,2,1);imshow(I);title('原图像');I1=imnoise(I,'salt & pepper',0.02);subplot(3,2,2);imshow(I1);title('对I加椒盐噪声的图像');h2=fspecial('average',[3 3]);I2=imfilter(I1,h2,'replicate');subplot(3,2,3);imshow(I2);title('3×3邻域平滑');h3=fspecial('average',[5 5]);I3=imfilter(I1,h3,'replicate');subplot(3,2,4);imshow(I3);title('5×5邻域平滑');I4=I1;I4((abs(I1-I2))>64)=I2((abs(I1-I2))>64);subplot(3,2,5);imshow(I4);title('3×3超限象素平滑(T=64)'); I5=I1;I5((abs(I1-I3))>48)=I3((abs(I1-I3))>48);subplot(3,2,6);imshow(I5);title('5×5超限象素平滑(T=48)');程序1.2 图像平均平滑与中值滤波clear;clc;I=imread('lena.jpg');subplot(3,3,1);imshow(I);title('原图像');I1=imnoise(I,'gaussian',0.02);subplot(3,3,2);imshow(I1);title('高斯噪声');I2=imnoise(I,'salt & pepper',0.02);subplot(3,3,3);imshow(I1);title('椒盐噪声');h1=fspecial('average',[3 3]);I3=imfilter(I1,h1,'replicate');subplot(3,3,4);imshow(I3);title('对I1 3×3邻域平滑');h2=fspecial('average',[3 3]);I4=imfilter(I2,h2,'replicate');subplot(3,3,5);imshow(I4);title('对I2 3×3邻域平滑');I5=medfilt2(I1,[5 5]);subplot(3,3,6);imshow(I5);title('对I1 5×5中值滤波');I6=medfilt2(I2,[5 5]);subplot(3,3,7);imshow(I6);title('对I2 5×5中值滤波');3.运行图像处理程序,并保存处理结果图像。
数字图像处理上机实验三
医学图像处理实验三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)锐化:锐化的目的是增强被模糊的细节。
锐化是用高通滤波器来完成,在空域中,接近原点处为正,在远离原点处为负。
二.实验内容:(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’,表示输出图像与输入图像的大小相同。
数字图像处理实验报告之数字图像的空间域滤波
数字图像处理实验报告学院:班级:学号:时间:2012.11.29实验三:数字图像的空间域滤波——锐化滤波1.实验目的1.掌握图像滤波的基本定义及目的。
2.理解空间域滤波的基本原理及方法。
3.掌握进行图像的空域滤波的方法。
2.实验基本原理1.空间域增强空间域滤波是在图像空间中借助模板对图像进行领域操作,处理图像每一个像素的取值都是根据模板对输入像素相应领域内的像素值进行计算得到的。
空域滤波基本上是让图像在频域空间内某个范围的分量受到抑制,同时保证其他分量不变,从而改变输出图像的频率分布,达到增强图像的目的。
空域滤波一般分为线性滤波和非线性滤波两类。
线性滤波器的设计常基于对傅立叶变换的分析,非线性空域滤波器则一般直接对领域进行操作。
各种空域滤波器根据功能主要分为平滑滤波器和锐化滤波器。
平滑可用低通来实现,平滑的目的可分为两类:一类是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小肩端连接起来;另一类是消除噪声。
锐化可用高通滤波来实现,锐化的目的是为了增强被模糊的细节。
结合这两种分类方法,可将空间滤波增强分为四类:线性平滑滤波器(低通)非线性平滑滤波器(低通)线性锐化滤波器(高通)非线性锐化滤波器(高通)空间滤波器都是基于模板卷积,其主要工作步骤是:1)将模板在图中移动,并将模板中心与图中某个像素位置重合;2)将模板上的系数与模板下对应的像素相乘;3)将所有乘积相加;4)将和(模板的输出响应)赋给图中对应模板中心位置的像素。
2.锐化滤波器图像平滑往往使图像中的边界、轮廓变得模糊,为了减少这类不利效果的影响,需要利用图像锐化技术,使图像的边缘变得清晰。
1)线性锐化滤波器线性高通滤波器是最常用的线性锐化滤波器。
这种滤波器的中心系数都是正的,而周围的系数都是负的,所有的系数之和为0。
对3×3 的模板来说,典型的系数取值为:[-1 -1 -1;-1 8 -1;-1 -1 -1]事实上这是拉普拉斯算子。
数字图像处理实验报告(三四五)
实验三图像的几何变换一.实验目的及要求掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其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函数的使用方法。
数字图像处理实验报告(五个实验全)
数字图像处理实验报告(五个实验全)实验⼀ 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、对⼀幅图像进⾏旋转,显⽰原始图像与处理后图像,分别对其进⾏傅⾥叶变换,显⽰变换后结果,分析原图的傅⾥叶谱与旋转后傅⾥叶频谱的对应关系。
matlab 数字图像处理实验报告(五份)
《数字图像处理实验报告》实验一图像的增强一.实验目的1.熟悉图像在MATLAB下的读写、输出;2.熟悉直方图;3.熟悉图像的线性指数等;4.熟悉图像的算术运算和几何变换。
二.实验仪器计算机、MATLAB软件三.实验原理图像增强是指根据特定的需要突出图像中的重要信息,同时减弱或去除不需要的信息。
从不同的途径获取的图像,通过进行适当的增强处理,可以将原本模糊不清甚至根本无法分辨的原始图像处理成清晰的富含大量有用信息的可使用图像。
其基本原理是:对一幅图像的灰度直方图,经过一定的变换之后,使其成为均匀或基本均匀的,即使得分布在每一个灰度等级上的像素个数.f=H等或基本相等。
此方法是典刑的图像空间域技术处理,但是由于灰度直方图只是近似的概率密度函数,因此,当用离散的灰度等级做变换时,很难得到完全平坦均匀的结果。
频率域增强技术频率域增强是首先将图像从空间与变换到频域,然后进行各种各样的处理,再将所得到的结果进行反变换,从而达到图像处理的目的。
常用的变换方法有傅里叶变换、DCT变换、沃尔什-哈达玛变换、小波变换等。
假定原图像为f(x,y),经傅立叶变换为F(u,v)。
频率域增强就是选择合适的滤波器H(u,v)对F(u,v)的频谱成分进行处理,然后经逆傅立叶变换得到增强的图像。
四.实验内容及步骤1.图像在MATLAB下的读写、输出;实验过程:>> I = imread('F:\image\624baf9dbcc4910a.jpg');figure;imshow(I);title('Original Image');text(size(I,2),size(I,1)+15, ...'IMG_20170929_130307.jpg', ...'FontSize',7,'HorizontalAlignment','right');Warning: Image is too big to fit on screen; displaying at 25% > In imuitools\private\initSize at 86In imshow at 196Original Image2.给定函数的累积直方图。
数字图像处理实验报告实验三
代码:
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)
构造一个正方形的矩阵。
数字图像处理实验报告
数字图像处理实验报告实验一数字图像的获取一、实验目的1、了解图像的实际获取过程。
2、巩固图像空间分辨率和灰度级分辨率、邻域等重要概念。
3、熟练掌握图像读、写、显示、类型转换等matlab函数的用法。
二、实验内容1、读取一幅彩色图像,将该彩色图像转化为灰度图像,再将灰度图像转化为索引图像并显示所有图像。
2、编程实现空间分辨率变化的效果。
三、实验原理1、图像读、写、显示I=imread(‘image.jpg’)Imview(I)Imshow(I)Imwrite(I,’wodeimage.jpg’)2、图像类型转换I=mat2gray(A,[amin,amax]);按指定的取值区间[amin,amax]将数据矩阵A转化为灰度图像I,amin对应灰度0,amax对应1,也可以不指定该区间。
[x,map]=gray2ind(I,n);按指定的灰度级n将灰度图像转化为索引图像,n默认为64I=ind2gray(x,map);索引图像转化为灰度图像I=grb2gray(RGB);真彩色图像转化为灰度图像[x,map]=rgb2ind(RGB);真彩色图像转化为索引图像RGB=ind2rgb(x,map);索引图像转化为真彩色图像BW=im2bw(I,level);将灰度图像转化为二值图像,level取值在[0,1]之间BW=im2bw(x,map,level);将索引图像转化为二值图像,level取值在[0,1]之间BW=im2bw(RGB,level);将真彩色图像转化为二值图像,level取值在[0,1]之间四、实验代码及结果1、in=imread('peppers.png');i=rgb2gray(in);[x,map]=gray2ind(i,128);subplot(131),imshow(in)subplot(132),imshow(i)subplot(133),imshow(x),colormap(map)2、%空间分辨率变化的效果clc,close all,cleari=imread('cameraman.tif');i=imresize(i,[256,256]);i1=i(1:2:end,1:2:end);[m1,n1]=size(i)i2=i1(1:2:end,1:2:end);[m2,n2]=size(i2)i3=i2(1:2:end,1:2:end);[m3,n3]=size(i3)subplot(221),imshow(i),xlabel('256x256')subplot(222),imshow(i1),xlabel('128x128')subplot(223),imshow(i2),xlabel('64x64')subplot(224),imshow(i3),xlabel('32x32')256 x 256128 x 12864 x 6432 x 32实验二图像的几何变换一、实验目的掌握图像的基本几何变换的方法1、图像的平移2、图像的旋转二、实验内容练习用matalb 命令实现图像的平移、旋转操作1、.编写实现图像平移的函数2、用imread 命令从你的硬盘读取一幅256×256灰度图;3、调用平移函数,将256×256灰度图平移100行200列,在同一个窗口中显示平移前和平移后的图像。
数字图像处理实验报告
数字图像处理实验报告引言数字图像处理是一门研究如何对图像进行数字化处理的学科,它的应用广泛,涵盖了图像的获取、增强、压缩、分割等多个方面。
本次实验旨在探索数字图像处理的基本原理和常用技术,并通过实践操作加深对数字图像处理的理解。
实验目的1.学习掌握数字图像处理的基本原理;2.熟悉常用的数字图像处理工具和方法;3.实践应用数字图像处理技术解决实际问题。
实验环境在本次实验中,我们使用了以下环境和工具:- 操作系统:Windows 10 - 编程语言:Python - 图像处理库:OpenCV实验步骤步骤一:图像获取与显示首先,我们需要获取一张待处理的图像,并对其进行显示。
在Python中,我们可以使用OpenCV库来实现图像的读取和显示。
以下是示例代码:import cv2# 读取图像image = cv2.imread('image.jpg')# 显示图像cv2.imshow('Image', image)cv2.waitKey(0)cv2.destroyAllWindows()步骤二:图像增强图像增强是数字图像处理中常用的技术之一,旨在改善图像的质量和可视化效果。
常见的图像增强技术包括灰度转换、直方图均衡化、滤波器等。
以下是示例代码:import cv2# 读取图像image = cv2.imread('image.jpg')# 灰度转换gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GR AY)# 直方图均衡化equalized_image = cv2.equalizeHist(gray_image)# 高斯滤波器blurred_image = cv2.GaussianBlur(equalized_image, (5, 5), 0)# 边缘增强enhanced_image = cv2.Canny(blurred_image, 100, 20 0)# 显示图像cv2.imshow('Enhanced Image', enhanced_image)cv2.waitKey(0)cv2.destroyAllWindows()步骤三:图像压缩图像压缩是数字图像处理中的重要话题,旨在减少图像的存储空间和传输带宽。
数字图像处理实验程序3傅里叶变换,小波变换
数字图像处理实验报告班级:11研信息1班**: ***学号:***********实验三图像的傅立叶变换一、实验目的1.了解图像变换的意义和手段;2.熟悉傅里叶变换的基本性质;3.熟练掌握FFT的方法及应用;4.通过实验了解二维频谱的分布特点;5.通过本实验掌握编程实现数字图像的傅立叶变换。
二、实验原理1.应用傅立叶变换进行图像处理傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。
通过实验培养这项技能,将有助于解决大多数图像处理问题。
对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。
2.傅立叶(Fourier)变换的定义对于二维信号,二维连续Fourier变换定义为:二维离散傅立叶变换为:图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法,具体参见参考书目,有关傅立叶变换的快速算法的程序不难找到。
实际上,现在有实现傅立叶变换的芯片,可以实时实现傅立叶变换。
三,实验内容1.根据二维离散Fourier变换的定义编写程序2.实现图象的变换3.画出图象的频谱图。
实验图像:任选四,实验要求1、实验之前要预习2、独立完成程序的编写3、写出实验报告。
4、实验每组1人五,实验程序及实验结果分析1.数字图像处理的傅里叶变换实验的程序代码:clear allclose allA=imread('xingyueye.jpg');%读入并且显示出一个图像文件subplot(1,2,1);imshow(A);title('原始的图像');%显示原始图像作为对照if length(size(A))==3A=rgb2gray(A);endsubplot(1,2,2);imshow(A);title('灰度图像');%对灰度图像进行傅里叶变换并输出频谱A2=fft2(A);A2=fftshift(A2);%将图像进行二维傅里叶变换figure,imshow(log(abs(A2)+1),[0,12]);%显示傅里叶变换后的图像title('傅里叶变换后的图像');下面是实验用的原图像: tangwei.jpg下面是实验的matlab运行结果图:(灰度处理)下面是实验的matlab运行结果图:(傅里叶图像变换)下面是实验用的原图像: fengjing.jpg下面是实验的matlab运行结果图:(灰度处理)下面是实验的matlab运行结果图:(傅里叶图像变换) 六,思考题1.傅里叶变换有哪些重要的性质? 答:①线性性,②对称性,③折叠型,④尺度变换性,⑤时移性,⑥频移性,⑦时域微分性,2.图像的二维频谱在显示和处理时应注意什么?答:我在做实验的时候,把彩色图像用傅里叶变换后发现出不了结果,但是黑白图像或者彩色图像经过灰度处理就出来了图像,这些细节要在以后的实验中多多注意。
数字图像处理实验三
数字图像处理—实验三一.实验内容:⑴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数字图像处理初步一、显示图像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显示出来观察图像的特征。
数字图像处理实验报告实验三
构造一个正方形的矩阵。
计算二值图像面积
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为跟中心点的距离
数字图像处理实验报告
数字图像处理实验报告数字图像处理实验报告第一章总论数字图像处理是计算机图形学、数字信号处理等学科交叉的一门学科。
它是基于数字计算机对图像信号进行数字处理的一种方法。
数字图像处理技术已广泛应用于医学影像诊断、遥感图像处理、图像识别、安防监控等领域,在当今社会中具有不可替代的重要作用。
本次实验主要介绍了数字图像处理的基本方法,包括图像采集、图像增强、图像恢复、图像分割、图像压缩等几个方面。
在实验过程中,我们采用了一些常用的数字图像处理方法,并通过 Matlab 图像处理工具箱进行实现和验证。
第二章实验过程2.1 图像采集在数字图像处理中,图像采集是一个重要的步骤。
采集到的图像质量直接影响到后续处理结果的准确性。
本次实验使用的图像是一张 TIF 格式的彩色图像,通过 Matlab 读取图像文件并显示,代码如下:```Matlabim = imread('test.tif');imshow(im);```执行代码后,可以得到如下图所示的图像:![image_1.png](./images/image_1.png)2.2 图像增强图像增强是指利用某些方法使图像具有更好的视觉效果或者变得更适合某种应用。
本次实验我们主要采用直方图均衡化、灰度变换等方法进行图像增强。
2.2.1 直方图均衡化直方图均衡化是一种常用的增强方法,它可以增加图像的对比度和亮度,使图像更加清晰。
代码实现如下:```Matlabim_eq = histeq(im);imshow(im_eq);```执行代码后,会得到直方图均衡化后的图像,如下图所示:![image_2.png](./images/image_2.png)可以看出,经过直方图均衡化处理后,图像的对比度和亮度得到了明显提高。
2.2.2 灰度变换灰度变换是一种用于调整图像灰度级别的方法。
通过变换某些像素的灰度级别,可以增强图像的视觉效果。
本次实验我们采用对数变换和幂函数变换两种方法进行灰度变换。
数字图像处理之图像复原实验报告
实验三图像复原1. 实验目的熟悉数字图像边缘检测与形态学变换的一般方法2. 实验内容1)练习边缘检测的Matlab命令。
2)练习形态学变换的Matlab命令。
熟悉下列模块函数edgefspecialbwselectbwmorphdilateimnoisebwperim2) 在VC环境下利用例程了解和熟悉数字图像复原的方法。
熟悉例程提供的图像复原菜单下的子菜单3.实验程序1、rice.tif的边缘检测I = imread('rice.tif');BW1 = edge(I,'prewitt'); BW2 = edge(I,'sobel'); BW3 = edge(I,'canny');subplot(2,2,1),imshow(BW1) subplot(2,2,2),imshow(BW2) subplot(2,2,3), imshow(BW3) 2、加入高斯燥声的边缘检测I=imread('rice.tif');J=imnoise(I,'gaussian',0,0.02); subplot(2,2,1),imshow(I);subplot(2,2,2),imshow(J);BW1 = edge(J,'prewitt');BW2 = edge(J,'sobel');BW3 = edge(J,'canny');figure,imshow(BW1)figure,imshow(BW2)figure, imshow(BW3)3、原图高斯燥声椒盐燥声I=imread('rice.tif');J1=imnoise(I,'gaussian',0,0.02);J2=imnoise(I,'salt & pepper',0.02); subplot(2,2,1),imshow(I);subplot(2,2,2),imshow(J1);subplot(2,2,3),imshow(J2)2、加入椒盐燥声的边缘检测I=imread('rice.tif');J=imnoise(I,'salt & pepper',0.02); subplot(2,2,1),imshow(I);subplot(2,2,2),imshow(J);BW1 = edge(J,'prewitt');BW2 = edge(J,'sobel');BW3 = edge(J,'canny');figure,imshow(BW1)figure,imshow(BW2)figure, imshow(BW3)4.实验结果rice.tif的边缘检测原图高斯燥声椒盐燥声加入高斯燥声的边缘检测加入椒盐燥声的边缘检测5.实验总结通过这次实验,学习了MATLAB命令,在VC环境下利用例程了解和熟悉数字图像边缘检测与形态学变换的方法。
中南大学数字图像处理实验报告
实验报告实验名称图像变换及频域滤波课程名称数字图像处理姓名成绩班级学号日期地点实验一 图像变换及频域滤波一.实验目的(1)编写快速傅里叶变换算法程序,验证二维傅里叶变换的平移性和旋转不变。
; (2)实现图像频域滤波,加深对频域图像增强的理解。
二.实验环境及开发工具Windws XP 、MATALAB7.0、Visual C++、Visual Basic 三.实验方法1.验证二维傅里叶变换的平移性和旋转不变性;a .要验证证其平移特性,就先建立一个二维图象,然后再对其平移,通过观察两者的频谱图来观察平移特性,为了方便起见,我们选择特殊情况来分析,令u0=v0=N/2,使),()1(),(12y x f y x f y x +-= F(u-N/2,v-N/2),达到将原始F(U,V)四周频谱移到中心的效果,及达到频谱中心化。
b .验证旋转不变性可以通过将原始数组的通过移动45度,然后再比较旋转后与旋转前的频谱,得出频谱旋转不变性的结论。
具体步骤:1)产生如图1所示图像),(1y x f (128×128大小,暗处=0,亮处=255) 2)同屏显示原图1f 和)(FFT 1f 的幅度谱图。
3)若令),()1(),(12y x f y x f y x +-=,重复以上过程,比较二者幅度谱的异同。
4)将),(2y x f 顺时针旋转45度得到),(3y x f ,显示)(FFT 3f 的幅度谱,并与)(FFT 2f 的幅度谱进行比较。
图1实验图象f 1(x , y )2.实现图像频域滤波,加深对频域图像增强的理解。
频率域中进行增强是相当直观的,主要步骤有:1)计算需要增强的图象的傅立叶变换;2)将其与一个(根据需要设计的)转移的函数相乘; 3)再将结果反傅立叶变换以得到增强的图象. 为了直观的展示频域增强,可以通过下面任务来展现:对如图2所示的数字图像lena.img (256×256大小、256级灰度)进行频域的理想低通、高通滤波,同屏显示原图、幅度谱图和低通、高通滤波的结果图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学数字图像处理实验报告实验三数学形态学及其应用实验三 数学形态学及其应用一.实验目的1.了解二值形态学的基本运算2.掌握基本形态学运算的实现3.了解形态操作的应用二.实验基本原理腐蚀和膨胀是数学形态学最基本的变换,数学形态学的应用几乎覆盖了图像处理的所有领域,给出利用数学形态学对二值图像处理的一些运算。
膨胀就是把连接成分的边界扩大一层的处理。
而收缩则是把连接成分的边界点去掉从而缩小一层的处理。
二值形态学I(x,y), T(i,j)为 0/1图像Θ腐蚀:[]),(&),(),)((),(0,j i T j y i x I AND y x T I y x E mj i ++=Θ== 膨胀:[]),(&),(),)((),(0,j i T j y i x I OR y x T I y x D m j i ++=⊕== 灰度形态学 T(i,j)可取10以外的值腐蚀:[]),(),(min ),)((),(1,0j i T j y i x I y x T I y x E m j i -++=Θ=-≤≤ 膨胀:[]),(),(max ),)((),(1,0j i T j y i x I y x T I y x D m j i +++=⊕=-≤≤ 1.腐蚀Erosion:{}x B x B X x ⊂=Θ:1B 删两边 2B 删右上 图5-1 剥去一层(皮) 2.膨胀Dilation:{}X B x B X x ↑⊕:=1B 补两边 2B 补左下图5-2 添上一层(漆)3.开运算open :B B X ⊕Θ=)(X B4.闭close :∨Θ⊕=B B X X B )(5.HMT(Hit-Miss Transform:击中——击不中变换)条件严格的模板匹配),(21T T T =模板由两部分组成。
1T :物体,2T :背景。
{}C x x i X T X T X T X ⊂⊂=⊗21,图5-3 击不中变换示意图 性质:(1)φ=2T 时,1T X T X Θ=⊗ (2))()()(21T X T X T X C Θ⋂Θ=⊗C T X T X )()(21Θ⋂Θ=)/()(21T X T X ΘΘ= 6.细化/粗化 (1)细化(Thin ) C T X X T X XoT )(/⊗⋂=⊗= 去掉满足匹配条件的点。
X2211123T ⨯⨯⨯⨯XoT X X ⊗T X X ⊗T X ΘT T ⊕图5-4 细化示意图 系统细化{}n B oB XoB T Xo ))(((21=, i B 是1-i B 旋转的结果(90︒,180︒,270︒)共8种情况适于细化的结构元素 1111000d d I = dd d L 101100=(2)粗化(Thick ))(T X X T X ⊗⋃=•用(){}0,01=T (){}0,12=T 时,X X X T X =⋃=•故要选择合适的结构元素,如(){}0,11-=T ,(){}0,02=T对偶性:()*T X T X C C =•(验证一下)where ),(*12T T T = when ),(21T T T =7. Morphology 小结A.通过物体(对象)和结构元素的相互作用,得到更本质的形态(shape )(1) 图像滤波(2) 平滑区域的边界(3) 将一定形状施加于区域边界(4) 描述和定义图像的各种几何参数和特征(区域数、面积、周长、连通度、颗粒度、骨架、边界)B.形态运算是并行运算C.细化区域或边界变为1个象素的宽度,但它不破坏连通性四方向细化算法:逻辑运算(可删除条件)形态运算是否可用于细化?(1)腐蚀:收缩(去掉边缘的点)何时结束?能否保证连通性?(2)开:去毛刺,能否细化(去掉尺寸小于结构元素的块)三.实验提示Matlab 中用imdilate 函数实现膨胀。
用法为:Imdilate(X,SE).其中X 是待处理的图像,SE 是结构元素对象。
例如:bw = imread('text.png');se = strel('line',11,90);bw2 = imdilate(bw,se);imshow(bw), title('Original')figure, imshow(bw2), title('Dilated')Matlab 用imerode 函数实现图像腐蚀。
用法为:Imerode(X,SE).其中X 是待处理的图像,SE 是结构元素对象。
如:I = imread('cameraman.tif');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为结构元素Matlab用imclosee函数实现图像闭运算。
用法为:imclose(I,se);I为图像源,se为结构元素结构元素的选取:strel函数SE = strel('arbitrary',NHOOD)将NHOOD构造成你设定的矩阵;如将NHOOD写在[1 1 1;1 1 1; 1 1 1] SE = strel('diamond',R)构造一个中心具有菱形结构的结构元素,R为跟中心点的距离SE = strel('rectangle',MN)构造一个矩形的结构元素,MN可写在[3 4],表示3行4列SE = strel('square',W)构造一个正方形的矩阵。
计算二值图像面积bwarea功能:计算二进制图像对象的面积。
语法:total = bwarea(BW)举例BW = imread('circles.png');imshow(BW);bwarea(BW)ans =15799bwmorph功能:提取二进制图像的轮廓。
语法:BW2 = bwmorph(BW1,operation)BW2 = bwmorph(BW1,operation,n)举例BW1 = imread('circles.png');imshow(BW1);BW2 = bwmorph(BW1,'remove');BW3 = bwmorph(BW1,'skel',Inf);imshow(BW2)figure, imshow(BW3)四.实验内容与要求1.设计程序实现对图5-5,实现去除图像中的噪声。
2.设计程序,实现将图5-6转化为二值图像,并计算图中鸡块中骨头的比重。
3.设计程序,实现去除图5-7中的矩形区域外的噪声,并填充矩形区域内部了。
提示:做题是把下面的图另存为单独的图像文件进行处理。
图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');subplot(2,2,2);imshow(BW1),title('用Roberts算子')BW2=edge(I,'sobel');subplot(2,2,3);imshow(BW2),title('用Sobel算子 ')BW3=edge(I,'log');subplot(2,2,4);imshow(BW2),title('用拉普拉斯高斯算子 ')结果:(3)比较Roberts算子:边缘定位准,但是对噪声敏感。
适用于边缘明显且噪声较少的图像分割。
Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑,会在图像边缘附近的区域内产生较宽的响应,边缘定位的精度不是很高。
Sobel算子:算法的优点是计算简单,速度快。
但是由于只采用了2个方向的模板,只能检测水平和垂直方向的边缘,因此这种算法对于纹理较为复杂的图像,其边缘检测效果就不是很理想。
拉普拉斯:对噪声敏感,会产生双边效果。
不能检测出边的方向。
通常不直接用于边的检测,只起辅助的角色,检测一个像素是在边的亮的一边还是暗的一边利用零跨越,确定边的位置。
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);title('直方图');subplot(2,2,3);J2=im2bw(F,thread);imshow(J2);title('分割结果');实验结果:(3)原理说明:根据图像的直方图,发现背景和目标的分割值在135左右,将此作为分割值,将图像转换为二值图像。
3.任选一种阈值法进行图像分割:(1)选取阈值为180进行分割:I=imread('lines.png');F=rgb2gray(I);subplot(2,2,1);imshow(I);title('原始图像');thread=180/255; %阈值为180进行分割subplot(2,2,2);imhist(F);title('直方图');subplot(2,2,3);J2=im2bw(F,thread);imshow(J2);title('分割结果');实验结果:将阈值调节到180,明显的看到线条的边缘变得模糊,而背景的线条被消除。
4.检测出3.3图像的线条,要求完成的结果为二值图像:代码:I=imread('line2.png');F=rgb2gray(I);subplot(2,2,1);imshow(I);title('原始图像');thread=120/255;subplot(2,2,2);imhist(F);title('直方图');subplot(2,2,3);J2=im2bw(F,thread);imshow(J2);title('分割结果');实验结果:说明:根据直方图,分割值在120左右,去120为分割线,得到以上分割结果。