Data visualization and processing
Available from www.cs.rpi.edu
Page 1
Data visualization and processing
1
数据可视化及处理 摘要
合肥工业大学 鲍捷
指导教师 张海燕
摘要
可视化技术是近年来迅速发展的研究领域 利用图形与图象来表征数据 以利于解释巨
量数据 是可视化的本质 ViSC1.0系统提供了一套函数和类库,以帮助在Windows95下的图
形和图象可视化软件的开发 该系统的主要内容包括三维和二维可视化算法 图象处理算法
库 图形格式转化和交互式绘图 类库与 API 应用程序接口 的有机结合 使 ViSC系统成
为图象和图形处理的良好开放式平台
关键词 可视化 图象处理
Abstract
Visualization technology is a rapid devolopping field in recent years.The essence of visualization is
explaining huge data set with converting those data to graph or image. ViSC 1.0 system procides a group
of API function and class library to easy software devolopment of graph ,image and visualization under
Windows 95. This system includes 2D and 3D visualization library,image processing,image formats
converting and interactive drawing. With good combination between API lib and class library, ViSC has
devoloped a excellent open platform for graph and image processing.
一 可视化导论
现代科学技术的飞速发展 加之通讯技术的进步 使不仅科学家与工程师们 而且普通
人也要每天面对大量的数据 信息源来自空间 水下 有本地的 远程的 使人淹没在信息
的海洋中 人脑分析解释数据的能力有限 使大约 95%的计算被浪费 这严重阻碍了科学研
究的发展 难怪科学家们惊呼 我们能够做的仅仅是收集数据
1987年 在一次专题会议上 将图形学 成像技术与计算机科学结合诞生了一个全新的
领域 科学计算可视化 Viualization in Scientific Computing,ViSC
什么是可视化技术呢 它是指运用计算机图形学和图象处理技术 将科学计算过程中产
生的数据及计算结果转化为图形或图象在屏幕上显示出来 并进行交互处理的理论 方法和
技术 实际上 随着技术的发展 科学计算可视化的含义已经大大扩展 它不仅包括科学计
算数据的可视化 而且包括工程计算数据的可视化 如有限元分析的结果等 同时也包括测
量数据的可视化 如用于医疗领域的计算机断层扫描 CT 数据及核磁共振 MRI 数据的
可视化 就是可视化领域最活跃的研究领域之一
科学计算可视化将图形生成技术 图象处理技术和人机交互技术结合在一起 其主要功
能 是从复杂的多维数据中产生图形 也可以分析和理解存入计算机的图象数据 它涉及到
计算机图形学 图象处理 计算机辅助设计 计算机视觉及人机交互技术等多个领域
数据可视化及处理 摘要
合肥工业大学 鲍捷
指导教师 张海燕
摘要
可视化技术是近年来迅速发展的研究领域 利用图形与图象来表征数据 以利于解释巨
量数据 是可视化的本质 ViSC1.0系统提供了一套函数和类库,以帮助在Windows95下的图
形和图象可视化软件的开发 该系统的主要内容包括三维和二维可视化算法 图象处理算法
库 图形格式转化和交互式绘图 类库与 API 应用程序接口 的有机结合 使 ViSC系统成
为图象和图形处理的良好开放式平台
关键词 可视化 图象处理
Abstract
Visualization technology is a rapid devolopping field in recent years.The essence of visualization is
explaining huge data set with converting those data to graph or image. ViSC 1.0 system procides a group
of API function and class library to easy software devolopment of graph ,image and visualization under
Windows 95. This system includes 2D and 3D visualization library,image processing,image formats
converting and interactive drawing. With good combination between API lib and class library, ViSC has
devoloped a excellent open platform for graph and image processing.
一 可视化导论
现代科学技术的飞速发展 加之通讯技术的进步 使不仅科学家与工程师们 而且普通
人也要每天面对大量的数据 信息源来自空间 水下 有本地的 远程的 使人淹没在信息
的海洋中 人脑分析解释数据的能力有限 使大约 95%的计算被浪费 这严重阻碍了科学研
究的发展 难怪科学家们惊呼 我们能够做的仅仅是收集数据
1987年 在一次专题会议上 将图形学 成像技术与计算机科学结合诞生了一个全新的
领域 科学计算可视化 Viualization in Scientific Computing,ViSC
什么是可视化技术呢 它是指运用计算机图形学和图象处理技术 将科学计算过程中产
生的数据及计算结果转化为图形或图象在屏幕上显示出来 并进行交互处理的理论 方法和
技术 实际上 随着技术的发展 科学计算可视化的含义已经大大扩展 它不仅包括科学计
算数据的可视化 而且包括工程计算数据的可视化 如有限元分析的结果等 同时也包括测
量数据的可视化 如用于医疗领域的计算机断层扫描 CT 数据及核磁共振 MRI 数据的
可视化 就是可视化领域最活跃的研究领域之一
科学计算可视化将图形生成技术 图象处理技术和人机交互技术结合在一起 其主要功
能 是从复杂的多维数据中产生图形 也可以分析和理解存入计算机的图象数据 它涉及到
计算机图形学 图象处理 计算机辅助设计 计算机视觉及人机交互技术等多个领域
Page 2
2
二 ViSC演示系统综述
ViSC1.0系统是用 Visual C++5.0 开发的基于Windows95 的可视化开发演示系统 在设计
时 主要有如下特点
1 系统设计思想是通用化 使各种具体工作的类和函数有良好的封装性 函数组织为 API
函数库 类组织为与 ViSC具体系统无关的类库 即将全部设计分为平台设计 函数库 类库
和系统设计 软件的重用是关键 平台的接口设计是重点
2 系统结构是基于MFC 微软基础类库 充分利用继承性 建立了基于多文档界面 MDI
的程序框架
3 系统约 70多个类 按功能可分为六大模块 即应用程序框架 二维可视化 三维可视
化 图象处理 绘图 格式转化 与传统图象处理相比 在图象处理前多了可视化技术模块
其关系为
4 图象操作基本采用了Windows图形设备接口 GDI 混合使用了 API函数和MFC设备
描述表类 部分采用了直接写内存的方法以提高速度
三 应用程序框架
应用程序框架的作用是响应用户消息 处理相关数据 建立 维护 消灭进程 建立用
户界面 显示处理结果 提供多文档支持 统一不同文件格式的处理过程
ViSC1.0的应用程序框架是基于MDI的 其基本关系为
二 ViSC演示系统综述
ViSC1.0系统是用 Visual C++5.0 开发的基于Windows95 的可视化开发演示系统 在设计
时 主要有如下特点
1 系统设计思想是通用化 使各种具体工作的类和函数有良好的封装性 函数组织为 API
函数库 类组织为与 ViSC具体系统无关的类库 即将全部设计分为平台设计 函数库 类库
和系统设计 软件的重用是关键 平台的接口设计是重点
2 系统结构是基于MFC 微软基础类库 充分利用继承性 建立了基于多文档界面 MDI
的程序框架
3 系统约 70多个类 按功能可分为六大模块 即应用程序框架 二维可视化 三维可视
化 图象处理 绘图 格式转化 与传统图象处理相比 在图象处理前多了可视化技术模块
其关系为
4 图象操作基本采用了Windows图形设备接口 GDI 混合使用了 API函数和MFC设备
描述表类 部分采用了直接写内存的方法以提高速度
三 应用程序框架
应用程序框架的作用是响应用户消息 处理相关数据 建立 维护 消灭进程 建立用
户界面 显示处理结果 提供多文档支持 统一不同文件格式的处理过程
ViSC1.0的应用程序框架是基于MDI的 其基本关系为
Page 3
3
派生关系为
文档视图结构
派生关系为
文档视图结构
Page 4
4
文档类指定应用文档文件和数据 通过文件读写处理文档的创建 打开和保存 视图类
用于在一窗口中显示文档 并支持文档的打印 视图是处理文档的用户界面 一个文档可以
同时对应多个视图 视图及其他子窗口显示在框架窗口中 CMainFrame是MDI应用的主框架
窗口 MDI的各个文档视图的框架窗口是 CChildFrame或 CSplitFrame 文档模板将文档 视
图 及框架窗口组织在一起 直接或间接地创建应用的文档 ViSC系统中定义了 13种文档
模板 即 JPG BMP RLE DIB TIF TGA PCX GIF Gray, ViSC Graph, Draw, Cube ,
即对每种文档对应一种文档模板
CViSCApp封装了应用程序的概念
文档视图结构是 ViSC应用程序的核心 文档类维护程序所处理的数据 视图类实现文档
与用户的交互 框架窗口管理应用的文档视图和其他子窗口 文档模板定义文档 视图和框
架的关系 应用类通过文档模板控制程序的运行
系统核心数据为 CViSCDoc::m_hDIB,为设备无关位图 HDIB 通过 CViSCDoc::GetHDIB()
访问该保护 protected 数据 通过 CViSCDoc::ReplaceHDIB 和 CViSCView::UpdateDocument 来
更新之
四 二维可视化
二维可视化的初步任务是将数据分析后按要求的形式产生图形 图形类的派生关系为
图形类与应用程序的关系为 通过图形文档模板
Graph( CGraphDoc--CGraphView--IDR_GRAPH_TYPE--CSplitFrame),响应用户消息 产生图形
更新文档 即
CGraph是图形类基类 其任务是
1 建立位图 将位图句柄与一设备文本相连 以供编辑
2 绘制坐标轴与网格线
3 对二维数据重排序 寻找极值点
4 图形文字说明方法
文档类指定应用文档文件和数据 通过文件读写处理文档的创建 打开和保存 视图类
用于在一窗口中显示文档 并支持文档的打印 视图是处理文档的用户界面 一个文档可以
同时对应多个视图 视图及其他子窗口显示在框架窗口中 CMainFrame是MDI应用的主框架
窗口 MDI的各个文档视图的框架窗口是 CChildFrame或 CSplitFrame 文档模板将文档 视
图 及框架窗口组织在一起 直接或间接地创建应用的文档 ViSC系统中定义了 13种文档
模板 即 JPG BMP RLE DIB TIF TGA PCX GIF Gray, ViSC Graph, Draw, Cube ,
即对每种文档对应一种文档模板
CViSCApp封装了应用程序的概念
文档视图结构是 ViSC应用程序的核心 文档类维护程序所处理的数据 视图类实现文档
与用户的交互 框架窗口管理应用的文档视图和其他子窗口 文档模板定义文档 视图和框
架的关系 应用类通过文档模板控制程序的运行
系统核心数据为 CViSCDoc::m_hDIB,为设备无关位图 HDIB 通过 CViSCDoc::GetHDIB()
访问该保护 protected 数据 通过 CViSCDoc::ReplaceHDIB 和 CViSCView::UpdateDocument 来
更新之
四 二维可视化
二维可视化的初步任务是将数据分析后按要求的形式产生图形 图形类的派生关系为
图形类与应用程序的关系为 通过图形文档模板
Graph( CGraphDoc--CGraphView--IDR_GRAPH_TYPE--CSplitFrame),响应用户消息 产生图形
更新文档 即
CGraph是图形类基类 其任务是
1 建立位图 将位图句柄与一设备文本相连 以供编辑
2 绘制坐标轴与网格线
3 对二维数据重排序 寻找极值点
4 图形文字说明方法
Page 5
5
5 基本几何单元的绘制和填充
各子类完成数据分析 确保坐标和各绘图元素的参数 完成绘图 对外的接口都是 Initialize
(初始化) 和 Draw 绘制 可以利用多态性一减少重复代码 主要已完成的有分形图和统计
图
五 三维可视化
三维可视化是难点 自己开发一套底层函数是不现实和低效率的 实际上 为了使图形
化软件的开发者能够真正地避免在图形软件开发过程中的困难 尤其是避免那些计算复杂
且在软件实现上有难度的技术 并使之达到有效地 快速地 正确地开发图形软件 厂商提
出一些三维真实造型的开发平台 如 SGI的 OpenGL Microsoft的 Direct3D Intel 的 3DR
应当尽量使用这些工业标准 或开发出的 3D图形库与上述标准兼容
在三维可视化中 我们利用 OopenGL作了一个简单的范例 即旋转的三维彩色立方体
其中利用了 OpenGL中的矩阵运算 旋转 调色板设定等功能 功能实现在 CCubeDoc &
CCubeView
中 造型工作主要在 CCubeView::DrawScene中实现
三维可视化的另一模块是从三维图象重建二维图象 该问题来自MRI成像 涉及的类有
CCreateP3dDlg, 用于建立简单的 3D图象 P3D图象
CPlanrChooseDlg 用于选择 P3D图象的切面方程
CP3D 用于管理 P3D图象并完成二维重建工作
重建算法的要点是确定截面的大小和方向后 经过坐标变换 将二维切面上的点阵映射
回三维坐标中 再利用插值减小映射中小数坐标带来的误差 所得的像素值置回截面点
六 图象处理模块
图象处理算法库是以WINAPI函数的形式提供的 针对灰度图象和彩色图象的不同 提
供了不同的函数 所有灰度函数以 Gray标志识别
API函数库实现了对设备无关位图的处理 ViSC系统的文档模板结构保证了以CViSCDoc
的子类具体处理各图象格式统一生成位图临时文件的工作 而 CViSCDoc专司临时文件到内
存位图句柄的转化 这样对视图而言 完全不必考虑位图句柄 CViSCDoc::m_hDIB的来源,而
可以进行统一处理
图象有不同的格式和色深 转化生成的临时文件为 BMP文件 但色深并未统一 保留了
5 基本几何单元的绘制和填充
各子类完成数据分析 确保坐标和各绘图元素的参数 完成绘图 对外的接口都是 Initialize
(初始化) 和 Draw 绘制 可以利用多态性一减少重复代码 主要已完成的有分形图和统计
图
五 三维可视化
三维可视化是难点 自己开发一套底层函数是不现实和低效率的 实际上 为了使图形
化软件的开发者能够真正地避免在图形软件开发过程中的困难 尤其是避免那些计算复杂
且在软件实现上有难度的技术 并使之达到有效地 快速地 正确地开发图形软件 厂商提
出一些三维真实造型的开发平台 如 SGI的 OpenGL Microsoft的 Direct3D Intel 的 3DR
应当尽量使用这些工业标准 或开发出的 3D图形库与上述标准兼容
在三维可视化中 我们利用 OopenGL作了一个简单的范例 即旋转的三维彩色立方体
其中利用了 OpenGL中的矩阵运算 旋转 调色板设定等功能 功能实现在 CCubeDoc &
CCubeView
中 造型工作主要在 CCubeView::DrawScene中实现
三维可视化的另一模块是从三维图象重建二维图象 该问题来自MRI成像 涉及的类有
CCreateP3dDlg, 用于建立简单的 3D图象 P3D图象
CPlanrChooseDlg 用于选择 P3D图象的切面方程
CP3D 用于管理 P3D图象并完成二维重建工作
重建算法的要点是确定截面的大小和方向后 经过坐标变换 将二维切面上的点阵映射
回三维坐标中 再利用插值减小映射中小数坐标带来的误差 所得的像素值置回截面点
六 图象处理模块
图象处理算法库是以WINAPI函数的形式提供的 针对灰度图象和彩色图象的不同 提
供了不同的函数 所有灰度函数以 Gray标志识别
API函数库实现了对设备无关位图的处理 ViSC系统的文档模板结构保证了以CViSCDoc
的子类具体处理各图象格式统一生成位图临时文件的工作 而 CViSCDoc专司临时文件到内
存位图句柄的转化 这样对视图而言 完全不必考虑位图句柄 CViSCDoc::m_hDIB的来源,而
可以进行统一处理
图象有不同的格式和色深 转化生成的临时文件为 BMP文件 但色深并未统一 保留了
Page 6
6
原图象色深 为不因为色深而定义多种处理函数 故对各图象 图形类的共有基类视图
CViSCView定义了基于 24位真彩处理的函数 为了提高处理速度 对使用最频繁的 8位灰度
图象 定义了文档模板 CGrayDoc--CGrayView-- IDR_GRAY_TYPE--CSplitFrame
对灰度图象文件*.gry 由应用程序框架中的 CViSCApp负责调用灰度图象模块解码处理
IDR_GRAY_TYPE菜单中定义了针对灰度图象的可行处理
各种处理都依赖于dibapi.h中所定义的位图函数 我们按功能对这组API函数进行了分类
补充 大大方便了位图的处理
处理算法包括直方图处理 卷积滤波 图象变换 图象效果等 其中最有特色的是直方
图 Histogram 和卷积滤波模板(Mask)的设计 分别由类 Chistogram和 Cmask实现 卷积数据
流图为 以灰度处理为例
面对对象的滤波器模板类 CMask的构造很有意义 它使滤波器数据和滤波算法分离 有
利于提高代码的可重用性 同时 滤波器数据独立存在 可以编辑 新增 删除 查看 有
利于提高交互性和适应性
七 交互式绘图
交互式绘图模块参考Word中的图形绘制功能 提供了众多的绘图工具 如矩形 圆
利用多态性 定义了多种绘制工具类 所有这些工具或在 CDrawTool中实现 或共享基类
CDrawTool CDrawTool 分解绘图的过程 派生类中各种绘图工具只需重载绘图过程中的某些
操作步骤 这样将共享大量代码 这些绘图工具类提供相同并且唯一的功能接口 几个鼠标
消息处理函数
ViSC的 Draw绘图功能是一个图形绘制系统 用 工具 绘制出的不是点阵 而是 对
象 CDrawObj对象或其子类对象 对象的几何位置 形状 线条宽度 线条颜色 填充
颜色 遮挡关系和其他属性都是可以在任意时刻由用户改变的
多态性也应用与 CDrawObj与其子类 CDrawOleObj,CDrawPoly,CDrawRect中 重载
CDrawObj中的 Draw函数 以实现各 对象 绘制的共同接口
Draw的文档数据是一链表 该链表是由 绘图工具 所形成的各 Draw 对象 指针组
成的 这个链表串行化存储到磁盘形成*.drw矢量图文件
此外 Draw文档支持 OLE 对象链接与嵌入 因此在文档中可以嵌入图象对象
原图象色深 为不因为色深而定义多种处理函数 故对各图象 图形类的共有基类视图
CViSCView定义了基于 24位真彩处理的函数 为了提高处理速度 对使用最频繁的 8位灰度
图象 定义了文档模板 CGrayDoc--CGrayView-- IDR_GRAY_TYPE--CSplitFrame
对灰度图象文件*.gry 由应用程序框架中的 CViSCApp负责调用灰度图象模块解码处理
IDR_GRAY_TYPE菜单中定义了针对灰度图象的可行处理
各种处理都依赖于dibapi.h中所定义的位图函数 我们按功能对这组API函数进行了分类
补充 大大方便了位图的处理
处理算法包括直方图处理 卷积滤波 图象变换 图象效果等 其中最有特色的是直方
图 Histogram 和卷积滤波模板(Mask)的设计 分别由类 Chistogram和 Cmask实现 卷积数据
流图为 以灰度处理为例
面对对象的滤波器模板类 CMask的构造很有意义 它使滤波器数据和滤波算法分离 有
利于提高代码的可重用性 同时 滤波器数据独立存在 可以编辑 新增 删除 查看 有
利于提高交互性和适应性
七 交互式绘图
交互式绘图模块参考Word中的图形绘制功能 提供了众多的绘图工具 如矩形 圆
利用多态性 定义了多种绘制工具类 所有这些工具或在 CDrawTool中实现 或共享基类
CDrawTool CDrawTool 分解绘图的过程 派生类中各种绘图工具只需重载绘图过程中的某些
操作步骤 这样将共享大量代码 这些绘图工具类提供相同并且唯一的功能接口 几个鼠标
消息处理函数
ViSC的 Draw绘图功能是一个图形绘制系统 用 工具 绘制出的不是点阵 而是 对
象 CDrawObj对象或其子类对象 对象的几何位置 形状 线条宽度 线条颜色 填充
颜色 遮挡关系和其他属性都是可以在任意时刻由用户改变的
多态性也应用与 CDrawObj与其子类 CDrawOleObj,CDrawPoly,CDrawRect中 重载
CDrawObj中的 Draw函数 以实现各 对象 绘制的共同接口
Draw的文档数据是一链表 该链表是由 绘图工具 所形成的各 Draw 对象 指针组
成的 这个链表串行化存储到磁盘形成*.drw矢量图文件
此外 Draw文档支持 OLE 对象链接与嵌入 因此在文档中可以嵌入图象对象
Page 7
7
八 图象格式编解码
图象格式多种多样 怎么进行统一的处理和显示呢 显然必然先将它们转化为一种标准
的临时格式 进行处理和显示后 又可以所要求的格式保存 对Windows而言 图象的显示
需要位图句柄 而位图句柄可很容易的从 BMP文件获得 所以用 BMP格式为临时文件较为
方便
在 ViSCDoc中有成员变量 lpszTempBMP 该字符串保留临时文件名 临时文件为一标准
的 BMP文件 各种格式的图象分别定义为 CImage的子类 提供共有接口 Export和 Import与
BMP转化 通过 BMP临时文件进行处理或转化为其他格式
我们对 PCX TIF GIF TGA BMP DIB RLE提供了支持 每种格式对应一个类
虽然每个类内部的实现机制不同 而且非常复杂 但接口都是简洁而统一的 编解码数据流
图为
八 图象格式编解码
图象格式多种多样 怎么进行统一的处理和显示呢 显然必然先将它们转化为一种标准
的临时格式 进行处理和显示后 又可以所要求的格式保存 对Windows而言 图象的显示
需要位图句柄 而位图句柄可很容易的从 BMP文件获得 所以用 BMP格式为临时文件较为
方便
在 ViSCDoc中有成员变量 lpszTempBMP 该字符串保留临时文件名 临时文件为一标准
的 BMP文件 各种格式的图象分别定义为 CImage的子类 提供共有接口 Export和 Import与
BMP转化 通过 BMP临时文件进行处理或转化为其他格式
我们对 PCX TIF GIF TGA BMP DIB RLE提供了支持 每种格式对应一个类
虽然每个类内部的实现机制不同 而且非常复杂 但接口都是简洁而统一的 编解码数据流
图为
Sign up today - FREE
Mendeley saves you time finding and organizing research. Learn more
- All your research in one place
- Add and import papers easily
- Access it anywhere, anytime
Start using Mendeley in seconds!
Readership Statistics
1 Reader on Mendeley
by Discipline
by Academic Status
100% Post Doc
by Country
100% United States


