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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字图像处理实验三

均值滤波、中值滤波的计算机实现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()函数,对原始图像转化为灰度图像之后再显示。

// HistDemoADlg.cpp : 实现文件

//

#include "stdafx.h"

#include "HistDemoA.h"

#include "HistDemoADlg.h"

#include "afxdialogex.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

#define Point(x,y) lpPoints[(x)+(y)*nWidth]

#define Point1(x,y) lpPoints1[(x)+(y)*nWidth]

// 用于应用程序“关于”菜单项的CAboutDlg 对话框

class CAboutDlg : public CDialogEx

{

public:

CAboutDlg();

// 对话框数据

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持

// 实现

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)

相关文档
最新文档