基于VS201的BMP位图的中值化处理.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于VS201的BMP位图的中值化处理

基于MEDIAN算子的中值处理 实验内容: 本实验采用MEDIAN算子对BMP位图图像进行中值处理,实现图像的平滑和滤波效果。本实验在Visual Studio 2010开发环境下完成,并且调用OpenCV库函数。 相关介绍: 2.1 BMP位图 数字图像在外存储器设备中的存储形式是图像文件,图像必须按照某个已知的、公认的数据存储顺序和结构进行存储,才能使不同的程序对图像文件顺利进行打开或存盘操作,实现数据共享。图像数据在文件中的存储顺序和结构称为图像文件格式。目前广为流传的图像文件格式有许多种,常见的格式包括BMP、GIF、JPEG、TIFF、PSD、DICOM、MPEG等。 BMP位图文件是Windows操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,所以称为位图(bitmap)文件,因其文件扩展名为BMP,故称为BMP文件格式,简称BMP文件。 BMP图像文件被分成4个部分:位图文件头(Bitmap File Header)、位图信息头(Bitmap Info Header)、颜色表(Color Map)和位图数据(即图像数据,Data Bits或Data Body)。 其中,位图文件头主要包含文件类型、大小、数据起始位置等数据,共14Byte;位图信息头主要包含图像宽(width)、高(Hight)和每像素数据位数,共40Byte;位图颜色表共1024Byte,主要针对8Bit的灰度图,24Bit真彩色图没有颜色表;位图数据,对于灰度图为各像素点灰度值在颜色表的索引值,真彩色图为各像素点的RGB三色值。 需要注意: 第一,Windows规定一个扫描行所占的字节数必须是4的倍数,不足4的倍数则要对其进行扩充。假设图像的宽为biWidth个像素、每像素biBitCount个比特,其一个扫描行所占的真实字节数的计算公式如下: DataSizePerLine = (biWidth * biBitCount /8+ 3) / 4*4 那么,不压缩情况下位图数据的大小(BITMAPINFOHEADER结构中的biSizeImage成员)计算如下: biSizeImage = DataSizePerLine * biHeight 第二,一般来说,BMP文件的数据是从图像的左下角开始逐行扫描图像的,即从下到上、从左到右,将图像的像素值一一记录下来,因此图像坐标零点在图像左下角。 OpenCV(open source computer version Library,开源计算机视觉库),是Intel发起的是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 本实验主要使用OpenCV函数库(opencv2\opencv.hpp),调用imshow函数在窗口显示图像文件。 图3-1-1 程序总体框架 本程序首先在窗口显示源图像,然后读入源图像数据,接着对源图像的位图数据进行中值处理,再者将数据写入目标图像文件,最后在窗口显示目标图像。 四、具体设计: 4.1 配置Visual Studio 2010和OpenCV OpenCV是第三方的函数库,需要对Visual Studio 2010做一些配置,以便在Visual Studio 2010环境下调用OpenCV的函数库里的imshow函数显示图像文件。 4.2 main函数 main函数主要是输出程序的一些基本信息和源图像的一些重要数据(宽、高、每像素位数等),以及提示和获取用户输入的源图像和目标图像的信息以便调用各功能模块子函数完成图像中值处理的功能。 各功能模块子函数包括: showimage子函数:显示源和目标图像; readbmp子函数:读入源图像文件; imagecom8/24子函数,对源图像数据进行中值处理; savebmp子函数,创建并保存目标图像文件; 4.2 showimage子函数 调用OpenCV的函数库(opencv2\opencv.hpp)的imshow函数在窗口显示图像文件。 4.3 readbmp子函数 ifstream(fstream.h)定义文件输入流对象infile打开源图像文件; 使用流对象infile的成员函数seekg定位源图像信息头,并定义信息头结构体(Windows.h)变量inforhead,调用infile成员函数read读取源图像宽、高、每像素数据Bit位数等给结构体inforhead; 读颜色表(对于8Bit位的灰度图)进内存; 读图像数据进内存。

文档评论(0)

qee026 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档