目录
结合图像特征的平滑恢复技术
1.开发步骤
2 应用案例开发
结束语
应用 Web3D 引擎开发的计算机仿真系统或虚拟现实系统均需在 Web 浏览 器 上 运 行 , 需要其能快速下载和运行 , 并且尽量不需下载特定插件 。 采用基于 JAVA 技术的开源 Web3D 引擎开发的三维系统可以满足上述要求 , 开发的展示系统可以实现三维图形的旋转 、 缩放 等 交 互 功 能 。 此 外 , 在系统开发过程中对引擎中不完善的部分进行了必要的修正 。
结合图像特征的平滑恢复技术
 
 图像恢复是数字图像处理领域中的一大类技术 
 。 
 图  
 
 
 像恢复技术是要将引起图像降质的过程模型化 
 , 
 然后根据  
 
 
 相应的退化模型和知识重建来恢复原始的图像 
 。 
 由 于 造  
 
 
 成图像降质的原因众多 
 , 
 目前没有统一的恢复方法 
 , 
 在 对  
 
 
 信号源或衰减特性作了某些隐含假设后 
 , 
 目前常用的典型  
 
 
 恢复方法有迭代直接逆滤波 
 、 
 维纳滤波 
 、 
 最大熵恢复 
 、 
 约束  
 
 
 的最小二乘方滤波等 
 。 
 对于退化的图像 
 , 
 噪声是一种常见  
 
 
 的图像退化因素 
 , 
 并且图像恢复又对噪声十分敏感 
 。 
 而上  
 
 
 述这些方法仅从整体上考虑了噪声的幅值因素 
 ( 
 即信噪比  
 
 
 等因素 
 ), 
 没有考虑到噪声对图像的不同内容或特征的影  
 
 
 响 
 。  
 
 
 一般意义上 
 , 
 一幅图像的结构可分为光滑区域 
 、 
 阶 跃  
 
 
 边缘 
 、 
 屋顶边缘和噪声颗粒 
 4 
 类 
 , 
 表现为光滑区域 
 、 
 边缘线  
 
 
 和孤立点等 特 征 
 , 
 恢复后的图像噪声不可避免地会被放  
 
 
 大 
 , 
 而这个放大的噪声对图像中不同区域的影响是不一样 
 
 
1.开发步骤
 
 根据  
 Web3D 
 引擎 
 idx3D 
 中经修改后的各类的属性和  
 
 
 方法 
 , 
 总结了以下的开发步骤 
 :  
 
 
 ( 
 1 
 ) 
 为所开发的 系 统 建 模 
 。 
 系统需要先建立模型 
 , 
 才  
 
 
 能对相应对象进行交互式处理 
 。 
 由 于 
 idx3D  
 引 擎 中 没 有  
 
 
 建模的功能 
 , 
 需要借助其他建模工具实现建模 
 。  
 
 
 ( 
 2 
 ) 
 构造场景 
 。 
 系统中 
 , 
 摄像机 
 、 
 光源以及物体等各类  
 
 
 对象都要置于场景中予以管理和操作 
 , 
 因此首先要构造场  
 
 
 景 
 。  
 
 
 ( 
 3 
 ) 
 加入材质和灯光 
 。 
 在场景中需要加入相应的材质  
 
 
 和灯光 
 。  
 
 
 ( 
 4 
 ) 
 将模型文件导入程序中 
 。 
 导入的物体模型添加到  
 
 
 场景中 
 。  
 
 
 ( 
 5 
 ) 
 重构场景 
 , 
 以及场景规格化 
 。 
 由于场景中添加了  
 
 
 材质 
 、 
 灯光以及物体模 型 等 内 容 
 , 
 需要将这些对象重构成  
 
 
 新的场景 
 , 
 并对场景进行规格化操作 
 。  
 
 
 ( 
 6 
 ) 
 初始化渲染 状 态 
 。 
 对重构后的场景进行渲染 
 , 
 此  
 
 
 时是静止状态 
 , 
 并没有交互式的操作 
 。 
 
2 应用案例开发
 
 2.1  
 开发系统的简介  
 
 
 应用基于 
 JAVA  
 技 术 的  
 Web3D  
 开 源 引 擎 
 idx3D 
 , 
 开  
 
 
 发了一款陶瓷 产 品 
 ——— 
 茶壶的三维展示系统 
 。 
 所 开 发 系  
 
 
 统的功能如下 
 : 
 ① 
 可以根据用户的需求建立茶壶的模型 
 ;  
 
 
 ② 
 可以自由设置茶壶的花纹和材质 
 ; 
 ③ 
 通过鼠标的移动 
 ,  
 
 
 可以实现对茶壶对象的旋转操作 
 ; 
 ④ 
 通过键盘的操作 
 , 
 可  
 
 
 以实现对茶壶对象的缩放操作 
 。 
 具 体 来 说 
 , 
 按 动 键 盘 上  
 
 
 ‘ 
 w 
 ’ 
 字符 
 , 
 茶壶 对 象 会 放 大 
 , 
 按 动 键 盘 上 
 ‘ 
 s 
 ’ 
 字 符 
 , 
 茶 壶 对  
 
 
 象会缩小 
 。  
 
 
 2.2  
 具体实现  
 
 
 2.2.1 3D 
 建模  
 
 
 用  
 Autodesk 
 的 
 3D 
 ’ 
 sMax 
 工具 
 , 
 为茶壶进行建模 
 , 
 再  
 
 
 进行贴图建模和贴图完成时的截图如图 
 1 
 所 示 
 。 
 建 模 完  
 
 
 成后 
 , 
 生 成 
 .max 
 文 件 
 。 
 由 于  
 Web3D  
 引 擎 
 idx3D  
 的 要 求 
 ,  
 
 
 需要导出一个 
 .3ds 
 文 件 
 , 
 和一个用于贴图 的 
 .png 
 图 像 文  
 
 
 件 
 。  
 
 
 2.2.2  
 代码的实现  
 
 
 本节中主要介绍开发流程的实现 
 , 
 以及主要部分的方  
 
 
 法调用等内容 
 , 
 代码的流程如图 
 2 
 所示 
 。 
 主要介绍了 
 4 
 个 
 
 
  函数 
  : 
  init 
  ()、 
  update 
  ()、 
  mouseDrag 
  () 
  和 
  keyDown 
  ()。 
  从  
 
 
  
  功能上看 
  init 
  () 
  函数主要实现了对整个系统的构建 
  , 
  up 
 
 
  
  -  
 
 
  
  date 
  () 
  函数实现对场景的渲染以及描画到显示器的相应  
 
 
  
  窗口即 
  applet 
  中  
  mouseDrag 
  () 
  函数主要实现了鼠标操作  
 
 
  
  的功能即对物体旋转的操作 
  , 
  keyDown 
  () 
  函数主要实现了  
 
 
  
  键盘操作的功能即缩放功能 
  。  
 
 
  
  在 
  publicvoidinit 
  () 
  中 
  , 
  主要进行了该系统的初始化  
 
 
  
  处理 
  , 
  即 
  3 
  中介绍的开发步骤的具体实现 
  , 
  包括 
  :  
 
 
  
  ( 
  1 
  ) 
  构建场景 
  : 
  用 
  newidx3d 
  _ 
  Scene 
  () 
  语句创建场景对  
 
 
  
  象 
  , 
  参数为场景的大小尺寸 
  。  
 
 
  
  ( 
  2 
  ) 
  为场景添加材质和灯光 
  : 
  ① 
  调用 
  addMaterial 
  () 
  方  
 
 
  
  法 
  , 
  为场景添加材质 
  。 
  根据材质的不同指定不同的参数 
  ;  
 
 
  
  ② 
  调用 
  setAmbient 
  () 
  和 
  setBackgroundColor 
  () 
  这两 个 方  
 
 
  
  法 
  , 
  为场景添加灯光和背景颜色 
  。  
 
 
  
  ( 
  3 
  ) 
  导入建好模型的 
  .3ds 
  文件 
  : 
  用 
  newidx3d 
  _ 
  3ds 
  _ 
  Im 
  -  
 
 
  
  porter 
  () 
  .importFromURL 
  () 
  语句创建导入文件对象 
  , 
  参  
 
 
  
  数为所建模型 
  .3ds 
  文件的路径和场景的对象 
  。  
 
 
  
  ( 
  4 
  ) 
  重构场景和场景的规格化 
  : 
  ① 
  重构场景时 
  , 
  场景对  
 
 
  
  象 
  scene 
  调 用  
  rebuild 
  () 
  方 法 
  , 
  将 材 质  
  ( 
  Material 
  ) 
  和 对 象  
 
 
  
  ( 
  Object 
  ) 
  生 成 对 象 数 组 
  ; 
  ②  
  对场景规格化时 
  , 
  场 景 对 象  
 
 
  
  scene 
  调用 
  normalize 
  () 
  方法来实现规格化 
  。  
 
 
  
  ( 
  5 
  ) 
  重置场景矩阵 
  : 
  由于场景和对象都在本地空间下  
 
 
  
  建模 
  , 
  在规格化之后需要将场景和对象在本地空间下的坐  
 
 
  
  标转化为世界空间下的坐标 
  , 
  进行重置场景矩阵的计算 
  ,  
 
 
  
  具体实现通过语句 
  scene.matrix.reset 
  ()。  
 
 
  
  ( 
  6 
  ) 
  设置摄像机的位置 
  , 
  建立视图空间 
  : 
  将摄像机的位  
 
 
  
  置设为点 
  ( 
  0 
  , 
  0 
  , 
  -100 
  ), 
  设置摄像机位置的语句为场景对  
 
 
  
  象 
  scene 
  调用相应方法 
  , 
  scene.defaultCamera.setPos 
  ( 
  0 
  , 
  0 
  ,  
 
 
  
  -100 
  )。  
 
 
  
  修饰 类 型 为  
  public 
  、 
  无返回值的同步方法  
  update 
  , 
  其  
 
 
  
  参 数为  
  Graphics 
  类型的对象 
  g 
  , 
  即 
  publicsynchronizedvoid  
 
 
  
  update 
  ( 
  Graphicsg 
  ) 
  中 
  , 
  进行两个操作 
  :  
 
 
  
  ( 
  1 
  ) 
  将连同对象在内的整个场景渲染到一张图片中 
  ,  
 
 
  
  场景对象 
  scene 
  调 用 
  render 
  () 
  方 法 
  。 
  render 
  () 
  中 是 调 用  
 
 
  
  了 
  renderPipeline 
  中 的 
  render 
  ( 
  this.defaultCamera 
  ) 
  方 法 
  ,  
 
 
  
  参数为默认摄像机 
  。  
 
 
  
  这一部分是将连同三维图形在内的三维场景 
  , 
  转化为  
 
 
  
  具有三维效 果 的 二 维 图 像 
  , 
  下一步是将这个图像描画在  
 
 
  
  applet 
  上 
  。  
 
 
  
  ( 
  2 
  ) 
  将渲染好的图片画到屏幕上 
  , 
  此 处 实 例 化  
  Graph 
 
 
  
  -  
 
 
  
  ics 
  对象 
  g 
  , 
  调用 
  drawImage 
  () 
  方法在 
  applet 
  上进行描画 
  。  
 
 
  
  在 
  publicbooleanmouseDrag 
  ( 
  Event 
 
 
  
  evt 
  , 
  intx 
  , 
  inty 
  )  
 
 
  
  中 
  , 
  场景 对 象  
  scene 
  调 用 
  rotate 
  () 
  方 法 
  , 
  进 行 旋 转 处 理 
 
 
 
 rotate 
 () 
 方 法 在  
 Scene.java 
 继 承 自 的  
 CoreObject.java 
 中  
 
 
 定义 
 , 
 rotate 
 () 
 方法实现旋转的具体思路为 
 : 
 分别计算绕 
 x  
 
 
 轴 
 , 
 y 
 轴和 
 z 
 轴旋转时的变换矩阵 
 , 
 再相乘而得到一个变  
 
 
 换矩阵 
 , 
 再进行渲染 
 。  
 
 
 在 
 publicbooleankeyDown 
 ( 
 Event 
 
 
 evt 
 , 
 intkey 
 ) 
 中 
 , 
 场  
 
 
 景对象 
 scene 
 调用 
 scale 
 () 
 方 法 
 , 
 进 行 缩 放 处 理 
 。 
 scale 
 ()  
 
 
 的参数分别是 
 zoomIn 
 () 
 方法和 
 zoomOut 
 (), 
 放大时 参 数  
 
 
 为 
 zoomIn 
 () 
 方 法 
 , 
 缩 小 时 参 数 为  
 zoomOut 
 () 
 方 法 
 。  
 
 
 zoomIn 
 () 
 与 
 zoomOut 
 () 
 的 作 用 类 似 
 , 
 都是用来计算缩放  
 
 
 比例的方法 
 , 
 zoomIn 
 () 
 用来计算大于 
 1 
 的比例 
 , 
 zoomOut 
 (  
 
 
 ) 
 则用来计算 小 于 
 1 
 的 比 例 
 。 
 scale 
 () 
 方法实现缩放的具  
 
 
 体思路是 
 : 
 通过 
 zoomIn 
 () 
 方法或 
 zoomOut 
 () 
 方法计 算 出  
 
 
 来的缩放比例计算相应的变换矩阵 
 , 
 再进行渲染 
 
 
 
结束语
 
 本文在对 比 了 几 种  
 3D  
 技 术 的 基 础 上 
 , 
 介 绍 了 开 源  
 
 
 Web3D 
 引擎 
 idx3D  
 的 具 体 实 现 
 , 
 以及对原引擎的优化 
 。  
 
 
 在此基础上 
 , 
 明确了 基 于 开 源  
 Web3D  
 引擎开发系统的流  
 
 
 程 
 , 
 以及具体开发方 法 
 。 
 最 后 
 , 
 提供了一个茶壶展示系统  
 
 
 的开发实例 
 , 
 该实例的运行无需下载特定插件 
 。 
 
 
 



















