编写数字图像处理程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图象处理程序的数据结构安排
• 图象类:进行bmp文件格式的读写和显 示,将图象数据按r,g,b颜色分量分别存 储
• 基本图象处理类:封装图象处理函数, 根据输入图象类,得到输出图象类
• 特定用途的图象处理类:car detection, morphing, …
编程风格
• 严格按规范命名函数、变量和常量
数字图象处理编程框架(2)
• 框架程序可以运行,但是不能打开bmp,也不 能进行图象处理操作
• 需要添加的功能(基本)
– CDib: LoadFromFile(), SaveToFile(), CopyFromDib(), ShowDib()
– CDibBitOper:阈值化,直方图均衡化 等 – CDibSpatialOper:图象平滑,边缘检测等 – CDibMorOper:形态学运算,如膨胀、腐蚀、开运
LPBITMAPINFO
m_pBmInwenku.baidu.como;
LPBITMAPINFOHEADER
m_pBmInfoHeader;
RGBQUAD *
m_pRGBTable;
BYTE *
m_pBmBits;
BOOL
m_bNeedPalette;
HPALETTE
m_hPalette;
– 需要从文件中读取数据,并填写到CDib类的数据
程序评价(2)
• 扩展功能
– 离散傅立叶变换 – 抽取直线或圆的Hough变换
程序评价(3)
• 其他方面
– 独立完成自己的作业 – 程序风格:命名规范,必要的注释
教学资源:http://learn.tsinghua.edu.cn/ Email: yang-zg03@mails.tsinghua.edu.cn
算、闭运算、边界、骨架抽取、细化等
数字图象处理编程框架(3)
• 需要添加的功能(其他)
– DibAlgOper 图象代数运算,如图象整体的 平移,加减等
– DibGeoOper图象几何运算,如水平翻、转 仿射变换、透视变换等
数字图象处理编程框架(4)
• 从文件读入位图
BOOL CDib::LoadFromFile (LPCTSTR fileName) {}
如何编写数字图象处理程序
杨之光 2004.10.24
主要内容
• 使用Visual C++ • 图象处理程序的数据结构安排 • 数字图象处理编程框架 • 程序评价
使用Visual C++
• 创建一个新的project • 用户界面安排 • 添加资源
创建一个新的project
• 创建MFC AppWizard (exe) • 改变Base View Class 为 CScrollView • 使用ClassWizard (Ctrl+W) • 使用Project Settings (Alt+F7)
成员中
数字图象处理编程框架(5)
• 形态学膨胀
– BOOL CDibMorOper::Dilation(CDib *pOldDib, CDib *&pNewDib, CMorphType type)
– 需要在输入图象类pOldDib上做形态学膨胀 操作,结果图象存入pNewDib中。Type参 数选择形态学操作的模板
用户界面安排
界 面 安 排 | 使 用 菜 单
用户界面安排(2)
界面安排--使用ToolBar (undo/redo/selection)
用户界面安排(3)
界 面 安 排 | 使 用 控 件
添加对话框资源
• 添加Button, Radio Button, Edit Control… • 为添加的对话框资源创建类 • 为控件增加消息处理函数(class wizard)
数字图象处理编程框架(6)
已有的资源:
class CAffineDlg: float m_dRotate…
程序评价
• 基本功能
– bmp的读写,显示 – 直方图均衡化 – 边缘抽取: Sobel,SUSAN,Canny… – 图象平滑 – 阈值化 – 基本形态学处理: 腐蚀、膨胀、开运算、闭
运算 – 骨架抽取、细化
– m_pBuffer: 类成员,指针类型,是一个缓 冲区
• 程序的注释
• 不要使用全局变量
数字图象处理编程框架
• 数据结构安排
– 图象类: CDib, Bmp文件格式的读写和显示 – 基本图象处理类: CDibMorOper,
CDibSpatialOper… – 高级图象处理类: CMorphing
相关文档
最新文档