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

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

举报
开通vip

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

数字图像处理实验三中值滤波和均值滤波实验报告
数字图像处理实验三均值滤波、中值滤波的计算机实现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的方块,取周围的像素点取得其均值代替原像素点。边缘像素的处理方法是复制边缘的像素点,增加一个边框,计算里面的像素值得均值滤波。六、实验体会本次实验在前一次的实验基础上增加均值滤波和中值滤波,对于椒盐噪声的处理,发现中值滤波的效果更为好一点,而均值滤波是的整个图像变得模糊了一点,效果差异较大。本次实验更加增加了对数字图像处理的了解与学习。七、实验程序代码注释及 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 //HistDemoADlg.h:头文件//#include"ImageWnd.h"#pragmaonce//CHistDemoADlg对话框classCHistDemoADlg:publicCDialogEx{//构造public:CHistDemoADlg(CWnd*pParent=NULL);// 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 构造函数intnWidth;intnHeight;intnLen;intnByteWidth;BYTE*lpBackup;BYTE*lpBitmap;BYTE*lpBits;CStringFileName;CImageWndsource,dest;//对话框数据enum{IDD=IDD_HISTDEMOA_DIALOG};protected:virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持//实现protected:HICONm_hIcon;//生成的消息映射函数virtualBOOLOnInitDialog();afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);afx_msgvoidOnPaint();afx_msgHCURSOROnQueryDragIcon();DECLARE_MESSAGE_MAP()public:voidLoadBitmap(void);afx_msgvoidOnOpen();afx_msgvoidOnHist();voidHistogramEq(void);voidNoColor(void);voidHistogramEq1(intnWidth,intnHeight,BYTE*lpInput,BYTE*lpOutput);voidMeanFilter(intnWidth,intnHeight,BYTE*lpInput,BYTE*lpOutput);voidMedianFilter(intnWidth,intnHeight,BYTE*lpInput,BYTE*lpOutput);afx_msgvoidOnBnClickedClose();afx_msgvoidOnBnClickedMeanfilter();afx_msgvoidOnBnClickedMedianfilter();};HistDemoADlg.cpp对HistDemoADlg.h进行具体的实现,OnOpen()函数响应ID为IDC_OPEN的按钮事件,而且会调取文件选择对话框,选取文件之后,会显示在原始图像区域显示对应的位图图像,OnHist()函数会响应ID为IDC_HIST的按钮事件,调用HistogramEq()进行直方图均衡化的处理,HistogramEq()会调用HistogramEq1()进行直方图均衡化的处理,并用dst.setImage()显示处理之后的图像,以及NoColor()函数,对原始图像转化为灰度图像之后再显示。//HistDemoADlg.cpp:实现文件//#include"stdafx.h"#include"HistDemoA.h"#include"HistDemoADlg.h"#include"afxdialogex.h"#ifdef_DEBUG#definenewDEBUG_NEW#endif#definePoint(x,y)lpPoints[(x)+(y)*nWidth]#definePoint1(x,y)lpPoints1[(x)+(y)*nWidth]//用于应用程序“关于”菜单项的CAboutDlg对话框classCAboutDlg:publicCDialogEx{public:CAboutDlg();//对话框数据enum{IDD=IDD_ABOUTBOX};protected:virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持//实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg():CDialogEx(CAboutDlg::IDD){}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg,CDialogEx)END_MESSAGE_MAP()//CHistDemoADlg对话框CHistDemoADlg::CHistDemoADlg(CWnd*pParent/*=NULL*/):CDialogEx(CHistDemoADlg::IDD,pParent){m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);lpBitmap=0;lpBackup=0;}voidCHistDemoADlg::DoDataExchange(CDataExchange*pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CHistDemoADlg,CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_OPEN,&CHistDemoADlg::OnOpen)ON_BN_CLICKED(IDC_HIST,&CHistDemoADlg::OnHist)ON_BN_CLICKED(IDCLOSE,&CHistDemoADlg::OnBnClickedClose)ON_BN_CLICKED(IDC_MEANFILTER,&CHistDemoADlg::OnBnClickedMeanfilter)ON_BN_CLICKED(IDC_MEDIANFILTER,&CHistDemoADlg::OnBnClickedMedianfilter)END_MESSAGE_MAP()//CHistDemoADlg消息处理程序BOOLCHistDemoADlg::OnInitDialog(){CDialogEx::OnInitDialog();//将“关于...”菜单项添加到系统菜单中。//IDM_ABOUTBOX必须在系统命令范围内。ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX<0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!=NULL){BOOLbNameValid;CStringstrAboutMenu;bNameValid=strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if(!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}}//设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动//执行此操作SetIcon(m_hIcon,TRUE);//设置大图标SetIcon(m_hIcon,FALSE);//设置小图标//TODO:在此添加额外的初始化代码source.Create(0,L"Source",WS_CHILD|WS_VISIBLE,CRect(40,40,360,280),this,10000);dest.Create(0,L"Destination",WS_CHILD|WS_VISIBLE,CRect(400,40,720,280),this,10001);returnTRUE;//除非将焦点设置到控件,否则返回TRUE}voidCHistDemoADlg::OnSysCommand(UINTnID,LPARAMlParam){if((nID&0xFFF0)==IDM_ABOUTBOX){CAboutDlgdlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID,lParam);}}//如果向对话框添加最小化按钮,则需要下面的代码//来绘制该图标。对于使用文档/视图模型的MFC应用程序,//这将由框架自动完成。voidCHistDemoADlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND,reinterpret_cast(dc.GetSafeHdc()),0);//使图标在工作区矩形中居中intcxIcon=GetSystemMetrics(SM_CXICON);intcyIcon=GetSystemMetrics(SM_CYICON);CRectrect;GetClientRect(&rect);intx=(rect.Width()-cxIcon+1)/2;inty=(rect.Height()-cyIcon+1)/2;//绘制图标dc.DrawIcon(x,y,m_hIcon);}else{CDialogEx::OnPaint();}}//当用户拖动最小化窗口时系统调用此函数取得光标//显示。HCURSORCHistDemoADlg::OnQueryDragIcon(){returnstatic_cast(m_hIcon);}voidCHistDemoADlg::LoadBitmap(){//位图文件:BITMAPFILEHEADER+BITMAPINFOHEADER+有效信息部分BITMAPINFOHEADER*pInfo;//位图文件的头部信息指针pInfopInfo=(BITMAPINFOHEADER*)(lpBitmap+sizeof(BITMAPFILEHEADER));//pInfo指向位图文件的头部信息nWidth=pInfo->biWidth;//图片宽度nByteWidth=nWidth*3;//字节宽度if(nByteWidth%4)nByteWidth+=4-(nByteWidth%4);//使字节宽度为4的整数倍nHeight=pInfo->biHeight;//图片高度if(pInfo->biBitCount!=24)//位图的位深度不为24{if(pInfo->biBitCount!=8)//位深度不为8{AfxMessageBox(L"无效位图");deletelpBitmap;lpBitmap=0;return;}//位深度为8unsignedintPaletteSize=1<biBitCount;//左移8位,PaletteSize调色板尺寸if(pInfo->biClrUsed!=0&&pInfo->biClrUsedbiClrUsed;//biClrUsed位图实际使用的颜色 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 中的颜色数lpBits=lpBitmap+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);//lpBits指向有效信息部分RGBQUAD*pPalette=(RGBQUAD*)lpBits;//颜色表部分/*typedefstructtagRGBQUAD{BYTErgbBlue;BYTErgbGreen;BYTErgbRed;BYTErgbReserved;}RGBQUAD;*/lpBits+=sizeof(RGBQUAD)*PaletteSize;//lpBits指向图像有效信息部分nLen=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+nByteWidth*nHeight;//整个位图文件的长度BYTE*lpTemp=lpBitmap;lpBitmap=newBYTE[nLen];BITMAPFILEHEADERbmh;BITMAPINFOHEADERbmi;bmh.bfType='B'+'M'*256;bmh.bfSize=nLen;bmh.bfReserved1=0;bmh.bfReserved2=0;bmh.bfOffBits=54;bmi.biSize=sizeof(BITMAPINFOHEADER);bmi.biWidth=nWidth;bmi.biHeight=nHeight;bmi.biPlanes=1;bmi.biBitCount=24;bmi.biCompression=BI_RGB;bmi.biSizeImage=0;bmi.biXPelsPerMeter=0;bmi.biYPelsPerMeter=0;bmi.biClrUsed=0;bmi.biClrImportant=0;intnBWidth=pInfo->biWidth;if(nBWidth%4)nBWidth+=4-(nBWidth%4);memset(lpBitmap,0,nLen);memcpy(lpBitmap,&bmh,sizeof(BITMAPFILEHEADER));//位图文件头部memcpy(lpBitmap+sizeof(BITMAPFILEHEADER),&bmi,sizeof(BITMAPINFOHEADER));//位图信息头部BYTE*lpBits2=lpBitmap+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);//位图图像信息部分intx,y,p1,p2,Palette;for(y=0;y 通知 关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知 处理程序代码CFileFile;CFileDialogdlg(TRUE,0,0,OFN_HIDEREADONLY,L"位图文件|*.bmp|所有文件|*.*||",this);//新建文件选择对话框if(dlg.DoModal()==IDOK){FileName=dlg.GetPathName();//得到文件的路径if(!File.Open(FileName,CFile::modeRead))return;//以只读方式打开文件//TODO:addloadingcodehereif(lpBitmap)deletelpBitmap;//保证lpBitmap为空nLen=(int)File.GetLength();//得到文件的长度lpBitmap=newBYTE[nLen];//为lpBitmap分配空间File.Read(lpBitmap,nLen);//将文件的内容读入到lpBitmap所指向的内存区域LoadBitmap();//调用LoadBitmap(),加载位图图像if(lpBitmap)source.SetImage(nWidth,nHeight,lpBits);}}voidCHistDemoADlg::OnHist(){//TODO:在此添加控件通知处理程序代码HistogramEq();}voidGetPoints(intnWidth,intnHeight,BYTE*lpBits,BYTE*lpPoints){intx,y,p;intnByteWidth=nWidth*3;if(nByteWidth%4)nByteWidth+=4-(nByteWidth%4);for(y=0;yFillSolidRect(0,0,320,240,BACKGROUND);returnTRUE;}voidCImageWnd::OnPaint()//绘制函数,每次需要显示的图像发生变化,就会重画,重复调用这个函数进行重画{CPaintDCdc(this);//当前对象作为参数if(lpBits){intx,y;x=-HScrollPosition;y=-VScrollPosition;if(nWidth<320)x=(320-nWidth)/2;if(nHeight<240)y=(240-nHeight)/2;//设置绘制位图文件的头信息BITMAPINFOHEADERbmi;bmi.biSize=sizeof(BITMAPINFOHEADER);bmi.biWidth=nWidth;bmi.biHeight=nHeight;bmi.biPlanes=1;bmi.biBitCount=24;bmi.biCompression=BI_RGB;bmi.biSizeImage=0;bmi.biXPelsPerMeter=0;bmi.biYPelsPerMeter=0;bmi.biClrUsed=0;bmi.biClrImportant=0;//将像素点填充到绘图区域StretchDIBits(dc.m_hDC,x,y,nWidth,nHeight,0,0,nWidth,nHeight,lpBits,(BITMAPINFO*)&bmi,DIB_RGB_COLORS,SRCCOPY);}}voidCImageWnd::OnHScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar)//水平滚轮事件处理函数,{switch(nSBCode){caseSB_LINEDOWN://每次滑动的间隔为5个像素点HScrollPosition+=5;break;caseSB_LINEUP:HScrollPosition-=5;break;caseSB_PAGEDOWN://滑到最底端HScrollPosition+=320;break;caseSB_PAGEUP://滑到最顶端HScrollPosition-=320;break;caseSB_THUMBPOSITION:caseSB_THUMBTRACK:HScrollPosition=nPos;break;}if(HScrollPosition<0)HScrollPosition=0;//滑动位置小于0,设为0if(HScrollPosition>HScrollMax)HScrollPosition=HScrollMax;//滑动位置大于最大值,设为最大值SetScrollPos(SB_HORZ,HScrollPosition);//水平方向滑动距离if(HCurrentPosition!=HScrollPosition)//HCurrentPosition和HScrollPosition不相等就滑动{ScrollWindow(HCurrentPosition-HScrollPosition,0);//窗口滑动多少HCurrentPosition=HScrollPosition;//将当前滑动位置设为HScrollPosition}CWnd::OnHScroll(nSBCode,nPos,pScrollBar);}voidCImageWnd::OnVScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar)//垂直方向的滑动事件处理{switch(nSBCode){caseSB_LINEDOWN:VScrollPosition+=5;break;caseSB_LINEUP:VScrollPosition-=5;break;caseSB_PAGEDOWN:VScrollPosition+=240;break;caseSB_PAGEUP:VScrollPosition-=240;break;caseSB_THUMBPOSITION:caseSB_THUMBTRACK:VScrollPosition=nPos;break;}if(VScrollPosition<0)VScrollPosition=0;if(VScrollPosition>VScrollMax)VScrollPosition=VScrollMax;SetScrollPos(SB_VERT,VScrollPosition);if(VCurrentPosition!=VScrollPosition){ScrollWindow(0,(VCurrentPosition-VScrollPosition));VCurrentPosition=VScrollPosition;}CWnd::OnVScroll(nSBCode,nPos,pScrollBar);}intCImageWnd::OnCreate(LPCREATESTRUCTlpCreateStruct)//创建,完成初始化工作{if(CWnd::OnCreate(lpCreateStruct)==-1){return-1;}return0;}voidCImageWnd::SetImage(intcx,intcy,constvoid*bits)//设置需要绘制的位图的宽度和高度,以及像素点的信息{nWidth=cx;nHeight=cy;nByteWidth=nWidth*3;if(nByteWidth%4)nByteWidth+=4-(nByteWidth%4);if(lpBits)deletelpBits;lpBits=newBYTE[nByteWidth*nHeight];memcpy(lpBits,bits,nByteWidth*nHeight);if(cx>320||cy>240)SetScroll(cx,cy);elseSetScroll(0,0);//不滑动Invalidate();}voidCImageWnd::SetScroll(intcx,intcy)//设置初始时,滑动条的位置,以及滑动的最大值{HScrollPosition=0;HCurrentPosition=0;VScrollPosition=0;VCurrentPosition=0;SetScrollPos(SB_HORZ,0);SetScrollPos(SB_VERT,0);SCROLLINFOsinfo;sinfo.cbSize=sizeof(SCROLLINFO);sinfo.fMask=SIF_PAGE|SIF_RANGE;sinfo.nMin=0;sinfo.nMax=cx-1;sinfo.nPage=320;SetScrollInfo(SB_HORZ,&sinfo);HScrollMax=cx-320;//设置水平滑动的最大位置sinfo.nMax=cy-1;sinfo.nPage=240;SetScrollInfo(SB_VERT,&sinfo);VScrollMax=cy-240;//设置垂直滑动的最大位置}
本文档为【数字图像处理实验三中值滤波和均值滤波实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
wassyy
本人从事施工专职安全员多年,对施工现场安全管理、内业资料管理具有丰富的经验。
格式:doc
大小:28KB
软件:Word
页数:22
分类:
上传时间:2023-03-04
浏览量:1