版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字图像处理课程综合实习 指导书武汉大学遥感信息工程学院实验中心数字图像处理课程综合实习说明实习目的本实习内容旨在让学生通过用 VC 等高级语言编写数字图像处理的一 些基本算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手 能力,并通过实际编程了解图像处理软件的实现的基本原理。为学生进一 步学习数字摄影测量、遥感和地理信息系统等专业课程以及应用图像处理 解决实际问题奠定基础。实习要求:(1实习前应认真复习和熟悉图像的存储格式、图像处理的常用算 法的理论知识。(2实习者应熟悉 C 或 VC 程序设计语言。(3每人固定用一台计算机,以班级学号名建立文件夹,将自己的 实习成果存放在自己的文件
2、夹中。(4实习完成后,老师将根据最后成果评分。(5每个同学最后要递交一份实习报告和按实习要求编写的程序。 实习考核评分办法:(1 考 勤(迟到、早退、旷课扣分 (20分 ;(2 编 程实现的算法和功能(50分 ;(3 实 习报告(30分 ;第一部分 数字图像处理的基础知识1、数字图像概念数字图像是连续图像的一种近似表示,通常用由采样点的值所组成的矩阵来表示 :每一个采样点叫做一个像素(pixel 。上式中 m,n 分别为数字图像的行数和列数。在计算机内,通 常采用二维数组来表示数字图像的矩阵。 把像素按不同的方式进行组织或存储, 就得到不同的图像 格式, 把图像数据存成文件就得到图像文件。 图
3、像文件按其数字图像格式的不同一般具有不同的扩 展名, 常见的图像文件格式有:RAW 格式、 BMP 格式、 TGA 格式、 PCX 格式、 GIF 格式、 TIFF 格式等。2、 BMP 文件构成BMP 格式:这是一种常用的数字影像格式, 一个 BMP 文件大体上分成如下 4个部分:BITMAPFILEHEADER (位图文件头 、 BITMAPINFOHEADER (位图信息头 、 Palette (调色版 、 DIB Pixels(DIB 图像数 据 。第一部分:位图文件头 BITMAPFILEHEADER ,它是一个结构typedef struct tagBITMAPFILEHEADER
4、WORD bfType;DWORD bfSize;WORD bfReserved1;WORD bfReserved2;DWORD bfOffBits;BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER;该结构的长度是固定的,为 14个字节,各参数说明如下: bfType :指定文件类型,必须是 0x424D ,即字符串“BM”。也就是说所有的“.bmp”文件的头两个字节都是“BM” bfSize :指定文件大小; bfReserved1、 bfReserved2:为保留字,不用考虑; bfOffBits :为文件头到实际的位图数据的偏移字节数,也就是前三部分长度
5、之和。第二部分:位图信息头 BITMAPINFOHEADERtypedef struct tagBITMAPINFOHEADERDWORD bfSize;LONG biWidth;LONG biHeight;WORD biPlanes;WORD biBitCount;DWORD biCompression;DWORD biSizeImage;LONG biXPelsPerMeter;=-1, 11, 10, 11, 11, 10, 11, 01, 00, 0, n m m m n n i i i i i i i i i n m I ILONG biYPersPerMeter;DWORD biC
6、lrUsed;DWORD biClrImportant;BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER;该结构的长度为 40个节,各 参数的意义说明如下: biSize :指定这个结构的大小,为 40个字节; biWidth :指定图像的宽度,单位是像素; biHeight :指定图像的高度,单位是像素; biPlanes :必须是 1; biBitCount :指定表示颜色要用到的位数,常用的值 1(黑白 8(256色 、 24(真彩色 ; biCompression :指定位图是否压缩,有效值为 BI_RGB、 BI_RLE4、 BI_RLE8。其中 B
7、I_RGB为不压缩的情况。 biSizeImage ;指定实际的位图数据占用的字节数。可以用下面的公式计算:需要注意的是:上述公式中的 ' biWidth 不一定总等于 biWidth , ' biWidth 必须是 4的整数倍,表 示大于或等于 biWidth 的离 4最近的整倍数。 biXPelsPerMeter :指定目标设备的水平分辨率,单位是每米的像素个数; biYPelsPerMeter ;指定目标设备的垂直分辨率,单位是每米的像素个数; biClrUsed :指定本图像实际用到的颜色数,如果该值为 0则用到的颜色数为 2的 biBitCount次幂; biClrI
8、mportant :指定本图像中重要的颜色数, 如果该值为零, 则认为所用的颜色都是重要的。 第三部分:Palette (调色板调色板实际上是一个数组,共有 biClrUsed(颜色数 个元素(如果 该值为 0,则为 2的 biBitCount 次幂 。数组中每个元素 (颜色 的类型为一个 RGBQUAD 结构,占 4个字节。结构定义如下:typedef struct tagRGBQUADBYTE rgbBlue;BYTE rgbGreen;BYTE rgbRed;BYTE rgbReserved;RGBQUAD;注意:有些位图,比如真彩色图,没有调色板。他们的位图信息头(BITMAPINFO
9、HEADER 后直接是 DIB 数据。第四部分:DIB 图像数据分两种情况:对于用到调色板的位图,图像数据就是该像素颜色在调色板 中的索引值;对于真彩色图,图像数据就是实际的 R 、 G 、 B 值。 对于 2色位图,用 1位就可以表示该像素的颜色,因此一个字节可以表示 8个像素; 对于 16色位图,用 4位可以表示一个像素的颜色,所以 1个字节可以表示 2个像素; 对于 256色位图,一个字节刚好表示一个像素; 对于真彩色图, 3个字节才能表示 1个像素注意:1. 每一行的字节数必须是 4的整倍数,如果不是,则需要补齐;2. 图像数据是按照从上到下、 从左到右的顺序存储; 我们最先读到的是图
10、像最下面一行的 左边第一个像素, 然后是左边第二个像素接下来是倒数第二行左边第一个像素, 左第二个像素依此 类推,最后得到的是最上面一行的最后一个像素。Im biSize age biWidth biHeight'=3、常用位图函数int SetDIBitsToDevice(HDC hdc,int XDest,int YDest,DWORD dwWidth, DWORD wHeight,int XSrc,int YSrc,UINT uStartScan, UINT cScanLines,CONST VOID *lpBits, CONST BITMAPINFO *lpbmi,UINT f
11、uColorUse该函数可以直接在显示器或打印机上显示 DIB ,在显示时不进行缩放处理,即位图的每一个 像素对应于一个显示像素或打印机的打印点。其中各参数的含义如下:HDC hdc:设备上下文句柄。它可以是 CDC 对象的公共成员变量 m_hDC。int Xdest:指定绘图区域的左上角 x 坐标(逻辑单位int Ydest:指定绘图区域的左上角 y 坐标(逻辑单位DWORD dwWidth:指定 DIB 的宽度(逻辑单位DWORD dwHeight:指定 DIB 的高度(逻辑坐标int Xsrc:指定原绘图要绘制区域的左上角 x 坐标(逻辑单位int Ysrc:指定原绘图要绘制区域的左上角
12、 y 坐标(逻辑单位UINT uStartScan:指定 DIB 扫描的起始行UINT cScanLines:指定 DIB 扫描的行数(即 DIB 的高度CONST VOID* lpBits:指向 DIB 图像数据的指针lpbmi :指向 BITMAPINFO 结构的指针fuColorUse :指定 BITMAPINFO 结构中的 bmiColors 参数代表真实的 RGB 值还是调色板中的索引值, 它有两种可能的取值:DIB_PAL_COLORS:代表索引值DIB_RGB_COLORS:代表真实的 RGB 值该函数如果调用成功,返回绘制的行数;失败,则返回 0。int StretchDIBi
13、ts(HDC hdc,int XDest,int YDest,int nDestWidth,int nDestHeight,int XSrc,int YSrc,int nSrcWidth,int nSrcHeight,CONST VOID *lpvBits,CONST BITMAPINFO *lpbmi,UINTiUsage,DWORD dwRopint nSrcWidth:指定要复制原图像矩形区域的宽度(逻辑单位int nSrcHeight:指定要复制原图像矩形区域的高度(逻辑单位lpBits :指向 DIB 图像数据区的指针lpBitsInfo :指向 BITMAPINFO 结构的指针iU
14、sage :指定 BITMAPINFO 结构中的 bmiColors 参数代表真实的 RGB 值还是调色板中的索引值,它 有两种可能的取值:DIB_PAL_COLORS:代表索引值DIB_RGB_COLORS:代表真实的 RGB 值dwRop :指定绘制方式;常用的值为 SRCCOPY ,表示将原位图复制到目标位图该函数如果调用成功,返回绘制的行数;如果调用失败,则返回 GDI_ERROR。读 .bmp 文件的函数原型HDIB ReadDIBFile(CFile& file函数的参数 Cfile &file:为文件名;该函数的返回值是文件中 的图像数据的句柄。4. 将图像数据保
15、存成 .bmp 文件,函数原型BOOL WINAPI SaveDIB(HDIB hDib, CFile& file第一个参数为 hDIB 表示保存图像数据的内存区域的句柄第二个参数为保存图像的文件名。5、查找位图像素 LPSTR WINAPI FindDIBBits(LPSTR lpbi:此函数用于计算 DIB 位图图像数据的 地址,返回一个指向位图图像数据起始位置的指针。6、 GlobalLock (HGLOBAL hMem 、 GlobalUnLock(HGLOBAL hMem 申请内存、释放内存函数。第二部分 实习内容实习一、将 RAW 图像格式转换成 BMP 图像格式一、实习目
16、的熟悉常用的图像文件格式与格式转换, 认识各图像格式的优缺点; 掌握 RAW 和 BMP 格式的存储 和读取,编程实现 RAW BMP 格式的转换,为读取各种格式文件打基础。二、实习原理RAW 格式:文件按照数字图像组成的二维矩阵,将像素按行列号顺序存储在文件中。这种文件 只含有图像像素数据,不含有信息头,因此,在读图像时,需要根据文件大小,计算图像所包含的 行列号,或者需要事先知道图像大小(矩阵大小 。但这种文件读取和保存简单。RAW 文件按图像上行到下行、左列到右列顺序存储,而 BMP 文件数据区按图像上下行到上行、 左列列到右列顺序存储到数据区。实现 RAW 文件到 BMP 文件的转换,
17、需要为 BMP 文件生成文件头、信息头、颜色表、数据区,将 RAW 文件数据区赋值到 BMP 文件数据区。三、实习内容和要求1、 掌握 BMP 格式的读取和存储,创建 CDib 类;2、 实现从 RAW 格式到 BMP 格式的转换。四、实习步骤1、 根据学号新建自己的文件夹;2、 使用 AppWizard 生成一个基于多文档的项目(自己命名 ;3、 将 CxxxxView 类的基类设为 CscrollView 类,使项目显示图像时支持滚动条;4、 将所给程序的 Dibapi.h 和 Dibapi.cpp 加入自己新建的项目中;5、 编译连接运行自己的程序,看运行结果;6、 添加菜单项“ RAW
18、- BMP ” ,并建立相应的消息处理函数;7、 在函数体内添加自己的代码,实现 RAW 的读取,并实现 RAW 到 BMP 格式的转换功能。8、 修改程序编制中出现的各种语法错误和逻辑错误;9、 检查程序运行结果。实习二 编写线性灰度变换的程序一、实习目的熟悉图像点增强的一般方法,掌握图像点增强的算法和原理,会用编程方法实现 其算法。二、实习原理点运算是指像素值(即像素点上的灰度值通过运算改变之后,可以改善图象的显示效果。这 是一种像素的逐点运算, 是旧图象与新图象之间的映射关系, 是一种简单但却十分有效的一种图象 处理手段。常用方法有灰度线性变换、直方图均衡、对比度调整、直方图规定化、对数
19、变换、指数 变换、密度分割等方法。灰度的线性变换就是指图像的中所有点的灰度按照线性灰度变换函数进行变换。 灰度变换方程 如下:该方程为线性方程。式中参数 i D 为输入图像的像素的灰度值,参数 0D 为输出图像的三、实习内容和要求1、 熟悉基于点运算增强的灰度线性变换算法;2、 认真阅读图像显示程序段以及像素灰度值的读取、改变与存储;3、 在实习一的基础上完成灰度线性变换的程序编制。四、实习步骤1、 打开自己实习一所建的项目;2、 添加菜单项“线性拉伸” ;3、 为该菜单项建立消息处理函数;4、 在函数定义处添加自己的源代码。5、 编译检查语法错误,若编译通过,运行程序,检查是否能实现灰度线性
20、变换。五、思考题1、线性变换后,像素的灰度值是否超出 0-255的范围,若超出,该如何处理? 2、若要实现直方图 均衡,该如何实现?试用流程图表示。( O i i D f D fA D fB=+1010010fA fB fA fB fA fA >=<<<输出图像的对比度将增大 灰度值上移或下移, 更亮或更暗 输入和输出图像相同灰度。 输出图像的对比度将减小 特殊的 255, 1=-=fB fA , 输出图像灰度反转实习三 编写局部处理的程序一、实习目的熟悉图像局部处理的一般方法,掌握图像局部处理的算法和原理,会用编程方法实现其算法。二、实习原理局部处理在处理某一像素时,
21、 利用与该像素相邻的一组像素, 经过某种变换得到处理后图像中 某一点的像素值。 目标像素的邻域一般是由像素组成的二维矩阵, 该矩阵的大小为奇数, 目标像素 位于该矩阵的中央, 即目标像素就是区域的中心像素。 经过处理后, 目标像素的值为经过特定算法 计算后所得的结果。主要的局部处理算法有卷积、 中值滤波 sobel 边缘检测等, 其中卷积算法的应用最广泛, 大部 分的局部处理都采用卷积算法来实现。卷积可以简单地看成加权求和的过程。 卷积时使用的权用一个很小的矩阵来表示, 矩阵的大小 是奇数, 而且与使用的区域的大小相同。 这种权矩阵叫做卷积核, 区域中的每个像素分别与卷积核 中的每个元素相乘, 所有乘积之和即为区域中心像素的新值。 比如, 对于一个 3x3的区域 P 与卷积 核 K 卷积后,区域 P 的中心像素 5p 表示为:=915. i i i k p p其中, P=987654321p p p p p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GBT 34690.7-2017 印刷技术 胶印数字化过程控制 第 7 部分:计算机直接制版》专题研究报告
- 《GBT 33290.5-2016 文物出境审核规范 第 5 部分:仪仗》专题研究报告
- 《GB-T 21021.1-2021无源射频和微波元器件的互调电平测量 第1部分:一般要求和测量方法》专题研究报告
- 《GBT 32581-2016 入侵和紧急报警系统技术要求》专题研究报告
- 《AQ-T 2035-2023金属非金属地下矿山供水施救系统建设规范》专题研究报告
- 《宠物鉴赏》课件-雪纳瑞
- 《Python语言程序设计》课件-7.2 理解数据的维度
- 《智慧景区服务与管理》课件-第二章 任务一 旅游景区票务服务
- 施工现场起重吊装隐患识别及安全技术应用
- 数字文旅景点导览信息服务协议
- 心理因素对创新行为的影响
- 脊髓损伤的膀胱护理
- 《医学影像诊断报告书写指南》(2025版)
- 高校物业安全培训内容课件
- (正式版)DB33∕T 1430-2025 《海塘安全监测技术规程》
- 医药竞聘地区经理汇报
- 水库调度操作规程模板
- 产科护士长年终总结
- 酒店情况诊断报告
- DBJ04-T483-2025 海绵型城市道路与广场设计标准
- 农药运输储存管理制度
评论
0/150
提交评论