图像显示与处理实验报告_第1页
图像显示与处理实验报告_第2页
图像显示与处理实验报告_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE6图像显示与处理实验报告班级:

123杨阳201227073图像显示与处理一、实验目的1、掌握BMP文件格式,熟悉各参数和图像数据的存放方式;2、通过编程实现对图像内容的读取(到内存中;3、完成图像的显示,掌握设备环境上下文(DC)的使用方式。4、对图像进行二值化、求边缘、增强等简单处理。二、实验仪器设备、工具及材料设备:多媒体计算机。软件:VisualStudio6.0及以上版本。材料:灰度图像,24位真彩色图像(均为非压缩BMP格式)等。三、实验内容及步骤1、BMP文件格式BMP是位图WindowsWindows3.0以前的BMP图文件格式与显示设备有关DDBWindows以后的BMP图象文件与显示设备无关,因此称为设备无关位图DIB(device-independentbitmap)格式。BMP文件由4部分组成:位图文件头(BITMAPFILEHEADER、位图信息头BITMAPINFOHEADE、彩色表RGBQUA)如下(来自MSD。typedefstructtagBITMAPFILEHEADER{WORD bfType; //filetype,mustbeBMDWORD bfSize; //size(bytes)ofthebitmapWORD bfReserved1;WORD bfReserved2;DWORD bfOffBits; //offset(bytes)fromthisstructuretothebitmapbits}BITMAPFILEHEADER;typedefstructtagBITMAPINFO{BITMAPINFOHEADERbmiHeader;RGBQUAD }BITMAPINFO,*PBITMAPINFO;typedefstructtagRGBQUAD{BYTErgbBlue;BYTErgbGreen;BYTErgbRed;BYTErgbReserved;}RGBQUAD;typedefstructtagBITMAPINFOHEADER{DWORDbiSize; //bytesrequiredbythestructureLONGbiWidth;LONGbiHeight;WORDbiPlanes; //numberofplanes,mustbeWORDbiBitCount; //numberofbits-per-pixelDWORDbiCompression; //BI_RGB:uncompressedDWORDbiSizeImage; //size(bytes)ofimage,setto0forBI_RGBbitmapsLONGbiXPelsPerMeter; //horizontalresolutionLONGbiYPelsPerMeter; //verticalresolutionDWORDbiClrUsed;DWORDbiClrImportant;}BITMAPINFOHEADER;自然界所有颜色都可由红、绿、蓝R/G/B256级,这256×256×25616001600万种的彩色图,可以用一个表:表中的每一行记录一种颜色的RG、B值。这样当我们表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值。这张R、B的表,就是我们常说的调色板另一种叫法是颜色查找表LUT(LookUpTabl。用B颜色表示所有的颜色叫做真彩色图truecolo。表示真彩色图时,每个象素直接用RG、B三个分量字节表示,而不采用调色板技术。真彩色图又叫做24位色图。在WindowsRGB颜色阵列存储的格式其实BG32位的RGB蓝色B值、绿色G值、红色R值、透明通道A值。透明通道也称Alpha通道,该值是该像0(全透明)255(不透明)之间。2、BMP文件加载加载文件的目的是要得到图片属性及RGB数据,以便将其绘制在DC上。首先,加载文件头:BITMAPFILEHEADERheader;file.read((char*)&header,sizeof(header));然后,加载位图信息头:BITMAPINFOHEADERinfoheader;file.read((char*)&infoheader,sizeof(infoheader));这里我们得到了3各重要的图形属性:宽,高,以及每个像素颜色所占用的位数。接着,要考虑行对齐:Windows4width乘以每个像素的字节数不是4的整数倍时,要在每行的后面补0的数据长度:m_dwBytesPerLine=(((m_pBmpInfoHead->biWidth)+3)>>2)<<2; //灰度m_dwBytesPerLine=(((m_pBmpInfoHead->biWidth*3)+3)>>2)<<2;//24位真彩m_iImageDataSize=m_dwBytesPerLine*m_pBmpInfoHead->biHeight;最后,加载图片数据:对于24位和32位的位图文件,位图数据的偏移量为sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)也就是说现在可以直接读取图像数据了。m_pImageData=newunsignedchar[m_iImageDataSize];file.read((char*)m_pPixelData,m_iImageDataSize);如果你足够细心,就会发现内存m_pPixelData里的数据的确是BGR格式,可以用个纯蓝色或者是纯红色的图片测试一下。3、BMP文件显示下面是一段GDI绘制代码(一般可在OnDraw函数中实现对于有调色板的图像:CPalette*pOldPal=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_COLORSpDC->SelectPalette(pOldPal,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_COLORS4、图像处理一到两个进行尝试。二值化:(比如120。就会出现一个二值化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论