欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

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

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

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

    1、数字图像处理实验三中值滤波和均值滤波实验报告数字图像处理实验三均值滤波、中值滤波的计算机实现 崔雪莹 计科1202班一、实验目的:1)熟悉均值滤波、中值滤波处理的理论基础;2)掌握均值滤波、中值滤波的计算机实现方法;3)学习VC+ 6。0 的编程方法;4)验证均值滤波、中值滤波处理理论;5)观察均值滤波、中值滤波处理的结果。二、实验的软、硬件平台: 硬件: 微型图像处理系统,包括:主机, PC机;摄像机;软件: 操作系统:WINDOWS2000或WINDOWSXP应用软件:VC+ 三、实验内容:1)握高级语言编程技术;2)编制均值滤波、中值滤波处理程序的方法;3)编译并生成可执行文件;4)考察

    2、处理结果。四、实验要求:1)学习VC+确6。0 编程的步骤及流程;2)编写均值滤波、中值滤波的程序;3)编译并改错;4)把该程序嵌入试验二给出的界面中(作适当修改);5)提交程序及文档;6)写出本次实验的体会。五、实验结果截图实验均值滤波采用的是3X3的方块,取周围的像素点取得其均值代替原像素点。边缘像素的处理方法是复制边缘的像素点,增加一个边框,计算里面的像素值得均值滤波。六、实验体会本次实验在前一次的实验基础上增加均值滤波和中值滤波,对于椒盐噪声的处理,发现中值滤波的效果更为好一点,而均值滤波是的整个图像变得模糊了一点,效果差异较大。本次实验更加增加了对数字图像处理的了解与学习。七、实验程

    3、序代码注释及分析.”菜单项添加到系统菜单中。 gbBlue; lpBits2p2+1=pPalettePalette.rgbGreen; lpBits2p2+2=pPalettePalette.rgbRed; delete lpTemp; lpBits=lpBitmap+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); if (lpBackup) delete lpBackup; lpBackup=new BYTEnLen; memcpy(lpBackup,lpBitmap,nLen);void CHistDemoADlg:OnOpen()

    4、mp|所有文件|*.*|,this);/新建文件选择对话框 if ()=IDOK) FileName=(); /得到文件的路径 if (!(FileName,CFile:modeRead) return; /以只读方式打开文件 / TODO: add loading code here if (lpBitmap) delete lpBitmap; /保证lpBitmap为空 nLen=(int)(); /得到文件的长度 lpBitmap=new BYTEnLen; /为lpBitmap分配空间 (lpBitmap,nLen); /将文件的内容读入到lpBitmap所指向的内存区域 LoadBi

    5、tmap(); /调用LoadBitmap(),加载位图图像 if (lpBitmap) (nWidth,nHeight,lpBits); void CHistDemoADlg:OnHist() / TODO: 在此添加控件通知处理程序代码 HistogramEq();void GetPoints(int nWidth,int nHeight,BYTE *lpBits,BYTE *lpPoints) int x,y,p; int nByteWidth=nWidth*3; if (nByteWidth%4) nByteWidth+=4-(nByteWidth%4); for(y=0;ynHeig

    6、ht;y+) /每一行 for(x=0;xnWidth;x+) /每一列 p=x*3+y*nByteWidth; lpPointsx+y*nWidth=(BYTE)*(float)lpBitsp+2+*(float)lpBitsp+1+*(float)lpBitsp+; /三种颜色的比例计算对应点的颜色值,并且强制转换成BYTE void PutPoints(int nWidth,int nHeight,BYTE *lpBits,BYTE *lpPoints) /逐个对lpBits进行赋值 int nByteWidth=nWidth*3; if (nByteWidth%4) nByteWidt

    7、h+=4-(nByteWidth%4); int x,y,p,p1; for(y=0;ynHeight;y+) /每一行 for(x=0;xnWidth;x+) /每一列 p=x*3+y*nByteWidth; p1=x+y*nWidth; lpBitsp=lpPointsp1; lpBitsp+1=lpPointsp1; lpBitsp+2=lpPointsp1; void CHistDemoADlg:HistogramEq(void) if (lpBitmap=0) return; BYTE *lpOutput=new BYTEnByteWidth*nHeight; HistogramEq

    8、1(nWidth,nHeight,lpBits,lpOutput); (nWidth,nHeight,lpOutput); /在直方图均衡化的区域显示结果 delete lpOutput; NoColor(); /将原始图像转换成灰度图像void CHistDemoADlg: NoColor() if (lpBitmap=0) return; int x,y,p; BYTE Point; for(y=0;ynHeight;y+) /每一行 for(x=0;xnWidth;x+) /每一列 p=x*3+y*nByteWidth; Point=(BYTE)*(float)lpBitsp+2+*(f

    9、loat)lpBitsp+1+*(float)lpBitsp+;/计算颜色值,在0-255的灰度级之间 lpBitsp+2=Point; lpBitsp+1=Point; lpBitsp=Point; (nWidth,nHeight,lpBits);/将彩色图像转化成灰度图像void CHistDemoADlg:HistogramEq1(int nWidth, int nHeight, BYTE *lpInput, BYTE *lpOutput) int x,y; BYTE *lpPoints=new BYTEnWidth*nHeight;/像素点的个数 GetPoints(nWidth,nH

    10、eight,lpInput,lpPoints); /lpPoints存的是颜色值 int r256,s256; /颜色值数组,统计对应颜色值像素点的个数 ZeroMemory(r,1024); ZeroMemory(s,1024); for(y=0;ynHeight;y+) /统计对应颜色值像素点的个数,Point(x,y)是lpPoints(x,y) for(x=0;xnWidth;x+) rPoint(x,y)+; s0=r0; for(y=1;y256;y+) sy=sy-1; sy+=ry; /计算颜色值的前y种颜色的总像素点的个数(像素点颜色值=y) for(y=0;ynHeight

    11、;y+) /将计算对应点的像素值,直方图均匀化的结果保存在lpPoints for(x=0;xnWidth;x+) Point(x,y)=sPoint(x,y)*255/nWidth/nHeight; PutPoints(nWidth,nHeight,lpOutput,lpPoints); /输出lpPoints到lpOutput delete lpPoints;void CHistDemoADlg:OnBnClickedClose() / TODO: 在此添加控件通知处理程序代码 /ExitProcess(0);/注意使用时先释放分配的内存,以免造成内存泄露 /exit(0) ;/正常终止程

    12、序; exit(非0)非正常终止程序 PostQuitMessage(0);/最常用void CHistDemoADlg:OnBnClickedMeanfilter() / TODO: 在此添加控件通知处理程序代码 if (lpBitmap=0) return; BYTE *lpOutput=new BYTEnByteWidth*nHeight; MeanFilter(nWidth,nHeight,lpBits,lpOutput); (nWidth,nHeight,lpOutput); /在直方图均衡化的区域显示结果 delete lpOutput; NoColor(); /将原始图像转换成灰

    13、度图像void CHistDemoADlg:MeanFilter (int nWidth,int nHeight,BYTE *lpInput,BYTE *lpOutput) int x,y; BYTE *lpPoints=new BYTEnWidth*nHeight;/像素点的个数 BYTE *lpPoints1 = new BYTE(nWidth+2)*(nHeight+2); GetPoints(nWidth,nHeight,lpInput,lpPoints); /lpPoints存的是颜色值 for(y=1;ynHeight+1;y+) /中间最整块图像的拷贝 for(x=1;xnWid

    14、th;x+) Point1(x,y) = Point(x-1,y-1); /lpPoints1yx = lpPointsy-1x-1; for(y=1;ynHeight+1;y+) /最左边和最右边一列的拷贝 Point1(0,y) = Point(0,y-1); Point1(nWidth+1,y) = Point(nWidth-1,y-1); /lpPoints1y0 = lpPointsy-10; /lpPoints1ynWidth+1 = lpPointsy-1nWidth-1; for(x=0;xnWidth+2;x+) /最上边和最下边一行的拷贝 Point1(x,0) = Poi

    15、nt1(x,1); Point1(x,nHeight+1) = Point1(x,nHeight); /lpPoints10x = lpPoints11x; /lpPoints1nHeight+1x = lpPoints1nHeightx; for(y=0;ynHeight;y+) /求以某点为中心的九个数平均值 for (x=0;xnWidth;x+) Point(x,y) = ( Point1(x,y) + Point1(x+1,y) + Point1(x+2,y) + Point1(x,y+1) + Point1(x+1,y+1) + Point1(x+2,y+1) + Point1(x

    16、,y+2) + Point1(x+1,y+2) + Point1(x+2,y+2) )/9; /* lpPointsyx = (lpPoints1yx + lpPoints1yx+1 + lpPoints1yx+2 + lpPoints1y+1x + lpPoints1y+1x+1 + lpPoints1y+1x+2 + lpPoints1y+2x + lpPoints1y+2x+1 + lpPoints1y+2x+2)/9; */ PutPoints(nWidth,nHeight,lpOutput,lpPoints); /输出lpPoints到lpOutput delete lpPoints

    17、; void CHistDemoADlg:MedianFilter(int nWidth,int nHeight,BYTE *lpInput,BYTE *lpOutput) int x,y; BYTE *lpPoints=new BYTEnWidth*nHeight;/像素点的个数 BYTE *lpPoints1 = new BYTE(nWidth+2)*(nHeight+2); GetPoints(nWidth,nHeight,lpInput,lpPoints); /lpPoints存的是颜色值 for(y=1;ynHeight+1;y+) /中间一整块拷贝 for(x=1;xnWidth;

    18、x+) Point1(x,y) = Point(x-1,y-1); for(y=1;ynHeight+1;y+) /最左边和最右边一列的拷贝 Point1(0,y) = Point(0,y-1); Point1(nWidth+1,y) = Point(nWidth-1,y-1); for(x=0;xnWidth+2;x+) /最上边和最下边一行的拷贝 Point1(x,0) = Point1(x,1); Point1(x,nHeight+1) = Point1(x,nHeight); BYTE *window = new BYTE9; for(y=0;ynHeight;y+) for (x=0

    19、;xnWidth;x+) int k = 0; for(int i=y ; i = y+2 ; i+) for(int j=x ; j = x+2; j+) if(k 9) windowk+ = Point1(j,i); for (int m = 0; m 5; +m) /求9个数的中值,window4为中值 int min = m; for (int n = m + 1; n 9; +n) if (windown FillSolidRect(0,0,320,240,BACKGROUND); return TRUE;void CImageWnd:OnPaint() /绘制函数,每次需要显示的图

    20、像发生变化,就会重画,重复调用这个函数进行重画 CPaintDC dc(this); /当前对象作为参数 if(lpBits) int x,y; x = -HScrollPosition; y = -VScrollPosition; if(nWidth320) x = (320-nWidth)/2; if(nHeight240) y = (240-nHeight)/2; /设置绘制位图文件的头信息 BITMAPINFOHEADER bmi; = sizeof(BITMAPINFOHEADER); = nWidth; = nHeight; = 1; = 24; = BI_RGB; = 0; = 0; = 0; = 0; = 0; /将像素点填充到绘图区域 StretchDIBits,x,y,nWidth,nHeight,0,0,nWidth,nHeight,lpBits,(BITMAPINFO *)&bmi,DIB_RGB_COLORS,SRCCOPY); void CImageWnd:OnHScroll(UINT nSBCode,UINT nPos,CScrollBar* pScrollBar) /水平滚轮事件处理函数, switch(nSBCode) case SB_LINEDOWN: /每次滑动的间隔为5个像素点 HScrollPosition += 5; b


    注意事项

    本文(数字图像处理实验三中值滤波和均值滤波实验报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开