欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    vc++数字图像处理实验指导书.doc

    • 资源ID:56203129       资源大小:942KB        全文页数:31页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    vc++数字图像处理实验指导书.doc

    数 字 图像 处 理实验指导书曹江中、何家峰广东工业大学信息工程学院二九年一月前言数字图像处理是信息工程专业一门重要的专业课程。随着图像处理技术的迅速发展和在当今社会中的广泛应用,给数字图像处理课程的教学提出了新的更高的要求。数字图像处理也是一门实践性较强的课程,实验占有重要地位。本实验指导书在分析学生专业特点和知识结构的基础上,选择VC作为编程工具,通过几个主要的图像处理知识点作为实验内容,旨在让学生在较短的实验时间内熟悉数字图像处理实际工程的基本框架、流程,使学生在理论课程学习的同时直接接触、掌握所学知识点的应用,达到培养学生的编程实践能力和学以致用能力的目的。通过对本指导书的使用,为该门课程的课程设计打下良好的基础。本指导书的内容包括:位图格式、VC图像编程基础、基于VC的图像工程实例以及图像的基本处理,如平滑、锐化、区域增强等算法设计等。共8个学时。在数字图像处理的课程实验过程中,要求学生做到:(1)预习实验指导书有关部分,认真做好实验内容的准备,就实验可能出现的情况提前作出思考和分析。(2)学生应认真并且独立完成相应实验内容。(3)认真书写实验报告。实验报告包括实验目的和要求,实验情况及其分析。对需编程的实验,写出程序设计说明,给出源程序框图和清单。(4)遵守机房纪律,服从辅导教师指挥,爱护实验设备。目录前言I目录II实验一 VC图像编程基础1一.实验目的1二.实验内容和要求1三.实验主要仪器设备和材料1四.实验原理及方法1实验二 一个简单的图像处理工程实例16一.实验目的16二.实验内容和要求16三.实验主要仪器设备和材料16四.实验原理与方法16五.实验内容与步骤17实验三、图像的空间域平滑和锐化22一.实验目的22二.实验内容和要求22三.实验主要仪器设备和材料22四.实验原理22五.实验设计步骤24实验一 VC图像编程基础实验项目名称:VC图像编程基础实验项目性质:验证性实验所属课程名称:数字图像处理实验计划学时:2一. 实验目的(1) 学习使用vc图像处理的基本知识。(2) 了解BMP位图格式。(3) 掌握利用VC+建立单文档工程。(4) 掌握使用CDIB类。(5) 掌握添加菜单项和响应函数。二. 实验内容和要求在VC+6.0环境下编程利用CDIB类实现对位图的读取和显示操作。 三. 实验主要仪器设备和材料计算机,VC6.0四. 实验原理及方法1、位图格式计算机中位图文件由三部分组成,分别是:文件头、位图信息和位图像素数据(如图1.1)。文件头位图信息(信息头颜色信息表)图像数据图1.1、Bmp位图文件的组成11 位图文件头 位图文件头主要用于识别位图文件。以下是位图文件头结构的定义: typedef struct tagBITMAPFILEHEADER WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; BITMAPFILEHEADER;其中的bfType值应该是“BM”(0x4d42),标志该文件是位图文件。bfSize的值是位图文件的大小。12 位图信息结构位图信息结构中所记录的值用于分配内存,设置调色板信息,读取像素值等。以下是位图信息结构的定义: typedef struct tagBITMAPINFO BITMAPINFOHEADER bmiHeader; /信息头 RGBQUAD bmiColors1; /颜色表 BITMAPINFO;可见位图信息也是由两部分组成的:位图信息头 + 颜色表121 位图信息头位图信息头包含了单个像素所用字节数以及描述颜色的格式,此外还包括位图的宽度、高度、目标设备的位平面数、图像的压缩格式。以下是位图信息头结构的定义: typedef struct tagBITMAPINFOHEADER DWORD biSize; /结构BITMAPINFOHEADER的字节数,即/sizeof(BITMAPINFOHEADER)* LONG biWidth; /以像素为单位的图像宽度* LONG biHeight; /以像素为单位的图像长度 WORD biPlanes; /目标设备的位平面数 WORD biBitCount /每个像素的位数*(1) DWORD biCompression; /图像的压缩格式(这个值几乎总是为0) DWORD biSizeImage; /以字节为单位的图像数据的大小(对/BI_RGB压缩方式而言) LONG biXPelsPerMeter; /水平方向上的每米的像素个数 LONG biYPelsPerMeter; /垂直方向上的每米的像素个数 DWORD biClrUsed; /调色板中实际使用的颜色数(2) DWORD biClrImportant; /现实位图时必须的颜色数(3) BITMAPINFOHEADER; 说明:(1)、*是需要加以注意的部分,因为它们是我们在进行位图操作时经常参考的变量。(2)、biBitCount:对于每个像素的字节数,分别有以下意义:0,用在JPEG格式中1,单色图,调色板中含有两种颜色,也就是我们通常说的黑白图片4,16色图8,256色图,通常说的灰度图16,64K图,一般没有调色板,图像数据中每两个字节表示一个像素,5个或6个位表示一个RGB分量24,16M真彩色图,一般没有调色板,图像数据中每3个字节表示一个像素,每个字节表示一个RGB分量32,4G真彩色,一般没有调色板,每4个字节表示一个像素,相对24位真彩图而言,加入了一个透明度,即RGBA模式(3)、biClrUsed:这个值通常为0,表示使用biBitCount确定的全部颜色,例外是使用的颜色数目小于制定的颜色深度的颜色数目的最大值。(4)、biClrImportant:这个值通常为0,表示所有的颜色都是必需的。122 颜色表 颜色表一般是针对16位以下的图像而设置的,对于16位和16位以上的图像,由于其位图像素数据中直接对对应像素的RGB(A)颜色进行描述,因而省却了调色板。而对于16位以下的图像,由于其位图像素数据中记录的只是调色板索引值,因而需要根据这个索引到调色板去取得相应的RGB(A)颜色。颜色表的作用就是创建调色板。图1.2是带调色板和不带调色板的位图的简单示意图: a. 带调色板的位图 b. 不带调色板的位图图1.2 不同的位图结构颜色表是由颜色表项组成的,颜色表项结构的定义如下:typedef struct tagRGBQUAD BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; RGBQUAD;其中需要注意的问题是,RGBQUAD结构中的颜色顺序是BGR,而不是平常的RGB。 123位图数据最后,在位图文件头、位图信息头、位图颜色表之后,便是位图的主体部分:位图数据。位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数:当biBitCount=1时,8个像素占1个字节;当biBitCount=4时,2个像素占1个字节;当biBitCount=8时,1个像素占1个字节;当biBitCount=16时,1个像素占2个字节(RGB555格式);当biBitCount=24时,1个像素占3个字节(BGR格式);当biBitCount=32时,1个像素占4个字节(BGR-格式,-表示不处理的字节)注意:Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充,一个扫描行所占的字节数计算方法:DataSizePerLine= (biWidth* biBitCount+31)/8; / 一个扫描行所占的字节数每行的字节数必须是4的倍数。DataSizePerLineDataSizePerLine/4*4; 位图数据的大小(不压缩情况下):DataSize= DataSizePerLine* biHeight; 2、CDIB类 该类将位图文件的读取、象素数据的获取及显示进行了封装。具体的代码见附带的电子参考资料。下面介绍具体的成员和方法:1、bool CDIB:LoadFromFile(LPCTSTR lpszFileName)功能:用于加载位图。参数:lpszFileName表示加载的位图路径和名称。如:d:test123.bmp返回值:成功读取后,返回true,否则为false注意:但调用该函数成功加载位图后,CDIB类的成员变量m_bLoaded将变为true,否则为false,因此,可以通过m_bLoaded来进行判断是否加载了位图。2、int GetDIBWidth()功能:获取位图的宽度返回值:位图的宽度注意:该函数只有在加载位图后才能调用,否则会出错(可通过m_bLoaded来判断)。3、int GetDIBHeight()功能:获取位图的高度返回值:位图的高度注意:该函数只有在加载位图后才能调用,否则会出错(可通过m_bLoaded来判断)。4、void CDIB:ShowDIB(CDC *pDC, int nLeft, int nTop, int nRight, int nBottom, BYTE *pDIBData,BITMAPINFO* pBMI)功能:显示位图参数:pDC /DC的句柄nLeft, /目标矩形左上角的X坐标nTop, /目标矩形左上角的Y坐标nRight, /目标矩形的宽度nBottom, /目标矩形的高度0, /源矩形左上角的X坐标0, /源矩形左上角的Y坐标GetDIBWidth(), /源矩形的宽度GetDIBHeight(), /源矩形的高度pDIBData, /位图图象数据的地址 pBMI, /位图信息结构地址5、InvalidateData()功能:将m_pdata 的信息赋值给m_pDIBData,便于显示m_pdata的信息。 6、几个重要的成员变量BYTE *m_pdata; /位图的灰度信息bool m_bLoaded; /表示是否加载了位图BITMAPINFO * m_pBMI; /位图信息头BYTE* m_pDIBData; /位图象素数据指针BYTE* m_pDumpDIBData; /位图象素数据指针BITMAPFILEHEADER bfh; /位图信息头BITMAPINFOHEADER bih; / 位图文件头注意:m_pdata与m_pDIBData的关系n 如果是8位图,m_pdata与m_pDIBData两个指针指向的数据块内容是相等的,即:m_pdatak=m_pDIBDatakn 如果是24位图,m_pdata与m_pDIBData两个指针指向的数据块内容是不相等的,m_pDIBData代表的是象素的RGB格式,而m_pdata表示的是象素的灰度信息。其关系为:m_pdatani*nW+nj=(unsigned char)(m_pDIBDatani*(3*nW+length)+3*nj*0.11+m_pDIBDatani*(3*nW+length)+3*nj+1*0.59+m_pDIBDatani*(3*nW+length)+3*nj+2*0.3);具体见CDIB类代码。当为24位图时,显示时采用m_pDIBData数据,为简单起见,我们可以仅仅对灰度信息进行处理,因为在灰度信息m_pdata数据中,一个象素对应于一个字节,而彩色信息m_pDIBData数据中,一个象素对于于三个字节。如果对m_pdata进行处理后,我们可以通过调用InvalidateData()函数来将m_pdata的数据赋值给m_pDIBData,从而显示处理结果。五. 实验步骤: 1、建立当文档工程。 步骤一:建立工程进入vc集成开发环境,单击File菜单下的new,出现一个对话框,在对话框中选择Project项目,选中MFC AppWinzid (exe),并填写好项目名称,存储路径,点击OK.进入下一步,在出现的页面中选择当文档模式(Single document),单击完成(Finish),即可。步骤二:编译工程 单击Build菜单下的Execute test.exe(或单击工具栏中的 ! )编译一下刚才建立的项目。即可看到一个如下图1.3的windows 风格窗口。图1.32、添加CDIB类步骤一:将dib.cpp和dib.h文件(已发给大家)拷贝到工程目录下。步骤二:打开工程空间(双击刚才建立的目录下的test.dsw) 。单击在编译窗口中的ProjectàAdd To ProjectàFiles,在弹出的对话框中选择dib.cpp和dib.h。单击确定。步骤三:在类视图中查看是否有CDIB类(如下图1.4),如果没有请重复步骤一。 图1.43、建立菜单项步骤一、点击ResouceView。双击资源中的MEUM>IDC_MAINFRAME。在编辑框中将看到主框架的菜单资源(如图.5).如图1.5步骤二、在菜单资源中,添加菜单栏和菜单项。双击其中的一个空白菜单栏,即进入其熟悉框,可添加或修改其名称,这里将其命名为(图像操作),如图1.6. 图1.6步骤三、在“图像操作栏”中添加菜单项“打开图像”。具体步骤见图1.7。 步骤四、编译(单击!),将出现如图1.8的界面,如果没有出现菜单栏和菜单项,请重复到步骤一。 图1.84、添加CTestView的公共成员函数m_dib 按照如图1.9中的提示操作,添加CTestView的公共成员函数m_dib. 图1.95、添加响应函数步骤一、右击编辑框中的任意位置,在弹出的提示菜单中,选择ClassWizard,在弹出的类向导对话框中,按照如图1.10的提示进行选择和操作。 图1.10步骤二、查看类视图中的CTestView类中是否有OnOpenImage函数,正确的如图1.11,单击该函数即进入该函数体。 图1.116、实现响应函数的功能 在ClassView中CTestView类中的OnOpenImage函数,进入其函数体。添加如下红色字体代码:void CTestView:OnOpenIamge() / TODO: Add your command handler code herestatic char szFilter="BMP文件(*.bmp)|*.bmp|" /定义过滤文件的类型 CFileDialog dlg(TRUE,"bmp",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);/定义文件对话框对象 CString filename;int ret=dlg.DoModal(); /运行打开文件对方框 if(ret=IDOK) filename=dlg.GetFileName(); /获取所选择图像的路径 m_dib.LoadFromFile(filename); /加载图像 if(!m_dib.m_bLoaded) /判断是否加载图像成功 AfxMessageBox("图像打不开");return; Invalidate(1);/刷新屏幕7、添加显示代码 在ClassView中CTestView类中的OnDraw函数,进入其函数体。添加如下红色字体代码:void CTestView:OnDraw(CDC* pDC)CTestDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data hereif(m_dib.m_bLoaded=true) /判断是否加载图像/获取图像宽和高int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();/ 显示图像(具体的参数见CDIB类的该函数说明)m_dib.ShowDIB(pDC,10,10,nw,nh,m_dib.m_pDIBData,m_dib.m_pBMI);m_dib.ShowDIB(pDC,400,10,nw,nh,m_dib.m_pDumpDIBData,m_dib.m_pBMI);8、编译运行点击(!)编译运行刚才的代码,如果没有出错则可单击“图像操作”“打开图像”,选择图像打开,显示(结果如图1.12),有错则对图从第一部分重新新一步一步调试。 图1.12实验二 一个简单的图像处理工程实例实验项目名称:一个简单的图像处理工程实例实验项目性质:综合性实验所属课程名称:数字图像处理实验计划学时:3一. 实验目的(1) 掌握图像处理工程的流程。(2) 掌握图像点运算。(3) 理解图像处理功能函数的编写。(4) 了解对CDIB类中各成员函数和变量的功能。二. 实验内容和要求在实验一的工程中实现图像二值化和底片效果。三. 实验主要仪器设备和材料计算机,VC6.0四. 实验原理与方法1、 图像的二值化的基本原理图像的二值化处理图像分割中的一个主要内容,就是将图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。用I表示原图,R表示二值化后的图,则二值化的过程可以用以下公式表示: thr表示选取的阈值。二值化的过程就是当原图的象素灰度值大于阈值就将其变白,否则就将其变黑。即将256个亮度等级的灰度图像通过适当的阀值选而将图像变为二个级别灰度级,这样只有二个灰度级的图像在图像处理分析过程中占有非常重要的地位,特别是在实用的图像处理中。以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阀值法就可以得到比较的分割效果。如果物体同背景的差别表现不在灰度值上(比如纹理不同),可以将这个差别特征转换为灰度的差别,然后利用阀值选取技术来分割该图像。动态调节阀值实现图像的二值化可动态观察其分割图像的具体结果。根据对全图使用统一阈值还是对不同区域使用不同阈值,可以分为全局阈值方法(global thresholding)和局部阈值方法(local thresholding,也叫做自适应阈值方法adaptive thresholding);这种与坐标相关的阈值也叫动态阈值,此方法也叫变化阈值法,或自适应阈值法。具体的方法,可以参考相关的图像处理书籍。本实验采用固定全局阈值方法,即在整个图像中所有的象素点,其阈值thr相同。2、底片效果原理大家对照片的底片一定都很熟悉了,底片上的颜色与色彩鲜艳的照片的颜色是正好相反的,即反色。 编程原理:各种色彩都是由红、绿、蓝三种颜色按不同的比例混合而成的,这就是我们所说的三基色,它们的颜色值(RGB值)是 0255 ,我们只需用255减去各个点的R、G、B各基色值,然后用255减去这个值,并将这个值重新赋值给各个点,就会达到我们想要的底片效果了。 3、实验中图像处理的一步流程: 获取数据(打开图像,得到图像信息)>处理数据(采用相应的算法对图像数据进行处理)>返回结果(显示图像)五. 实验内容与步骤1、 图像的底片化操作步骤一、打开实验一建立的test工程空间(双击test.dsw)。步骤二、按照实验一介绍的方法建立在“图像操作”菜单栏中新建菜单项“底片化”。步骤三、按照实验一介绍的方法建立菜单项“底片化”的响应函数Negative()。步骤四、打开响应函数Negative(),将下来红色字体代码拷贝到Negative()中,注意:请分析每行代码的意思。void CTestView:OnNegative() / TODO: Add your command handler code here/功能:实现底片化/判断图像是否打开,没打开,则弹出提示框并退出函数if(!m_dib.m_bLoaded) AfxMessageBox("图像还打开,请先打开图像!");return; /获取图像宽和高int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();int i,j; / 定义阈值并赋值为100;/对每一个象素进行底片化处理for(j=0;j<nh;j+)for(i=0;i<nw;i+)/对图像的第j行、第i列的象素的灰度信息进行判断,修改int gray=m_dib.m_pdataj*nw+i;m_dib.m_pdataj*nw+i=255-gray;/将修改的m_pdata的数据赋值给m_pDIBData,以显示修改的结果m_dib.UpdateData();/刷新屏幕Invalidate();步骤五、点击(!),编译运行,打开一幅24位bmp图,然后再单击“二值化”,观察效果。如图2.1示。 图2.12、 图像的二值化操作步骤一、打开实验一建立的test工程空间(双击test.dsw)。步骤二、按照实验一介绍的方法建立在“图像操作”菜单栏中新建菜单项“二值化”。步骤三、按照实验一介绍的方法建立菜单项“二值化”的响应函数Binary()。步骤四、打开响应函数Binary(),将下来红色字体代码拷贝到Binary()中,注意:请分析个行代码的意思。void CTestView:OnBinary() / TODO: Add your command handler code here/功能:实现二值化/判断图像是否打开,没打开,则弹出提示框并退出函数if(!m_dib.m_bLoaded) AfxMessageBox("图像还打开,请先打开图像!");return; /获取图像宽和高int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();int i,j; / 定义阈值并赋值为100;int thr=150;/对每一个象素进行二值化处理for(j=0;j<nh;j+)for(i=0;i<nw;i+)/对图像的第j行、第i列的象素的灰度信息进行判断,修改if(m_dib.m_pdataj*nw+i>thr)m_dib.m_pdataj*nw+i=255;elsem_dib.m_pdataj*nw+i=0;/将修改的m_pdata的数据赋值给m_pDIBData,以显示修改的结果m_dib.UpdateData();/刷新屏幕Invalidate();步骤五、点击(!),编译运行,打开一幅24位bmp图,然后再单击“二值化”,观察效果。如图2.2示。 图2.2步骤六、修改代码中的thr的值,再重复步骤五,观察效果,试比较、分析结果。实验三、图像的空间域平滑和锐化实验项目名称:图像的空间域平滑和锐化实验项目性质:设计性实验所属课程名称:数字图像处理实验计划学时:3一. 实验目的(1) 掌握图像模板运算的流程。(2) 进一步理解图像的平滑、锐化原理、。(3) 了解图像平滑、锐化的效果和作用。二. 实验内容和要求编程分别实现图像的平滑和锐化。三. 实验主要仪器设备和材料计算机,VC6.0四. 实验原理1、图像平滑图像平滑主要是为了消除噪声。噪声并不限于人眼所能看的见的失真和变形,有些噪声只有在进行图像处理时才可以发现。图像的常见噪声主要有加性噪声、乘性噪声和量化噪声等。图像中的噪声往往和信号交织在一起,尤其是乘性噪声,如果平滑不当,就会使图像本身的细节如边界轮廓、线条等变的模糊不清,如何既平滑掉噪声有尽量保持图像细节,是图像平滑主要研究的任务。一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时系统中所要提取的汽车边缘信息也主要集中在其高频部分,因此,如何去掉高频干扰又同时保持边缘信息,是我们研究的内容。为了去除噪声,有必要对图像进行平滑,可以采用低通滤波的方法去除高频干扰。图像平滑包括空域法和频域法两大类,在空域法中,图像平滑的常用方法是采用均值滤波或中值滤波,对于均值滤波,它是用一个有奇数点的滑动窗口在图像上滑动,将窗口中心点对应的图像像素点的灰度值用窗口内的各个点的灰度值的平均值代替,如果滑动窗口规定了在取均值过程中窗口各个像素点所占的权重,也就是各个像素点的系数,这时候就称为加权均值滤波; 对于中值滤波,对应的像素点的灰度值用窗口内的中间值代替。实现均值或中值滤波时,为了简便编程工作,可以定义一个n*n的模板数组。另外,读者需要注意一点,在用窗口扫描图像过程中,对于图像的四个边缘的像素点,可以不处理;也可以用灰度值为"0"的像素点扩展图像的边缘。二、图象锐化图像平滑往往使图像中的边界、轮廓变的模糊,为了减少这类不利效果的影响,这就需要利用图像鋭化技术,使图像的边缘变的清晰。图像銳化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变的清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变的清晰。从频率域来考虑,图像模糊的实质是因为其高频分量被衰减,因此可以用高通滤波器来使图像清晰。为了要把图像中间任何方向伸展的的边缘和轮廓线变得清晰,我们希望对图像的某种运算是各向同性的。可以证明偏导平方和的运算是各向同性的,既: 式中( )是图像旋转前的坐标,( )是图像旋转后的坐标。梯度运算就是在这个式子的基础上开方得到的。图像(x,y)点的梯度值:为了突出物体的边缘,常常采用梯度值的改进算法,将图像各个点的梯度值与某一阈值作比较,如果大于阈值,该像素点的灰度用梯度值表示,否则用一个固定的灰度值表示。我们在对图像增强的过程中,采用的是一种简单的高频滤波增强方法: 式中f,g分别为锐化前后的图像。 表示对图像f进行二次微分的拉普拉斯算子。五. 实验设计步骤 1、平滑处理 步骤一、确定一种平滑方法,可选择均值滤波或者中值滤波,并掌握其原理。 步骤二、按照实验一中的方法在“图像操作”菜单栏中新建“平滑处理”菜单项。 步骤三、添加“平滑处理”的响应函数。 步骤四、在响应函数中添加实现图像平滑的功能代码。 步骤五、调试,运行。 在采用均值滤波时,图像边界可不需处理。思考:模板处理时开始的行不能是从第0行开始,为什么?参考分析以下逐象素处理代码:/w为模板宽度,如果模板为3×3的,w则为3for(j=w/2;j<nh-w/2;j+)for(i= w/2;i<nw-w/2;i+) 处理代码2、锐化处理 步骤一、确定一种锐化模板 步骤二、按照实验一中的方法在“图像操作”菜单栏中新建“锐化处理”菜单项。 步骤三、添加“锐化处理”的响应函数。 步骤四、在响应函数中添加实现图像锐化的功能代码。 步骤五、调试,运行。六. 实验报告要求1、 给出简要的设计思路。2、 给出响应函数的代码(只需一种平滑和一种锐化方法)。3、 给出实验结果的屏幕截图。4、 实验的心得体会或建议。

    注意事项

    本文(vc++数字图像处理实验指导书.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开