如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
实验目的与要求1.1提高图像的视感质量,已达到赏心悦目的目的。如取出图像中的噪声,改变图像的亮度、颜色;1.2提取图像中包含的某些特征或特殊信息。1.3对图像数据进行变换、编码和压缩,以便图像的存储和传输实验内容2.1对图像进行打开此功能打开图像文件如.jpg.bmp.gif.2.2对图像进行保存对改动后的图像进行保存2.3对图像进行另存2.4对图像进行直方图统计2.5对图像进行平滑处理2.6对图像进行平移操作使图像按用户规定的平移向量做出相应平移。2.7对图像水平和垂直镜像3.方案设计实验所用编程环境4.功能模块的实现1.文件打开:用的消息响应函数是CmdiTestApp::onFileOpen();2.文件保存:用的消息响应函数是CmdiTestApp::onFileSaveAs一旦更名保存,就需要将该图像的所属的子窗口标题更新为新的文件名,用到的成员函数pChildFram->SetWindowText();3.文件显示:用的消息响应函数是CmdiTestView::onDraw();4.直方图显示:直方图是灰度级函数,他反应了图像中每一灰度级出现的次数。用到voidCMdiTestView::ZhiFangTu(CDibObject*dib,int*pHist)计算,并用voidCMdiTestView::DrawHist(CDC*pDC)绘画出直方图。并在显示图像的时候调用此函数一同事显示直方图。if(pDoc->m_pDibObject->GetNumBits()<24)DrawHist(pDC);5.图像平移:(△x,△y)为平移变量。则p(x0,y0)变为(x,y),x0=x-△x,y0=y-△y;调用相应函数voidCMdiTestDoc::OnPingYi()。并有一个要用户输入平移向量的对话框类:CdlgPingYi。6.平滑处理:图像平滑的目的之一是消除噪声;其二就是模糊图像,在提取大目标之前去除小的细节或弥合目标间的缝隙。7.镜像:分为水平镜像和垂直镜像,不改变图像的形状。水平镜像的响应函数voidCMdiTestDoc::OnHoriMirror(),垂直镜像的响应函数:voidCMdiTestDoc::OnVeriMirror()。他们的功能相似,都是调用处理镜像的函数BOOLCAreaPro::Mirror(BOOLbDirection,CDibObject*pDibObject)。只是传入的参数不一样。水平:bDirection为TRUE。垂直bDirection为false。5.测试和调试对副不同格式的图片进行处理,以测试各个功能的健壮性:打开&直方图显示:发现这程序是可以打开并显示.BMP文件,但是不能打开.jpg文件。因此程序还需改进。平滑处理:输入不同的模板,可以对图像做出不同的平滑处理。图像平移根据不同的平移向量,做出相应的平移处理。测试证明成功。平移后,用白色填充剩余部分水平镜像:测试成功,使是图像做了水平镜像。垂直镜像:测试的时候发现点击垂直镜像,没有任何反应,但是水平镜像是成功的,我就想,这两个模块是差不多的,为什么一个成功一个失败,应该不是函数写错了,于是我在垂直镜像了响应函数voidCMdiTestDoc::OnVeriMirror()里面加了一句:AfxMessageBox("垂直镜像失败");放在函数的最前面。发现运行是并没有弹出这个消息框。可见根本没有进入这个相应函数。这就说明是建立映射的时候失败了。于是我重新建立了一次映射,终于成功了。6.总结与体会在此次实验中,我不仅加强了对MFC的熟悉程度,并且对数字图像有了更深的认识,我们没天每时每刻都会看到各种各样的图片,但从来不曾知道图片是由什么组成的,是怎么修饰处理更它变得更好看。所以在这次实验中骂我受益匪浅,虽然还只会对图像进行简单的处理,但是这为以后能从事此方面的开发打下了很好的基础。其实在计算机内数字图像的本质就是将模拟图像数字化,用数字表示它的各种属性,所以对图像的各种处理就是对表示相应属性的数字改变。这样就对数学的要求很高了,一个好的算法,能使处理的效果更好。比如在对图像的缩放处理使,放的太大就会出现马赛克,而“线性插值法”就会比“最近邻域法”效果好。7.参考文献《数字图像处理》主编何东健西安电子科技大学出版社