图像显示与处理实验报告

上传人:平*** 文档编号:12127593 上传时间:2017-10-16 格式:DOC 页数:6 大小:389.88KB
返回 下载 相关 举报
图像显示与处理实验报告_第1页
第1页 / 共6页
图像显示与处理实验报告_第2页
第2页 / 共6页
图像显示与处理实验报告_第3页
第3页 / 共6页
图像显示与处理实验报告_第4页
第4页 / 共6页
图像显示与处理实验报告_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《图像显示与处理实验报告》由会员分享,可在线阅读,更多相关《图像显示与处理实验报告(6页珍藏版)》请在金锄头文库上搜索。

1、1图像显示与处理实验报告班级: 信息 123 班姓名: 杨阳学号: 2012270732图像显示与处理一、实验目的1、掌握 BMP文件格式,熟悉各参数和图像数据的存放方式;2、通过编程实现对图像内容的读取(到内存中) ;3、完成图像的显示,掌握设备环境上下文(DC)的使用方式。4、对图像进行二值化、求边缘、增强等简单处理。二、实验仪器设备、工具及材料设备:多媒体计算机。软件:Visual Studio 6.0 及以上版本。材料:灰度图像,24 位真彩色图像(均为非压缩 BMP格式)等。三、实验内容及步骤1、BMP 文件格式BMP 是 Bitmap(位图)的简写,是 Windows 操作系统中的

2、标准图像文件格式。Windows 3.0 以前的 BMP 图文件格式与显示设备有关,称为设备相关位图 DDB 文件格式。Windows 3.0 以后的 BMP 图象文件与显示设备无关,因此称为设备无关位图 DIB(device-independent bitmap)格式。BMP 文件由 4 部分组成:位图文件头(BITMAPFILEHEADER) 、位图信息头(BITMAPINFOHEADER) 、彩色表( RGBQUAD)和图像数据阵列。对应的数据结构定义如下(来自 MSDN) 。typedef struct tagBITMAPFILEHEADER WORD bfType; / file t

3、ype, must be BMDWORD bfSize; / size (bytes) of the bitmap file WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; / offset (bytes) from this structure to the bitmap bits BITMAPFILEHEADER;typedef struct tagBITMAPINFO BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColors1; BITMAPINFO, *PBITMAPINFO; typedef

4、struct tagRGBQUAD BYTE rgbBlue; BYTE rgbGreen;BYTE rgbRed; BYTE rgbReserved; RGBQUAD;typedef struct tagBITMAPINFOHEADERDWORD biSize; / bytes required by the structureLONG biWidth; LONG biHeight;WORD biPlanes; / number of planes, must be 1WORD biBitCount; / number of bits-per-pixelDWORD biCompression

5、; / BI_RGB: uncompressedDWORD biSizeImage; / size(bytes) of image, set to 0 for BI_RGB bitmapsLONG biXPelsPerMeter; / horizontal resolutionLONG biYPelsPerMeter; / vertical resolutionDWORD biClrUsed;DWORD biClrImportant;3 BITMAPINFOHEADER;自然界所有颜色都可由红、绿、蓝(R,G,B)组合而成。R/G/B 各自分成 256 级,这种分级概念称为量化,这样就能表示

6、256256256 约 1600 万种颜色,这对于人眼来说已经足够丰富了。对于颜色数远远少于 1600 万种的彩色图,可以用一个表:表中的每一行记录一种颜色的 R、G、B 值。这样当我们表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值。这张 R、G、B 的表,就是我们常说的调色板(Palette ) ,另一种叫法是颜色查找表 LUT(Look Up Table) 。用 R、G、B 颜色表示所有的颜色叫做真彩色图(true color) 。表示真彩色图时,每个象素直接用 R、G、B 三个分量字节表示,而不采用调色板技术。真彩色图又叫做 24 位色图。在 Windows 下

7、,RGB 颜色阵列存储的格式其实 BGR。而 32 位的 RGB 位图像素数据格式是:蓝色 B 值、绿色 G 值、红色 R 值、透明通道 A 值。透明通道也称 Alpha 通道,该值是该像素点的透明属性,取值在 0(全透明)到 255(不透明)之间。2、BMP 文件加载加载文件的目的是要得到图片属性及 RGB 数据,以便将其绘制在 DC 上。首先,加载文件头:BITMAPFILEHEADER header;file.read(char*)&header,sizeof(header);然后,加载位图信息头:BITMAPINFOHEADER infoheader;file.read(char*)&

8、infoheader,sizeof(infoheader);这里我们得到了 3 各重要的图形属性:宽,高,以及每个像素颜色所占用的位数。接着,要考虑行对齐:由于 Windows 在进行行扫描的时候最小的单位为 4 个字节,所以当图片宽 width 乘以每个像素的字节数不是 4 的整数倍时,要在每行的后面补 0。需要通过下面的方法计算正确的数据长度:m_dwBytesPerLine = (m_pBmpInfoHead-biWidth) + 3) 2) biWidth*3) + 3) 2) biHeight;最后,加载图片数据:对于 24 位和 32 位的位图文件,位图数据的偏移量为sizeof(

9、BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)也就是说现在可以直接读取图像数据了。m_pImageData = new unsigned charm_iImageDataSize;file.read(char*) m_pPixelData, m_iImageDataSize );如果你足够细心,就会发现内存 m_pPixelData 里的数据的确是 BGR 格式,可以用个纯蓝色或者是纯红色的图片测试一下。3、BMP 文件显示下面是一段 GDI 绘制代码(一般可在 OnDraw 函数中实现) ,仅作参考。对于有调色板的图像:CPalette * pOld

10、Pal = pDC-SelectPalette( m_pPal, 1 );:SetStretchBltMode( pDC-m_hDC, COLORONCOLOR );:SetDIBitsToDevice( pDC-m_hDC, 0, 0, m_pBmpInfoHead-biWidth,m_pBmpInfoHead-biHeight, 0, 0, 0, m_pBmpInfoHead-biHeight,m_pPixelData, (LPBITMAPINFO)m_pBmpInfoHead, DIB_RGB_COLORS );pDC-SelectPalette( pOldPal, 1 );如果没有调色

11、板::SetStretchBltMode( pDC-m_hDC, COLORONCOLOR );:SetDIBitsToDevice( pDC-m_hDC, 0, 0, m_pBmpInfoHead-biWidth,m_pBmpInfoHead-biHeight, 0, 0, 0, m_pBmpInfoHead-biHeight,m_pPixelData, (LPBITMAPINFO)m_pBmpInfoHead, DIB_RGB_COLORS );44、图像处理此处,我们仅对灰度图像进行简单的处理,可以在二值化、求边缘和图像增强之中选择一到两个进行尝试。二值化:设定一个阈值(比如 128)

12、,逐一检查每个像素的值,大于等于这个值的像素被设为255,小于这个阈值的像素被设为 0。就会出现一个二值化的结果。求边缘:简单的求边缘算法是对图像中每个像素(最边缘的像素可不考虑)进行二维卷积运算,可以采用 Sobel 算子进行尝试。 Sobel 算子有两个,分别可以计算水平方向和垂直方向的边缘强度,通过综合而这可以得到整体边缘强度。-1 0 1-2 0(中心) 2-1 0 1图像增强:图像像素灰度一般会集中在某个区域,导 致视觉分辨率低下。为此,可以考虑对该段区域进行拉伸。比如,按照如下曲线(或折线)的映射关系,类似于非均匀采样,将某段的量化精度提高。实验截图:-1 -2 -10 0(中心) 01 2 152

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号