ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:559KB ,
资源ID:12878066      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12878066.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(图像去噪.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

图像去噪.docx

1、图像去噪面向对象分析与设计大作业(数字图像去噪)学 院: 计算机科学与工程学院 班 级: 学生姓名: 学 号: 指导老师: 张广渊 提交日期: 2014/4/14 山东交通学院数字图像处理课程实验报告实验题目: _ 数字图像去噪_姓名:_ 学号:_ 班级: _ 指导教师: _张广渊_实验概述【实验目的及要求】1编写平滑滤波及中值滤波的C语言程序以及相应的显示程序来实现对图像的去噪。 2创建3*3的加权模板,对指定图象进行平滑滤波增强,将增强后的图象显示于屏幕上,比较增强的效果。3. 创建3*3的模板,对指定图象进行中值滤波增强,将增强后的图象显示于屏幕上,比较增强的效果。 【实验原理】平滑(均

2、值)滤波原理:在图像上对目标像素给一个加权滑动模板,再用模板中的对应像素点乘权值后求和再求平均值。中值滤波原理:设置一个奇数点的滑动模板,对当前模板下的像素灰度值进行排序将模板中心点的像素值用排序后的中值代替。【实验环境】VC6.0下安装Openvc1.0配置Windows环境变量检查C:Program FilesOpenCVbin是否已经被加入到环境变量PATH,如果没有,请加入。加入后需要注销当前Windows用户(或重启)后重新登陆才生效。(可以在任务管理器里重启explorer.exe)配置Visual C+ 6.0全局设置菜单Tools-Options-Directories:先设置

3、lib路径,选择Library files,在下方填入路径:C:Program FilesOpenCVlib然后选择include files,在下方填入路径:C:Program FilesOpenCVcxcoreincludeC:Program FilesOpenCVcvincludeC:Program FilesOpenCVcvauxincludeC:Program FilesOpenCVmlincludeC:Program FilesOpenCVotherlibshighguiC:Program FilesOpenCVotherlibscvcaminclude然后选择source fil

4、es,在下方填入路径:C:Program FilesOpenCVcvsrcC:Program FilesOpenCVcxcoresrcC:Program FilesOpenCVcvauxsrcC:Program FilesOpenCVotherlibshighguiC:Program FilesOpenCVotherlibscvcamsrcwindows最后点击“ok”,完成设置。项目设置每创建一个将要使用OpenCV的VC Project,都需要给它指定需要的lib。菜单:Project-Settings,然后将Setting for选为All Configurations,然后选择右边的l

5、ink标签,在Object/library modules附加上cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib如果你不需要这么多lib,你可以只添加你需要的lib。实验内容【实验方案设计】1.创建工程,在工程里配置环境,添加lib标签等。2.在main函数里写入对图像进行操作的代码。并自定义函数ImageStretchByHistogram实现直方图变换。3.编译,链接,执行。4.对代码进行修改调试【实验过程】(实验步骤、记录、数据、分析)1. 新建一个支持MVC的Console Application工程,菜单:Project

6、-Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上 cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib2. 在工程目录下放置一个图片test.jpg3. 在cpp文件下添加显示图像代码:#include stdafx.h#include cv.h#include highgui.h#include #include using namespace std;#define N 3/模板大小,这里可以自行调整int f

7、ilterNN = 1,2,1,2,4,2,1,2,1;/模板/获取像素点的灰度值inline int pixel8Int( IplImage *img, int x, int y ) return (uchar *)(img-imageData + x*img-widthStep)y;/设置像素点的灰度值inline void setPixelVal( IplImage *img, int x, int y, int val) (uchar *)(img-imageData + x*img-widthStep)y = val;/obtain the sum of the weightint

8、weight() int w = 0; for(int ix=0; ixN; +ix) for(int iy=0; iyN; +iy) w += filterixiy; return w;/加权求值并赋值给对应中心的像素int smooth_compute( IplImage *src, int x,int y ) int value = 0; int tmp = (N-1)/2; for(int ix=0; ixN; +ix) for(int iy=0; iyN; +iy) value += filterixiy * pixel8Int(src,x-tmp+ix,y-tmp+iy);/对应像

9、素点乘权值后求和 return value;/对当前模板下的像素灰度值进行排序,取中间值.这里采用c+中库中提供的sort()int median_compute( IplImage *src, int x, int y ) int tmp = (N-1)/2; vector tamp; for(int ix=0; ixN; +ix) for(int iy=0; iyN; +iy) int val = pixel8Int(src,x-tmp+ix,y-tmp+iy); tamp.push_back(val); vector:iterator first = tamp.begin(); vect

10、or:iterator last = tamp.end(); sort(first,last);/默认是升序排列 return tamp(N*N+1)/2;/*利用如下3*3的加权模板创建平滑滤波器,对图像进行平滑处理并去噪 - | 1 | 2 | 1 | - | 2 | 4 | 2 | - | 1 | 2 | 1 | -对于边界问题,处理方法一般有两种方法:(1)补全边界点;即在边界复制一行或一列,这样在处理边界时会出现不良效果(2)限制中心点的范围;在遍历图像像素时,如果模板边界与图像边界重合时,以此为最大范围对于n*n的模板而言,中心点必须限制在距离图像边界不小于(n-1)/2个像素处注

11、:此处采用第二种简单的处理方式*/void smoothFilter( IplImage *src, IplImage *dst ) int tmp = (N-1)/2; for(int ix=tmp; ixheight-tmp; +ix) for(int iy=tmp; iywidth-tmp; +iy) int val = smooth_compute(src,ix,iy)/weight(); setPixelVal(dst,ix,iy,val); /*中值滤波器:对模板n*n范围的像素值进行排序,将中间值赋给中心点像素注:同样选择3*3模板*/void medianFilter( Ipl

12、Image *src, IplImage *dst ) int tmp = (N-1)/2; for(int ix=tmp; ixheight-tmp; +ix) for(int iy=tmp; iywidth-tmp; +iy) int val = median_compute(src,ix,iy); setPixelVal(dst,ix,iy,val); int main(int argc, char *argv) IplImage *src1, *src2, *dst1, *dst2; cvNamedWindow(smoothFilter_test); cvNamedWindow(med

13、ianFilter_test); /smooth filter process the image if(src1 = cvLoadImage(4.jpg,0) != NULL) dst1 = cvCreateImage(cvGetSize(src1),src1-depth,src1-nChannels); cvCopy(src1,dst1); smoothFilter(src1,dst1); cvShowImage(smoothFilter_test,dst1); /median filter process the image if(src2 = cvLoadImage(4.jpg,0)

14、!= NULL) dst2 = cvCreateImage(cvGetSize(src2),src2-depth,src2-nChannels); cvCopy(src2,dst2); medianFilter(src2,dst2); cvShowImage(medianFilter_test,dst2); cvWaitKey(0); cvDestroyWindow(smoothFilter_test); cvDestroyWindow(medianFilter_test); cvReleaseImage(&src1); cvReleaseImage(&src2); cvReleaseImage(&dst1); cvReleaseImage(&dst2); return 0;3 编译,链接,执行。【结论】原图运行程序显示结果平滑滤噪运行程序显示结果中值滤噪小结通过本次实验,掌握了在计算机上进行图象去噪。了解了平滑滤波原理和中值滤波原理。指导教师评语及成绩评语:成绩: 指导教师签名: 批阅日期:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1