中南大学图像处理实验报告(共28页).doc
《中南大学图像处理实验报告(共28页).doc》由会员分享,可在线阅读,更多相关《中南大学图像处理实验报告(共28页).doc(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上数字图像处理实验报告学院:信息科学与工程学院姓名: * 班级:*学号:*指导老师:罗三定实验1 PhotoShop功能操作一、实验目的1、了解数码相机基本使用。2、熟悉PHOTOSHOP在图像处理上的用途。3、掌握PHOTOSHOP一些基本的图像操作。二、实验内容1、观察图像大小(宽与高像素)。图像菜单中图像大小选项图1,图像大小2、改变图像大小。在上述图像大小窗口改变数值就可以改变图像大小。3、观察各处的RGB值、色度、亮度、饱和度的值。将鼠标移动到图上各处,在右侧信息栏里可以看到RGB值。图2,RGB值再取颜色取样工具,右键点击图片,选择HSB即为色度亮度饱和度的
2、值。图3,HSB值4、单独观察红色、绿色、蓝色分量图像。右下角选择通道,选择不同通道即可观察红色,绿色,蓝色分量图像图4,红色分量图图5,绿色分量图图6,蓝色分量图5、将彩色图像转换为灰度图像,存盘后观察文件大小。先选择图像模式灰度,选择扔掉图7,灰度图像然后另存为bmp格式的图像,可以看出文件大小变小了很多。6、观察图像的直方图。 直接在右侧栏可观察到直方图。图8,直方图7、改变图像的亮度、对比度、饱和度,观察操作结果。在图像中选择调整亮度/对比度即可调整然后观察效果同样在调整中选择色相饱和度。即可调整饱和度8、以不同阈值二值化图像。在图像调整阈值,可以调整色阶,观察不同阈值二值化图像。图9
3、,观察不懂阈值二值化图像实验2 Photoshop图像处理实验一、实验目的1、了解bmp图像的数据存储形式。2、学习使用不同的滤波方法处理图像。3、掌握PHOTOSHOP一些图像增强处理方法。二、实验内容1、打开一个bmp图像2、自定义滤波器处理图像。(1)滤波中选择自定义图像有一定程度的模糊。常用的图像平滑模板有:、选择第一种模板,得到(2)从频谱的角度分析,图像的锐化类似于一个高通滤波器。常用的锐化模板有:、等。这两个模板又称为拉普拉斯模板。选择第二个模板得到(3)边缘查找又称为边缘检测,边缘是指周围像素灰度发生阶跃型或凸缘型变化的像素的集合。常用的边缘检测算子,包括Sobel、Prewi
4、tt、Krisch、Laplace算子等。这里采用Sobel得到图像3、练习使用模糊、锐化、涂抹、减淡和加深等工具进行图像的编辑。这些工具都在右侧工具栏可以找到,比如说锐化工具和模糊工具减淡加深工具:实验3 图像处理编程实验一、实验目的1、熟悉VB或VC的基本编程方法。2、了解bmp位图文件的结构。3、掌握灰度直方图的原理及绘制过程。二、实验内容1、读取BMP位图文件 BMP 位图包括位图文件头结构BITMAPFILEHEADER 、位图信息头结构BITMAPINFOHEADER、位图颜色表 RGBQUAD 和位图像素数据四部分。处理位图时要根据文件的这些结构得到位图文件大小、位图的宽、高、实
5、现调色板、得到位图像素值等等。对于256 级灰度图像每个像素用 8bit 表示颜色的索引值,这里要注意的一点是在 BMP位图中,位图的每行像素值要填充到一个四字节边界,即位图每行所占的存储长度为四字节的倍数,不足时将多余位用0 填充。 在处理图像应用程序的文档类(CdibDoc.h)中声明如下宏及公有变量: #define WIDTHBYTES(bits) (bits) + 31) / 32 * 4)/ 计算图像每行象素所占的字节数目 HANDLE m_hDIB;/存放位图数据的句柄 CPalette* m_palDIB;/指向调色板Cpalette类的指针 CSize m_sizeDoc;
6、file:/ 初始化视图的尺寸 根据BMP 位图文件的结构,操作 BMP 位图文件读入数据,重载了文挡类的OnOpenDocument 函数如下: BOOL CDibDoc:OnOpenDocument(LPCTSTR lpszPathName) CFile file; CFileException fe; if (!file.Open(lpszPathName, Cfile:modeRead | Cfile:shareDenyWrite, &fe) AfxMessageBox(文件打不开); return FALSE; /打开文件 DeleteContents();/删除文挡 BeginWa
7、itCursor(); BITMAPFILEHEADER bmfHeader;/定义位图文件头结构 DWORD dwBitsSize; HANDLE hDIB; LPSTR pDIB; BITMAPINFOHEADER *bmhdr;/指向位图信息头结构的指针 dwBitsSize = file.GetLength();/ 得到文件长度 if (file.Read(LPSTR)&bmfHead er, sizeof(bmfHeader) != sizeof(bmfHeader) return FALSE; if (bmfHeader.bfType != 0x4d42) file:/ 检查是否为
8、 BMP文件 return FALSE; hDIB=(HANDLE) :GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize); file:/申请缓冲区 if (hDIB = 0) return FALSE; pDIB = (LPSTR) :GlobalLock(HGLOBAL)hDIB); file:/得到申请的缓冲区的指针 if (file.ReadHuge(pDIB, dwBitsSize - sizeof(BITMAPFILEHEADER) != dwBitsSize - sizeof(BITMAPFILEHEADER) ) :Gl
9、obalUnlock(HGLOBAL)hDIB); hDIB=NULL; return FALSE; /读数据,包括位图信息、位图颜色表、图像像素的灰度值 bmhdr=(BITMAPINFOHEADER*)pDIB;/ 为指向位图信息头结构的指针付值 :GlobalUnlock(HGLOBAL)hDIB); if (*bmhdr).biBitCount!=8) file:/ 验证是否为8bit 位图 return FALSE; m_hDIB=hDIB; InitDIBData(); file:/自定义函数,根据读入的数据得到位图的宽、高、颜色表 file:/ 来得到初始化视的尺寸、生成调色板
10、EndWaitCursor(); SetPathName(lpszPathName);/ 设置存储路径 SetModifiedFlag(FALSE); / 设置文件修改标志为FALSE return TRUE; 为了将图像处理后所得到的像素值保存起来,重载了文档类的OnSaveDocument函数,其具体实现如下: BOOL CDibDoc:OnSaveDocument(LPCTSTR lpszPathName) CFile file; CFileException fe; BITMAPFILEHEADER bmfHdr; / 位图文件头结构 LPBITMAPINFOHEADER lpBI;
11、file:/指向位图信息结构的指针 DWORD dwDIBSize; if (!file.Open(lpszPathName, Cfile:modeCreate | Cfile:modeReadWrite | Cfile:shareExclusive, &fe) AfxMessageBox(文件打不开); /打开文件 BOOL bSuccess = FALSE; BeginWaitCursor(); lpBI = (LPBITMAPINFOHEADER) : GlobalLock(HGLOB AL) m_hDIB); if (lpBI = NULL) return FALSE; dwDIBSi
12、ze = *(LPDWORD)lpBI + 256*sizeof(RGBQUAD); / Partial Calculation DWORD dwBmBitsSize;/BMP 文件信息结构所占的字节数 dwBmBitsSize=WIDTHBYTES(lpBI-biWidth)*(DWORD)lpBI-biBitCount) *lpBI-biHeight;/ 存储时位图所有像素所占的总字节数 dwDIBSize += dwBmBitsSize; lpBI-biSizeImage = dwBmBitsSize; / 位图所有像素所占的总字节数 file:/以下五句为文件头结构填充值 bmfHdr
13、.bfType =0x4d42; / 文件为BMP 类型 bmfHdr.bfSize = dwDIBSize + sizeof(BITMAPFILEHEADER);/ 文件总长度 bmfHdr.bfReserved1 = 0; bmfHdr.bfReserved2 = 0; bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + lpBI-biSize + 256*sizeof(RGBQUAD); file:/位图数据距问件头的偏移量 file.Write(LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER);/写文件
14、头 file.WriteHuge(lpBI, dwDIBSize); file:/将位图信息(信息头结构、颜色表、像素数据)写入文件 :GlobalUnlock(HGLOBAL) m_hDIB); EndWaitCursor(); SetModifiedFlag(FALSE); / back to unmodified return TRUE; 灰度图像要正确显示,必须实现逻辑调色板和系统调色板,通过在主框架类中处理Windows 定义的消息 WM_QUERYNEWPALETTE 、WM_PALETTECHANGED及视图类中处理自定义消息 WM_DOREALIZE (该消息在主框架窗口定义如
15、下:#define WM_REALIZEPAL (WM_USER+100))来实现调色板的操作。 void CMainFrame:OnPaletteChanged(CWnd* pFocusWnd) file:/ 总实现活动视的调色板 CMDIFrameWnd:OnPaletteChanged(pFocusWnd); CMDIChildWnd* pMDIChildWnd = MDIGetActive(); if (pMDIChildWnd = NULL) return CView* pView = pMDIChildWnd-GetActiveView(); ASSERT(pView != NUL
16、L); SendMessageToDescendants(WM_DOREALIZE, (WPARAM)pView-m_hWnd); file:/通知所有子窗口系统调色板已改变 BOOL CMainFrame:OnQueryNewPalette()/提供实现系统调色板的机会 / 实现活动视的调色板 CMDIChildWnd* pMDIChildWnd = MDIGetActive(); if (pMDIChildWnd = NULL) return FALSE; / no active MDI child frame (no new palette) CView* pView = pMDIChi
17、ldWnd-GetActiveView(); ASSERT(pView != NULL); file:/通知活动视图实现系统调色板 pView-SendMessage(WM_DOREALIZE, (WPARAM)pView-m_hWnd); return TRUE; LRESULT CDibView:OnDoRealize(WPARAM wParam, LPARAM)/实现系统调色板 ASSERT(wParam != NULL); CDibDoc* pDoc = GetDocument(); if (pDoc-m_hDIB = NULL) return 0L; / must be a new
18、document CPalette* pPal = pDoc-m_palDIB; file:/调色板的颜色表数据在InitDIBData() 函数中实现 if (pPal != NULL) CMainFrame* pAppFrame = (CMainFr ame*) AfxGetApp()-m_pMainWnd; ASSERT_KINDOF(CMainFrame, pAppFrame); CClientDC appDC(pAppFrame); CPalette* oldPalette = appDC.SelectPa lette(pPal, (HWND)wP aram) != m_hWnd);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 图像 处理 实验 报告 28
限制150内