数字图像处理上机实验三
《数字图像处理》实验指导书1
《数字图像处理》实验指导书前言本实验指导书可作为电子信息工程、通信工程、生物医学工程等专业《数字图像处理》课程的实验指导书。
实验指导书共提供了6个实验,要求在VB环境下实现。
实验名称与学时安排详见下表。
实验名称与学时安排表实验教学基本要求:1、在实验前,认真准备,熟悉和掌握相关实验内容的基本算法和程序设计技术。
2、根据实验目的和要求,按时认真完成各实验的上机操作。
3、实验结束后,要及时提交经调试正确的程序源代码、生成的可执行文件、实验报告书等文档。
实验一图象的读取保存及图像的二值化处理一、实验目的1、熟悉《数字图像处理》的实验平台。
2、了解VB对图像进行处理的基本方法。
3、熟悉彩色图像变成灰度图象以及灰度图像转换成二值图像的基本原理及处理过程。
二、实验准备1、复习彩色图像变成灰度图象以及灰度图像的二值化处理的基本原理。
2、阅读下列内容,了解VB对图像进行处理的基本方法。
(1)读取图像通过扫描仪、摄像机等输入计算机以.bmp、.ico或.wmf存储的图像文件,可用LoadPicture函数把图像文件装入窗体、图片框或图像框中,例如:picture1.picture=loadpicture(“c:\image\flower.bmp”)可以把路径为c:\image\flower.bmp的图像文件装入图片框picture1中。
为了使图片框的大小与图像相匹配,应将图片框的autosize属性设置为True。
(2)用Point方法获取彩色图像的颜色值Point方法的功能是获取图像上指定像素的颜色值。
格式为:Object.Point(x,y)其中,Object表示获取颜色的对象名,(x,y)为取得颜色的坐标位置。
Point 方法将指定位置的像素的颜色值返回一个长整形数。
例如,求图片框picture 1中图像在位置(x,y)的像素颜色值(col)时,可写为:dim col as longcol=picture1.Point(x,y)(3)用Pset方法画点Pset方法的功能是在指定的位置画一个指定颜色的点。
数字图像处理实验三中值滤波和均值滤波实验报告
数字图像处理实验三均值滤波、中值滤波的计算机实现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、计算图像的梯度,梯度值和梯度角。
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掌握几种模板的基本原理。
二实验条件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.运行图像处理程序,并保存处理结果图像。
数字图像处理第三次实验(西南交大)
数字图像处理第二次实验注意提交实验报告的文件名格式(姓名+学号+实验报告二.doc)实验三灰度变换增强一、实验目的1.熟悉matlab图像处理工具箱及直方图函数的使用;2.了解灰度变换增强的Matlab实现方法3.掌握直方图灰度变换方法4.理解和掌握直方图原理和方法;二、实验内容1.线段上像素灰度分布读入灰度图像'',采用交互式操作,用improfile绘制一条线段的灰度值。
imshow(rgb2gray(imread('')))improfile读入RGB图像‘’,显示所选线段上红、绿、蓝颜色分量的分布imshow('')improfile2.直方图变换A)直方图显示在matlab环境中,程序首先读取图像'',然后调用直方图函数,设置相关参数,再输出处理后的图像。
I=imread(''); %读取图像subplot(1,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题读入图像‘’,在一个窗口中显示灰度级n=64,128和256的图像直方图。
I=imread('');imshow(I)figure,imhist(I,64)figure,imhist(I,128)figure,imhist(I,256)B)直方图灰度调节利用函数imadjust调解图像灰度范围,观察变换后的图像及其直方图的变化。
I=imread('');imshow(I)figure,imhist(I)J=imadjust(I,[ ],[0 1]);figure,imhist(J)figure,imshow(J)I=imread(''); imshow(I)figure,imhist(I)J=imadjust(I,[0 ],[ 1]); figure,imhist(J) figure,imshow(J)C)直方图均衡化在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。
数字图像处理实验报告(三四五)
实验三图像的几何变换一.实验目的及要求掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其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、对⼀幅图像进⾏旋转,显⽰原始图像与处理后图像,分别对其进⾏傅⾥叶变换,显⽰变换后结果,分析原图的傅⾥叶谱与旋转后傅⾥叶频谱的对应关系。
数字图像处理上机实验三
医学图像处理实验三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(注:文档可能无法思考全面,请浏览后下载,供参考。
数字图像处理上机实验报告 (三)
图像处理上机实验报告第三次指导老师:许永忠组员姓名:龙斌王国健学号: 05102344(龙)05102350(王)班级:地物10-2班时间: 2013年6月中国矿业大学资源学院上机实验报告课程名称:数字图像处理班级地物10-2班组员姓名龙斌王国健组员学号0510234405102350指导教师许永忠日期2013.05.26第15 周星期日第7,8节上机时数2学时实验名称数字图像处理PS的简单应用实验目的1.学会进行一些简单的字体特效制作以及简单的图像合成。
2.学会辨别细微的真假变化。
实验内容1.继续熟悉ps的基本运用,理解ps技术在生活中的重要性;2.用ps技术合成一张自己的图片;3.比较两个三角形出现差异的原因。
实验步骤1. 照片合成a.选择一张风景图(图1)和自己一张生活照(图2),用钢笔工具沿着图2中的人物作路径,完成后ctrl+enter转化为选区,然后ctrl+j复制选区;图1 图2b.拖动选区至图1,ctrl+t调整选区大小,使选区下的人物在图1中的一个合适位置和比例;c.作水中倒影。
ctrl+j复制刚刚调整好的选区,再ctrl+t,选择垂直翻转,然后调整至适当的位置,使人物倒影于水中;d.选择“滤镜”—“扭曲”—“波纹”,使人物图像有轻微的水波荡漾状扭曲,然后调整其透明度,使倒影更逼真;e.做彩虹。
Ctrl+n新建一个空白图层,背景为透明。
选择渐变工具,对渐变色进行调整,从左到右依次为“赤橙黄绿青蓝紫”渐变;f.在图层中作小小拖动,然后选择滤镜—扭曲—极坐标即完成。
g.把“彩虹”拖至图层1,同理ctrl+t调整大小和位置,并与图层1进行滤色叠加,使彩虹颜色变淡,然后与人物倒影一样对彩虹做倒影即可;h.ctrl+s保存,最后效果如图3合图4。
j.同理照一张有老鹰,一张含老虎和一张自己图片,分别做选区抠出其中的老虎,老鹰和自己,然后都拖到草原中,再用橡皮工具进行适当擦除,使其充分与背景融合,再ctrl+l调整一下色相饱和度即可,成果见图5.1.龙斌合成成果图图32.王国健合成成果图2.三角形的比较有三种方法可比较出现这种情况的原因:第一种:图形直观比较:把上面的三角形按其边缘复制,并与下面三角形(有空白的)重合,我们会很容易的发现:虽然两个三角形的底边和高相等,但他们的斜边并不相等,即有空白正方形的三角形斜边并不是直线,而是一条微向上凸起的曲线(但由于很小,肉眼较难分辨),而它凸起的那小部分面积恰好就是空白正方形的面积。
数字图像处理上机指导书
数字图像处理上机指导书(matlab)指导教师:桂进斌适用专业:电子科学及电子信息2010年3月实验一、图像文件的读取与显示实验目的:掌握windows BMP格式位图文件的基本格式。
学会使用matlab对图像文件进行读取与显示。
实验内容:1.使用imread函数的不同形式读取图像文件,理解函数不同形式的操作。
2.练习不同形式的imwrite函数的操作。
3.查询给定图像文件的基本信息。
4.使用图像浏览器显示图像,并学会使用浏览器中工具集对图像进行定制显示。
5.使用imshow函数对图像进行显示,并练习同时显示多幅图像的方法。
6.在已生成的应用程序中,加BMP位图读取与显示的代码,从已有文件中读取bmp格式文件并在视图中显示。
基本知识:BMP位图文件格式BMP位图文件中主要由4部分内容组成:1.文件头BITMAPFILEHEADER为一STRUCTURE:typedef struct tagBITMAPFILEHEADER {e;//文件类型,必须为“BM”或0x424dDWORD bfSize;//文件大小WORD bfReserved1;//保留WORD bfReserved2;//保留ts;//从文件头到实际位图数据的偏移字节数} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;2.位图信息头BITMAPINFOHEADER,定义如下:typedef struct tagBITMAPINFOHEADER{DWORD biSize;//structure sizeLONG biWidth;//image widthLONG biHeight;//image heightWORD biPlanes;//value is 1WORD biBitCount;//color bitsDWORD biCompression;//compression or notmage;//Image size=width*height( 其中width必须为4的倍数。
数字图像处理实验报告实验三
代码:
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、掌握二维DFT 变换及其物理意义2、掌握二维DFT 变换的MATLAB 程序3、空间滤波及频域滤波二、实验内容1、利用MATLAB 实现数字图像的傅里叶变换(1)实验内容读入并显示图Fig0316(3)(third_from_top).tif,作该图的二维FFT 变换F,将其直流分量移到频谱中心F1,计算其实部RR、虚部II,用两种方法计算及幅值A1=abs(F1)和A2=sqrt(RR.^2+II.^2),分别显示A1 和A2,并加以比较。
(2)程序代码clear all;f=imread('Fig0316(3)(third_from_top).tif');imshow(f);title('图1.1 原图');F=fft2(f);F1=fftshift(F);RR=real(F1);II=imag(F1);A1=abs(F1);figure;imshow(log(1+A1),[]);title('图1.2 频谱幅值A1');A2=sqrt(RR.^2+II.^2);figure;imshow(log(1+A2),[]);title('图1.3 频谱幅值A2');(3)程序运行结果图1.1 原图图1.2 频谱幅值A1图1.3 频谱幅值A22、近似冲击函数二维傅里叶变换(1)实验内容A=zeros(99,99);A(49:51,49:51)=1;作A 的二维傅里叶变换B,将B 直流分量移到频谱中心B1,分别用函数imshow 和mesh 显示A 和B1 模的对数(log(1+abs(B1)))(2)程序代码clear all;A=zeros(99,99);A(49:51,49:51)=1;B=fft2(A);B1=fftshift(B);imshow(A);title('图2.1 空域图形(imshow)');figure;imshow(log(1+abs(B1)));title('图2.2 频域图形(imshow)');figure;mesh(A);title('图2.3 空域图形(mesh)');figure;mesh(log(1+abs(B1)));title('图2.4 频域图形(mesh)');(3)程序运行结果图2.1 空域图形(imshow)图2.2 频域图形(imshow)图2.3 空域图形(mesh)图2.4 频域图形(mesh)3、空间滤波与频域滤波(1)实验内容将图Fig0504(a)(gaussian-noise).tif(f)分别进行空间与频域滤波。
数字图像处理实验程序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⼯具箱的使⽤实验⽬的:11:了解matlab语⾔,熟悉并掌握matlab相关的处理语句。
2:了解matlab在图像处理中的优缺点。
3 熟悉matlab的使⽤技巧,能⽤matlab熟悉的对数字图像进⾏各种处理。
1 将⼀幅灰度图像转换成索引⾊图像。
I=imread('ngc4024m.tif');X=grayslice(I,16);imshow(I)figure,imshow(X,hot(16))2:对⼀副图像进⾏⼆值化处理。
load treesBW=im2bw(X,map,0.4);imshow(X,map)figure,imshow(BW)3:将索引⾊图像转化成灰度图像。
load trees I=ind2gray(X,map);imshow(X,map)figure,imshow(I)4:显⽰⼀幅图像。
load clown image(10,10,X) colormap(map)试验⼆图像变换实验⽬的:1 熟悉掌握DFT和DCT变换的matlab实现。
2 利⽤matlab试验DFT和DCT的变换,求出图像的频谱。
1.⼆维离散傅⾥叶变换的旋转型。
I=zeros(256,256);>> I(28:228,108:148)=1;>> imshow(I)J=fft2(I);>> F=abs(J);>> J1=fftshift(F);figure>> imshow(J1,[5 50])>> I(28:228,108:148)=1;>> J=imrotate(I,315,'bilinear','crop'); >>figure >> imshow(J)J1=fft2(J);>> F=abs(J1);>> J2=fftshift(F);figure>> imshow(J2,[5 50])2.图像的傅⾥叶频谱。
数字图像处理 实验报告(完整版)
数字图像处理实验一 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显示出来观察图像的特征。
数字图像处理实验报告
数字图像处理实验报告重庆邮电⼤学《数字图像处理》课程上机实验学院⽣物信息学院专业⽣物医学⼯程班级 0611302姓名李霞学号 2013211957实验⼀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基本数据类型的数值数组本⾝⼗分适于表达图像,矩阵的元素和图像的像素之间有着⼗分⾃然的对应关系。
根据图像数据矩阵解释⽅法的不同,MA TLAB把其处理为4类:亮度图像(Intensity images)⼆值图像(Binary images)索引图像(Indexed images)RGB图像(RGB images)(1) 亮度图像⼀幅亮度图像是⼀个数据矩阵,其归⼀化的取值表⽰亮度。
若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。
若图像是double类,则像素取值就是浮点数。
实验三图像分析实验——图像分割、形态学及边缘与轮廓分析
实验三图像分析实验——图像分割、形态学及边缘与轮廓分析一、实验条件PC机数字图像处理实验教学软件大量样图二、实验目的1、熟悉图像形态学分析的基本原理,观察不同形态学方法处理的结果;2、熟悉图像阈值分割、区域生长、投影及差影检测和模板匹配的基本原理,观察处理的结果;3、熟悉图像边缘检测、Hough平行线检测、轮廓提取及跟踪和种子填充的基本原理,观察处理的结果;4、了解图像矩、空穴检测、骨架提取的基本原理,观察处理的结果。
三、实验原理本次实验侧重于演示观察,由于内容繁多,并且系统中已有部分实验项目的原理说明,因此实验原理及编程实现步骤这里不再详细叙述,有兴趣的同学可以查阅数字图像处理方面的有关书籍。
四、实验内容1、图像形态学分析内容包括:图像膨胀、图像腐蚀、开运算、闭运算和图像细化针对二值图像进行处理,有文字说明,实验步骤中将详细介绍其使用方法。
2、图像分割内容包括:阈值分割、区域生长、投影检测、差影检测和模板匹配阈值分割:支持灰度图像。
从图库中选择图像分割中的源图, 然后执行图像分析→图像分割→阈值分割, 比较原图和分割后的图, 对照直方图分析阈值分割的特点。
对源图再执行一次图像变换→点运算→阈值变换, 比较分析阈值变换和阈值分割的结果。
区域生长:支持灰度图像。
操作方法与阈值分割类似,比较分析其与阈值分割的不同。
投影检测:只支持二值图像。
从图库中选择投影检测中的源图, 然后执行图像分析→投影检测→水平投影, 然后再垂直投影, 记录下检测部分的水平和垂直方向的位置。
如有必要, 在检测之前, 对图像进行平滑消噪。
差影检测:支持灰度图像。
从图库中选择图像合成中的源图, 然后执行图像分析→图像合成→图像相减, 在弹出的文件对话框中选择图库图像合成中的模板图像,观察分析差影结果。
模板匹配:支持灰度图像。
从图库中选择模板匹配中的源图, 然后执行图像分析→模式识别→模板匹配, 在弹出的文件对话框中选择图库模板匹配中的模板图像, 观察分析结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
医学图像处理实验三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。