收藏 分享(赏)

快速中值滤波算法.doc

上传人:gnk289057 文档编号:6545906 上传时间:2019-04-16 格式:DOC 页数:14 大小:194.50KB
下载 相关 举报
快速中值滤波算法.doc_第1页
第1页 / 共14页
快速中值滤波算法.doc_第2页
第2页 / 共14页
快速中值滤波算法.doc_第3页
第3页 / 共14页
快速中值滤波算法.doc_第4页
第4页 / 共14页
快速中值滤波算法.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、 南 昌 大 学 实 验 报 告学生姓名: 洪僡婕 学 号: 6100411159 专业班级: 数媒 111 班 实验类型: 验证 综合 设计 创新 实验日期: 4.29 实验成绩: 一、实验项目名称数字图像处理二、实验目的实现快速中值滤波算法三、实验内容用 VC+实现中值滤波的快速算法四、主要仪器设备及耗材PC 机一台五、实验步骤/ ImageProcessingDoc.cpp : implementation of the CImageProcessingDoc class/#include “stdafx.h“#include “ImageProcessing.h“#include “I

2、mageProcessingDoc.h“#include “GreyRatio.h“#include #define PI (acos(0.0) * 2) #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CImageProcessingDocIMPLEMENT_DYNCREATE(CImageProcessingDoc, CDocument) BEGIN_MESSAGE_MAP(CImageProcessingDoc, CDocument)/AFX_MSG_MAP(

3、CImageProcessingDoc)ON_COMMAND(ID_HISTOGRAM_ADJUSTIFCATION, OnHistogramAdjustifcation)ON_COMMAND(ID_FFT, OnFft)ON_COMMAND(ID_SALT_PEPPER_NOICE, OnSaltPepperNoice)ON_COMMAND(ID_RANDOM_NOISE, OnRandomNoise)ON_COMMAND(ID_MEDIAN_FILTERING, OnMedianFiltering)ON_COMMAND(ID_DCT, OnDct)ON_COMMAND(ID_FWT, On

4、Fwt)ON_COMMAND(ID_DHT, OnDht)ON_COMMAND(ID_WAVELET_TRANSFORM, OnWaveletTransform)ON_COMMAND(ID_GREY_ADJUSTIFCATION, OnGreyAdjustifcation)ON_COMMAND(ID_GREY_LINEAR_ADJUSTIFCATION, OnGreyLinearAdjustifcation)ON_COMMAND(ID_GREY_SEGLINEAR_ADJUSTIFCATION, OnGreySeglinearAdjustifcation)ON_COMMAND(ID_2DGRA

5、D, On2dgrad)ON_COMMAND(ID_ROBERT, OnRobert)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CImageProcessingDoc construction/destructionCImageProcessingDoc:CImageProcessingDoc()/ TODO: add one-time construction code heremImageFile = NULL;bFileIsLoad = FALSE;nRows = 256;nCols = 256;mSourceData = NULL;pSourceData = NUL

6、L;bDataIsProcessed = FALSE;mResultData = FALSE;pResultData = FALSE;FourierDataR = NULL;FourierDataI = NULL;CImageProcessingDoc:CImageProcessingDoc()BOOL CImageProcessingDoc:OnNewDocument()if (!CDocument:OnNewDocument()return FALSE;/ TODO: add reinitialization code here/ (SDI documents will reuse thi

7、s document)return TRUE;/ CImageProcessingDoc serializationvoid CImageProcessingDoc:Serialize(CArchivevoid CImageProcessingDoc:Dump(CDumpContext#endif /_DEBUG/ CImageProcessingDoc commandsBOOL CImageProcessingDoc:OnOpenDocument(LPCTSTR lpszPathName) int x;int y; if (!CDocument:OnOpenDocument(lpszPath

8、Name)return FALSE;/ TODO: Add your specialized creation code here if(mSourceData) free(mSourceData);mSourceData = NULL;if (!(mSourceData = (unsigned char *)malloc(nRows*nCols*sizeof(unsigned char)return FALSE; if (pSourceData) free(pSourceData);pSourceData = NULL;if (!(pSourceData = (unsigned char *

9、)malloc(3*nRows*nCols*sizeof(unsigned char)return FALSE; if (mResultData) free(mResultData);mResultData = NULL;if (!(mResultData = (unsigned char *)malloc(nRows*nCols*sizeof(unsigned char)return FALSE; if (pResultData) free(pResultData);pResultData = NULL;if (!(pResultData = (unsigned char *)malloc(

10、3*nRows*nCols*sizeof(unsigned char)return FALSE;if (mImageFile) fclose(mImageFile);mImageFile = NULL;if (!(mImageFile = fopen(lpszPathName,“rb“)free(mSourceData);return FALSE;if (fread(mSourceData,sizeof(unsigned char),nRows*nCols,mImageFile) != (unsigned)nCols*nRows) free(mSourceData);fclose(mImage

11、File);mImageFile = NULL;bFileIsLoad = false;return FALSE;for(y = 0; y =k) j = j-k;k = k/2;j = j + k;if (i 255.0)temp = 255.0; ii = nRows - 1 - (i31500) / 指向源图像倒数第j行,第i个象素的指针lpSrc = (unsigned char *)/图像中当前点置为黑*lpSrc = 0;/ 返回return ;void CImageProcessingDoc:Random_Noise(unsigned char *mdata, int nHeig

12、ht, int nWidth) / 指向源图像的指针unsigned char* lpSrc;/循环变量long i;long j; /像素值unsigned char pixel; /噪声BYTE NoisePoint; /生成伪随机种子srand(unsigned)time(NULL); /在图像中加噪for (j = 0;j nHeight-nR-1) | (jnWidth-nR-1)resultdatai*nWidth+j = 0;else for(m=-nR;m255?255:tmp;pResultData3*y*nCols+3*x = tmp;pResultData3*y*nCol

13、s+3*x+1 = tmp;pResultData3*y*nCols+3*x+2 = tmp;UpdateAllViews(NULL);void CImageProcessingDoc:OnGreySeglinearAdjustifcation() / TODO: Add your command handler code herevoid CImageProcessingDoc:On2dgrad() / TODO: Add your command handler code hereint x;int y;int dx;int dy;int tmp;for(y=0;y255?255:tmp;

14、pResultData3*y*nCols+3*x = tmp;pResultData3*y*nCols+3*x+1 = tmp;pResultData3*y*nCols+3*x+2 = tmp;UpdateAllViews(NULL);void CImageProcessingDoc:OnRobert() / TODO: Add your command handler code hereint x;int y;int dx;int dy;int tmp;for(y=0;y255?255:tmp;pResultData3*y*nCols+3*x = tmp;pResultData3*y*nCo

15、ls+3*x+1 = tmp;pResultData3*y*nCols+3*x+2 = tmp;UpdateAllViews(NULL);void CImageProcessingDoc:DCTandIDCT(float *Ff, int N, bool bDctIDct)float *mR;float *mI;int i;float Ff0 = 0;mR = new floatN*2;mI = new floatN*2;if(bDctIDct)for(i=0;i2*N;i+)if(iN)mRi = Ffi;elsemRi = 0;mIi = 0; for(i=0;iN;i+)Ff0 += F

16、fi;Ff0 = Ff0/sqrt(N); FFTandIFFT(mR,mI,2*N,true) Ff0 = Ff0;for(i=0;iN;i+)Ffi = (mRi*cos(i*PI/(2*N) + mIi*sin(i*PI/(2*N) *sqrt(2.0/N);elsefor(i=0;i2*N;i+)if(iN)mRi = Ffi*cos(i*PI/(2*N);mIi = Ffi*sin(i*PI/(2*N); elsemRi = 0;mIi = 0; for(i=0;iN;i+)Ff0 += Ffi;Ff0 = Ff0/sqrt(N);FFTandIFFT(mR,mI,2*N,false

17、);for(i=0;iN;i+)Ffi = 1/sqrt(N) - sqrt(2.0/N) + sqrt(2.0/N)*mRi; return;六、实验数据七、思考及体会在设计算法编制程序的时候,我们充分考虑到程序运行的时间复杂度和空间复杂度问题,在解决问题的前提下,使算法尽量简单,使程序运行占有的空间尽量的小,这样来减少不必要的时问浪费和空间浪费,从而太大的提高程序执行的效率。采用迭代,逐次逼近的方法得到本次的中值,在一行处理完毕后转人下一行也采用走S型的方法这样除第一个窗口采用了一伏排序得到中值外,其它的窗口都利用上伏的窗口的象素删除无用的3个象素后再加人新的3个象素,利用迭代的方法得到本次窗口的中值这样太大地提高了程序执行的效率。本实验充分考虑到程序运行的时间复杂度和空间复杂度问题。解决了图象大而内存不足的问题。对中值滤波的普通算法采用一般的常规算法,而对其快速算法采用走S型并且迭代的方法。采用对程序运行计时的方法对中值滤波的快速算法和普通算法进行精确的比较,结论可靠。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 数据结构与算法

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报