已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 数字图像处理实验报告 昆明理工大学 理学院 电子信息科学与技术 班 级 电信 112 姓 名 张鉴 学 号 0 指导教师 桂进斌 完成日期 2014 06 05 昆明理工大学理学院电子信息科学与技术112班 2 目录 实验一实验一 VCVC 6 06 0 下下 BMPBMP 位图的读取与显示位图的读取与显示 3 3 实验二实验二 图像基本运算图像基本运算 点运算点运算 1313 实验三实验三 图像基本运算图像基本运算 代数 逻辑运算代数 逻辑运算 2121 实验四实验四 图像基本运算图像基本运算 几何运算几何运算 2929 实验五实验五 直方图的绘制及其均衡直方图的绘制及其均衡 3636 实验六实验六 图像的平滑与锐化图像的平滑与锐化 4242 实验七实验七 伪彩色及彩色图像处理伪彩色及彩色图像处理 5050 实验八实验八 图像傅里叶变换及低通滤波和高通滤波图像傅里叶变换及低通滤波和高通滤波 5555 3 实验一实验一 VCVC 6 06 0 下下 bmpbmp 位图的读取与显示位图的读取与显示 一 实验目的 1 掌握 windows BMP 格式位图文件的基本格式 2 会使用 VC 读取图像数据并显示 二 实验原理 1 设备无关位图 DIB 设备无关位图 DIB 是一种与设备无关的位图 自带颜色信息 因此有利于 在各种设备间传输 2 BMP 中 DIB 的结构 文件头 BITMAPFILEHEADER typedef struct tagBITMAPFILEHEADER bmfh WORD bfType signature word BM or 0 x4D42 DWORD bfSize entire size of file WORD bfReserved1 must be zero WORD bfReserved2 must be zero DWORD bfOffsetBits offset in file of DIB pixel bits BITMAPFILEHEADER PBITMAPFILEHEADER 位图信息头 BITMAPINFOHEADER typedef struct tagBITMAPINFOHEADER bmih DWORD biSize size of the structure 40 LONG biWidth width of the image in pixels LONG biHeight height of the image in pixels WORD biPlanes 1 WORD biBitCount bits per pixel 1 4 8 16 24 or 32 DWORD biCompression compression code DWORD biSizeImage number of bytes in image LONG biXPelsPerMeter horizontal resolution LONG biYPelsPerMeter vertical resolution DWORD biClrUsed number of colors used DWORD biClrImportant number of important colors BITMAPINFOHEADER PBITMAPINFOHEADER 调色板 可能没有 typedef struct tagRGBQUAD rgb BYTE rgbBlue blue level BYTE rgbGreen green level BYTE rgbRed red level BYTE rgbReserved 0 RGBQUAD 4 实际位图数据 typedef struct tagBITMAPINFO bmi BITMAPINFOHEADER bmiHeader info header structure RGBQUAD bmiColors 1 color table array BITMAPINFO PBITMAPINFO 3 DIB 访问函数 SetDIBitsToDevice SetDIBitsToDevice函数显示没有延伸和缩小的 DIB DIB 的每个图素对应到输出 设备的一个图素上 而且 DIB 中的图像一定会被正确显示出来 也就是说 图像的顶列在上方 任何会影响设备内容的座标转换都影响了显示 DIB 的开 始位置 但不影响显示出来的图片大小和方向 该函数如下 iLines SetDIBitsToDevice hdc device context handle xDst x destination coordinate yDst y destination coordinate cxSrc source rectangle width cySrc source rectangle height xSrc x source coordinate ySrc y source coordinate yScan first scan line to draw cyScans number of scan lines to draw pBits pointer to DIB pixel bits pInfo pointer to DIB information fClrUse color use flag SetDIBitsToDevice函数传回所显示的扫描行的数目 因此 要调用SetDIBitsToDevice来显示整个 DIB 图像 您需要下列信息 hdc 目的表面的设备句柄代号 xDst和yDst 图像左上角的目的坐标 cxDib和cyDib DIB的图素宽度和高度 在这里 cyDib是BITMAPINFOHEADER结构 内 biHeight 栏位的绝对值 pInfo和pBits 指向点阵图信息部分和图素位元的指标 StretchDIBits int StrechDIBits HDC hdc int Xdest int Ydest int DEstWidth int nDestHeight int XSrc int Ysrc int nSrcWidth int SrcHeight CONST VOID lpBits CONST BITMAPINFO lpBitsInfo UINT iUsage DORD dwRo 要通过缩小或放大 DIB 在输出设备上以特定的大小显示它 可以使用 StretchDIBits iLines StretchDIBits hdc device context handle xDst x destination coordinate yDst y destination coordinate cxDst destination rectangle width cyDst destination rectangle height xSrc x source coordinate ySrc y source coordinate cxSrc source rectangle width cySrc source rectangle height pBits pointer to DIB pixel bits 5 pInfo pointer to DIB information fClrUse color use flag dwRop raster operation 函数参数除了下列三个方面 均与SetDIBitsToDevice相同 三 实验内容 使用 VC 读取图像数据并显示 四 实验步骤 1 启动 VC 6 0 新建一个基于 MFC 的应用程序项目 命名 zhangjian 2 进根据提示 定制应用程序的特征 得到如下图所示内容 3 修改视图类的基类心支持滚动条 6 4 单击完成按钮生成应用程序框架 5 如下图通过类向导或手动在视图类中添加成员变量 m x 类型 int 6 按同样的方法添加以下成员变量 HBITMAP m Bmp LPVOID m ColorList LPBYTE m Image LPBITMAPINFOHEADER m DibHead enum allocate None crtallocate heapallocate allocate m nBmpallocate allocate m nImageallocate 7 DWORD m ImageSize int m nPalette HANDLE m hFile HANDLE m hMap LPVOID m lpvFile HPALETTE m hPalette HGLOBAL m hGlob 7 如下图通过类向导的功能增加成员函数 SetPaletteSize int nBitCount 类型 void 8 按同样的方法添加以下成员函数 void Clear 清除 BOOL ReadFile CFile pFile 读取数据到内存 BOOL SetPalette 当前位图颜色数大于 设置调色板 BOOL GetPalette 创建颜色数不大于 的调色板 BOOL DibToDC CDC pDC CSize size 显示位图 BOOL MemToDib LPVOID lmem 得到内存中位图象素位置 CSize GetDibSize 返回位图尺寸 9 完善成员函数代码功能 从老师给的代码中拷贝内容 结果如下 void CZhangjianView SetPaletteSize int nBitCount 设置调色板大小 if m DibHead biSize sizeof BITMAPINFOHEADER 8 throw new CException 抛出异常 m ImageSize m DibHead biSizeImage if m ImageSize 0 DWORD dwBytes DWORD m DibHead biWidth m DibHead biBitCount 32 if DWORD m DibHead biWidth m DibHead biBitCount 32 dwBytes dwBytes 4 m ImageSize dwBytes m DibHead biHeight m ColorList LPBYTE m DibHead sizeof BITMAPINFOHEADER if m DibHead NULL m DibHead biClrUsed 0 switch nBitCount case 1 m nPalette 2 break case 4 m nPalette 16 break case 8 m nPalette 256 break case 16 case 24 case 32 m nPalette 0 break default ASSERT FALSE else m nPalette m DibHead biClrUsed ASSERT m nPalette 0 if nCount sizeof BITMAPFILEHEADER throw new CException if bmfh bfType 0 x4d42 throw new CException nSize bmfh bfOffBits sizeof BITMAPFILEHEADER m DibHead LPBITMAPINFOHEADER new char nSize m nBmpallocate m nImageallocate crtallocate nCount pFile Read m DibHead nSize SetPaletteSize m DibHead biBitCount GetPalette 10 m Image LPBYTE new char m ImageSize nCount pFile Read m Image m ImageSize catch CException tmpc AfxMessageBox 文件读取错误 tmpc Delete return FALSE return TRUE BOOL CZhangjianView SetPalette 当前位图颜色书大于 256 设置调色板 if m nPalette 0 return FALSE CClientDC dc this CDC pDC m hPalette CreateHalftonePalette pDC GetSafeHdc return TRUE BOOL CZhangjianView GetPalette 创建颜色数不大于 256 的调色板 if m nPalette 0 return FALSE if m hPalette NULL DeleteObject m hPalette LPLOGPALETTE pTempPalette LPLOGPALETTE new char 2 sizeof WORD m nPalette sizeof PALETTEENTRY pTempPalette palVersion 0 x30 pTempPalette palNumEntries m nPalette LPRGBQUAD pRGBQuad LPRGBQUAD m ColorList for int i 0 ipalPalEntry i peRed pRGBQuad rgbRed pTempPalette palPalEntry i peGreen pRGBQuad rgbGreen pTempPalette palPalEntry i peBlue pRGBQuad rgbBlue pTempPalette palPalEntry i peFlags 0 pRGBQuad m hPalette CreatePalette pTempPalette delete pTempPalette return TRUE BOOL CZhangjianView DibToDC CDC pDC CSize size 显示位图 11 if m DibHead NULL return FALSE if m hPalette NULL HDC hdc pDC GetSafeHdc SelectPalette hdc m hPalette TRUE pDC SetStretchBltMode COLORONCOLOR StretchDIBits pDC GetSafeHdc 0 0 size cx size cy 0 0 m DibHead biWidth m DibHead biHeight m Image LPBITMAPINFO m DibHead DIB RGB COLORS SRCCOPY return TRUE BOOL CZhangjianView MemToDib LPVOID lmem 得到内存中位图像素信息 Clear m DibHead LPBITMAPINFOHEADER lmem SetPaletteSize m DibHead biBitCount m Image LPBYTE m ColorList sizeof RGBQUAD m nPalette GetPalette return TRUE CSize CZhangjianView GetDibSize 返回位图尺寸 if m DibHead NULL return CSize 0 0 return CSize int m DibHead biWidth int m DibHead biHeight 10 编译测试 无误后进入下一步 11 加入图像文件读取与显示的代码 1 设置初始化函数 加入如下代码 m x 25 CSize MaxSize 24000 32000 CSize MinSize MaxSize cx 100 MaxSize cy 100 SetScrollSizes MM HIMETRIC MaxSize MaxSize MinSize LPVOID lFirstBMP LPVOID LoadResource NULL FindResource NULL MAKEINTRESOURCE IDB BITMAP1 RT BITMAP MemToDib lFirstBMP 2 在位图编辑器中 编写一初始位图 命名为 张鉴 并保存 12 3 建立文件打开的消息映射函数 OnFileOpen 并加入如下代码 CFileDialog filedlg TRUE bmp bmp if filedlg DoModal IDOK return CFile myfile myfile Open filedlg GetPathName CFile modeRead if ReadFile SetPalette 4 修改 OnDraw 函数 并加入如下代码 BeginWaitCursor CSize DibSize GetDibSize DibSize cx m x DibSize cy m x DibToDC pDC DibSize EndWaitCursor 5 至此 上述代码已经完成读取并显示位图的功能 数据存放在视图类中 m Image 指向的内存区域 12 位图显示如下图 五 实验总结 1 通过本实验进一步熟悉了 VC 6 0 集成开发环境 2 初步学习了 VC6 0 下 bmp 位图的读取与显示 13 实验二实验二 图像基本运算图像基本运算 点运算点运算 一 实验目的 1 学习位图的基本运算的基本原理 2 学习掌握实现位图各类点运算的基本算法 二 实验原理 1 点运算的定义 设输入图像的灰度为 f x y 输出图像的灰度为 g x y 则点运算可以表示 为 g x y T f x y 即灰度变换函数 其中 T 是对 f 在 x y 点值的一种数学运算 即点运算是一种像素的逐点运 算 是灰度到灰度的映射过程 故称 T 为灰度变换函数 点运算可以改变图像数据所占据的灰度值范围 从而改善图像显示效果 2 点运算的分类 点运算可分为线性点运算 分段线性点运算 非线性点运算 3 线性点运算 线性点运算的灰度变换函数形式可以采用线性方程描述 即 s ar b 0 a0 输出灰度压缩 a 1 b 0 输出灰度不变 a 1 b 0 输出灰度扩展整体变亮 0 abiWidth 15 h m DibHead biHeight unsigned char f new unsigned char w h memset f 0 w h float a 80 float b 50 float s 0 for i 0 i h i for j 0 j w j s a m Image i w j b if s255 s 255 f i w j unsigned char s memcpy m Image f w h Invalidate delete f void CZhangjianView OnFenduanxianxing 分段线性 TODO Add your command handler code here long w h long i j if m DibHead NULL MessageBox 当前无图像 请打开图像 提示 return w m DibHead biWidth h m DibHead biHeight unsigned char f new unsigned char w h memset f 0 w h float a 48 b 180 float b1 20 float c 25 d 190 float s 0 for i 0 i h i for j 0 j w j if 0 m Image i w j 16 if a m Image i w j if b m Image i w j if s255 s 255 f i w j unsigned char s memcpy m Image f w h Invalidate delete f void CZhangjianView OnDuishu 对数运算 TODO Add your command handler code here long w h long i j if m DibHead NULL MessageBox 当前无图像 请打开图像 提示 return w m DibHead biWidth h m DibHead biHeight unsigned char f new unsigned char w h memset f 0 w h float c 100 double s 0 for i 0 i h i for j 0 j w j s c log10 m Image i w j 1 if s255 s 255 f i w j unsigned char s memcpy m Image f w h Invalidate delete f 17 void CZhangjianView OnZhishu 指数运算 TODO Add your command handler code here long w h long i j if m DibHead NULL MessageBox 当前无图像 请打开图像 提示 return w m DibHead biWidth h m DibHead biHeight unsigned char f new unsigned char w h memset f 0 w h float c 80 float r 1 5 float b 50 double s 0 for i 0 i h i for j 0 j w j s c pow m Image i w j r if s255 s 255 f i w j unsigned char s memcpy m Image f w h Invalidate delete f void CZhangjianView OnFanse 反色 TODO Add your command handler code here long w h long i j if m DibHead NULL MessageBox 当前无图像 请打开图像 提示 return w m DibHead biWidth h m DibHead biHeight 18 unsigned char f new unsigned char w h memset f 0 w h for i 0 i h i for j 0 jbiWidth h m DibHead biHeight unsigned char f new unsigned char w h memset f 0 w h float a 127 for i 0 i h i for j 0 j w j if 0 m Image i w j if a m Image i w j h m DibHead biHeight unsigned char Image1 new unsigned char w h memcpy Image1 m Image w h OnFileOpen for i 0 i h i for j 0 jbiWidth h m DibHead biHeight unsigned char Image1 new unsigned char w h memcpy Image1 m Image w h OnFileOpen for i 0 i h i for j 0 jbiWidth h m DibHead biHeight unsigned char Image1 new unsigned char w h memcpy Image1 m Image w h OnFileOpen for i 0 i h i for j 0 jbiWidth h m DibHead biHeight unsigned char Image1 new unsigned char w h memcpy Image1 m Image w h OnFileOpen for i 0 i h i for j 0 jbiWidth h m DibHead biHeight unsigned char Image1 new unsigned char w h memcpy Image1 m Image w h OnFileOpen for i 0 i h i for j 0 jbiWidth h m DibHead biHeight unsigned char Image1 new unsigned char w h memcpy Image1 m Image w h OnFileOpen for i 0 i h i for j 0 jbiWidth h m DibHead biHeight unsigned char f new unsigned char w h memset f 0 w h for i 0 i h i for j 0 jbiWidth h m DibHead biHeight unsigned char f new unsigned char w h memset f 0 w h int a h 4 b w 4 for i 0 i h i for j b jbiWidth h m DibHead biHeight unsigned char f new unsigned char w h memset f 0 w h int a h 4 b w 4 for i 0 i h i for j 0 jbiWidth h m DibHead biHeight unsigned char f new unsigned char w h memset f 0 w h float temp 0 float PI 3 1415 float beta 30 float a 1 5 for i 0 i h i for j 0 j w h y1 w x1 w h y1 1 w x1 0 y1 w x1 1 w h continue f y1 w x1 temp f y1 1 w x1 f y1 w x1 f y1 w x1 1 f y1 w x1 memcpy m Image f w h Invalidate delete f void CZhangjianView OnButtonfangda 图像放大 TODO Add your command handler code here if m DibHead NULL MessageBox 当前无图像 请打开图像 提示 return m x int 1 2 m x Invalidate void CZhangjianView OnButtonsuoxiao 图像缩小 TODO Add your command handler code here if m DibHead NULL MessageBox 当前无图像 请打开图像 提示 return m x int 0 8 m x Invalidate 5 缩小和放大图像是很常用的 每次都用菜单项调节很繁琐 此时可以设置 放大和缩小工具更方便的调节 在 Resources 面板中 找到 Toolbar 双 击 IDR MAINFRAME 打开工具编辑器 绘出一个 和一个 并设 分别置其 ID 为 放大 和 缩小 的 ID 移动位置 34 6 本过程 打开一幅图像 各种几何运算结果如下 原图像 图像平移 图像旋转 35 图像镜像 水平 图像缩放 缩小 一 实验总结 1 通过本实验更深入的学习了位图的基本运算 2 本实验学会了位图几何运算的基本实现方法 实验五实验五 直方图的绘制及其均衡直方图的绘制及其均衡 一 实验目的 1 学习位图直方图及其均衡的基本原理 2 学习位图直方图绘制的基本原理 3 学习位图直方图均衡的算法原理 二 实验原理 36 1 直方图 反映图像中灰度级与灰度级出现频率的关系的图形 直方图的离散表示 1 2 1 0 10 lk r N n rP k k k nk是图像中灰度级为 rk的像素个数 rk 是第 k 个灰度级 k 0 1 2 L 1 N 是图像总的像素数 2 直方图绘制 1 统计直方图数据 2 求直方图的概率 3 绘图面板上绘制直方图 3 直方图均衡 希望一幅图像的像素占有全部可能的灰度级且分布均匀 能够具有高对 比度 使用的方法是灰度级变换 s T r 基本思想是把原始图的直方图变换为均匀分布的形式 这样就增加了像 素灰度值的动态范围 从而达到增强图像整体对比度的效果 4 算法思想 通过函数变换 对在图像中像素个数多的灰度级进行展宽 而对像素个 数少的灰度级进行缩减 从而达到清晰图像的目的 设 f g 分别为原图象和处理后的图像 1 求出原图 f 的灰度直方图 设为 h h 为一个 256 维的向量 2 计算每个灰度级的像素个数在整个图像中所占的百分比 hs i h i Nf i 0 1 255 3 计算图像各灰度级的累计分布 hp i k khihp 0 255 2 1 i 4 求出新图像 g 的灰度值 9 255ihpg 255 2 1 i 0 i 0 g 三 实验内容 在实验四的基础上编程实现位图直方图及其均衡的实现 四 实验步骤 1 在 Resources 面板中 找到 Menu 双击其下 IDR MAINFRAME 打开菜单编 辑器 在主菜单中添加一菜单项 直方图 再添加 直方图 直方图 均衡 子菜单 并设置相应不同的 ID 号 37 2 打开类向导 分别对代数运算和逻辑运算每一个子菜单建立消息响应函数 3 对每一个消息响应函数添加对应代码 实现相应的功能 具体如下 void CZhangjianView OnZhifangtu 直方图 TODO Add your command handler code here if m DibHead NULL MessageBox 当前无图像 请打开图像 提示 return int w h w m DibHead biWidth h m DibHead biHeight int i j float h0 256 h1 256 float fmax 0 0 for i 0 i 256 i h0 i 0 for i 0 i h i for j 0 j w j 38 h0 m Image i w j for i 0 i 256 i h1 i h0 i 1 0 w h if fmax h1 i fmax h1 i CClientDC dc this for i 0 ibiBitCount 8 MessageBox 当前版本仅支持 256 色位图的操作 系统提示 MB ICONINFORMATION MB OK return long w h long i j w m DibHead biWidth h m DibHead biHeight long h0 256 for i 0 i 256 i h0 i 0 for i 0 i h i 39 for j 0 j w j h0 m Image i w j 各灰度级像素数目统计 double hs 256 for i 0 i 256 i hs i 0 for i 0 i 256 i hs i h0 i 1 0 w h 个灰度级像素数目在整个图像中所占百分比 double hp 256 for i 0 i 256 i hp i 0 for i 0 i 256 i for j 0 j i j hp i hp i hs j 各灰度级在整幅图像的累计分布 for i 0 i h i for j 0 j w j m Image i w j hp m Image i w j 255 新图像的灰度值 Invalidate 4 在 Resources 面板中 找到 Dialog 插入一个对话框 绘直方图 5 建立一个相应的对话框类 ZFT 并添加成员变量 float data int count float m fmax 6 在上述实验代码前面包含 include ZFT h 40 7 完成基本过程 得实验结果如下 原图像 直方图 直方图均衡图像 均衡后直方图 41 五 实验总结 1 通过本实验初步学习了直方图及其均衡 2 学习了绘制直方图的基本算法原理 3 学习力直方图均衡的基本算法原理 实验六实验六 图像的平滑与锐化图像的平滑与锐化 一 实验目的 1 掌握图像平滑 空间滤波 的算法以及实现 2 掌握握图像锐化的算法以及实现 二 实验原理 1 空间滤波 线性滤波器 a as b bt tysxftswyxg 2 邻域平均 均值滤波器 所谓的均值滤波是指在图像上对待处理的像素给一个模板 该模板包括了其 周围的邻近像素 将模板中的全体像素的均值来替代原来的像素值的方法 3 中值滤波 统计排序滤波 虽然均值滤波器对噪声有抑制作用 但同时会使图像变得模糊 为了改善这 一状况 必须寻找新的滤波器 中值滤波就是一种有效的方法 因为噪声的出现 使该点像素比周围的像素亮 暗 许多 给出滤波用的模 板 对模板中的像素值由小到大排列 最终待处理像素的灰度取这个模板中 的灰度的中值 42 前面的处理结果可知 经过平滑滤波处理之后 图像会变得模糊 分析原因 在图像上的景物之所以可以辨认清楚是因为目标物之间存在边界 目前已经 提出了许多保留边沿细节的局部平滑算法 主要有 K 个邻点平均法 最大均匀 性平滑等 4 空间域低通滤波 2 2 00 nmh L ny L mxfyxg L m L n 1 1 1 1 1 1 1 1 1 9 1 1 h 5 多幅图像平均 M j j yxg M yxg 1 1 6 图像锐化处理 目的 增强图像边缘及灰度跳变部分 7 微分法锐化处理 1 梯度法 y f x f yxfgrad 两个特点 1 方向为最大增加率的方向 2 幅度为 2 1 22 y f x f yxfG 2 交叉微分算法 Roberts 梯度算法 1 1 1 1 jifjifjifjifjiG 3 Sobel 算子 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 jifjifjif jifjifjifS jifjifjif jifjifjifS SSg y x yx 43 由于引入平均 对图像中随机噪声有一定的平滑作用 边缘两侧元素得到加强 故边缘显得粗而亮 8 拉普拉斯运算 2 2 2 2 2 y f x f f 如果图像的模糊是由扩散现象引起的 则锐化后为 4 1 1 1 1 对图像来说 2 2 jifjif jifjifjiff fkfg 三 实验内容 在前实验的基础上编程实现图像的平滑与锐化 四 实验步骤 1 打开前一个实验工程 在 Resources 面板中 找到 Menu 双击其下 IDR MAINFRAME 打开菜单编辑器 在 图像增强 菜单下添加 领域平 均 中值滤波 拉普拉斯 Sobel 算子 子菜单 并设置相应 ID 2 打开类向导 分别对每一个子菜单建立消息响应函数 3 对每一个消息响应函数添加对应代码 实现相应的功能 具体如下 void CZhangjianView OnLingyupingjun 领域平均 TODO Add your command handler code here 44 unsigned char lpsrc lpdst long iWidth iHeight long i j int iTempWidth iTempHeight int iCenterx iCentery float foef unsigned char bArr 5 5 for i 0 i 5 i for j 0 jbiWidth iHeight m DibHead biHeight if m DibHead biBitCount 8 MessageBox 当前版本仅支持 256 色位图的操作 系统提示 MB ICONINFORMATION MB OK return unsigned char lpNewBits lpNewBits unsigned char new unsigned char iWidth iHeight if lpNewBits NULL return HLOCAL hNewBits hNewBits LocalAlloc LHND iWidth iHeight if hNewBits NULL MessageBox 分配内存失败 提示 MB ICONINFORMATION MB OK return lpNewBits unsigned char LocalLock hNewBits for i iCentery i iHeight iTempHeight iCentery 1 i for j iCentery j iWidth iTempWidth iCenterx 1 j lpdst lpNewBits i iWidth j int temp int k l for k 0 k iTempHeight k for l 0 l255 temp 255 lpdst unsigned char temp memcpy m Image lpNewBits iWidth iHeight Invalidate LocalUnlock hNewBits LocalFree hNewBits void CZhangjianView OnZhongzhilvbo 中值滤波 TODO Add your command handler code here long w h long i j w m DibHead biWidth h m DibHead biHeight unsigned char hap 30 0 int k l unsigned char lpsrc new unsigned char w h memcpy lpsrc m Image w h for i 2 i h 2 i for j 2 j w 2 j for k 2 k 2 k for l 2 lbiWidth h m DibHead biHeight int temp unsigned char fxy new unsigned char w h memcpy fxy m Image w h for i 1 i h 1 i for j 1 j255 temp 255 m Image i w j temp Invalidate delete fxy void CZhangjianView OnLapulasi 拉普拉斯运算 TODO Add your command handler code here if m DibHead NULL MessageBox 当前无图像 请打开图像 提示 return long i j long w h w m DibHead biWidth h m DibHead biHeight int f new int w h memset f 0 w h sizeof int unsigned char g NULL int f1 new int w h memset f1 0 w h sizeof int int imin 10000 int imax 10000 for i 1 i h 1 i 47 for j 1 j w 1 j g m Image i w j f i w j g w g w g 1 g 1 5 g if f i w j imax imax f i w j for i 0 i h i for j 0 jHSI 3 1 BGRI min 3 1BGR BGR S BG BG H 2 51 其中 2 1 2 2 1 arccos BGBRGR BRGR HSI RGB 若设 H S I 的值在 0 1 之间 R G B 的值也在 0 1 之间 则从 HSI 到 RGB 的转换公式为 1 当 H 在 0 2 3 之间 3 60cos cos 1 1 BRIG H HS IR SIB 2 当 H 在 2 3 4 3 之间 3 60cos cos 1 1 120 GRIB H HS IG SIR HH o 3 当 H 在 4 3 2 之间 3 60cos cos 1 1 240 GBIR H HS IB SIG HH o 三 实验内容 1 在前实验的基础上编程实现一幅灰度图像的伪彩色处理 2 在前实验的基础上编程实现彩色图像的显示及 RGB 和 HIS 的转换 四 实验步骤 1 打开前一个实验工程 在 Resources 面板中 找到 Menu 双击其下 IDR MAINFRAME 打开菜单编辑器 在 图像增强 菜单下添加 伪彩色 子菜 单 并设置相应 ID 52 2 打开类向导 分别对每一个子菜单建立消息响应函数 3 对消息响应函数添加对应代码 实现相应的功能 具体如下 void CZhangjianView OnWeicaise 伪彩色处理 TODO Add your command handler code here long w h long i j w m DibHead biWidth h m DibHead biHeight unsigned char temp unsigned char r new unsigned char w h unsigned char g new unsigned char w h unsigned ch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 渔船无线电操作员标准化考核试卷含答案
- 母液蒸发工测试验证评优考核试卷含答案
- 中药酒(酊)剂工班组考核知识考核试卷含答案
- 水产蛋白提炼工创新意识水平考核试卷含答案
- 通信交换设备装调工安全强化竞赛考核试卷含答案
- 蜂产品品评员岗前基础技能考核试卷含答案
- 甲壳类繁育工岗位规程考核试卷含答案
- 变压器线圈制造工岗位适应能力考核试卷含答案
- 汽车发动机再制造装调工岗前安全宣教考核试卷含答案
- 洗毯工岗前理论考核试卷含答案
- 2025绵阳东辰本部小升初数学考试试题库(含答案)
- 2026 年秋季校园传染病案例警示教育
- 2026年半年度消费新潜力白皮书-魔镜洞察-202609
- 2026银行业务创新研究与服务模式分析与发展方向研究报告
- 新版2026秋统编版(新版)小学道德与法治五年级上册(全册)知识点清单梳理
- 电工作业安全培训
- 全过程工程咨询工作总结报告(全过程咨询)
- 株洲冶炼集团股份有限公司株洲市天元区工业五区房地产估价报告
- 中职单招专业职业技能考试题库畜牧兽医+动物医学+宠物医疗技术+宠物养护与训
- 人教版(2019)必修第一册 Unit 3 Sports and fitness Reading 课件
- 英语六级作文历年真题及答案
评论
0/150
提交评论