openseadrag使用记录-Deep Zoom

640 阅读4分钟

Deep Zoom

  在进行高分辨率图像展示时$,由于单张图像体积过大,会对计算机性能造成较大的负担。为了减少客户端的负担,改善用户体验,我们可以采用 Deep Zoom 技术。

Deep Zoom 提供了交互式浏览高分辨力图像的能力。用户可以快速地缩放图像,并且不会影响应用程序的性能。通过提供多分辨率和使用 Spring Animations, Deep Zoom可以顺滑地加载和平移图像。

我们将同一图像的不同分辨率下或者说不同尺寸下的图像组合称作 图像金字塔 ( Image Pyramid ),不同尺寸的图像对应的就是图像金字塔上相应的层级( Level )。图像金字塔的每个层级的“地面”是由面积相同的“瓷砖”铺就,这些“瓷砖”我们称之为瓦片( Tile )。图像金字塔与瓦片图的对应关系如下图:

jzt.jpg

了解了 Deep Zoom 图像的基本概念之后,我们就可以尝试生成 Deep Zoom 图像。我们可以使用 Deep Zoom Composer 或 OpenSlide 生成 Deep Zoom 图像文件。以下我们将讲述如何使用两种工具来生成 Deep Zoom 图像。

1. Deep Zoom Composer

  Deep Zoom Composer 是 MicroSoft Sliverlight 团队基于 Deep Zoom 技术创建的一个工具。使用 Deep Zoom Composer 我们可以很方便的创建 Deep Zoom 图像。我们可以通过以下地址下载 Deep Zoom Composer:

www.microsoft.com/en-us/downl…

  1. 在安装 Deep Zoom Composer 前,如果我们之前安装过旧版本的DZC,需要先将旧版本的DZC手动卸载,然后再安装DZC。
  2. 安装后,点击图标打开DZC。待启动画面完成后,便可进入软件操作界面。进入界面之后点击 “Project”选项卡,点击 “New Project…”,弹出新建工程窗口,键入工程名称(Name),选择储存位置(Location),即新建创建 Deep Zoom 图像的工程文件。
  3. 进入工程文件,选择“Import”选项卡,点击右侧 “Add image…”按钮, 选择目标文件,即可导入文件。当然你也可以将目标文件直接拖入窗口进行导入。DZC支持 .tiff、 .tif、 .jpg、 .png 、 bmp 等格式的图像。   选择“Compose”选项卡进行排版。可以将要拼合的图像在此拼合为单张大图,当然也可以将单张大图放入操作面板,等待下一步生成 Deep Zoom 图像。
  4. 排版完成之后就可以选择“Export”选项卡进行导出。在右侧“Settings”窗口内我们可以进行相关参数配置。为了配合以后在 OpenSeadragon 中进行预览使用,我们将“Output type”设置为“Seadragon Ajax”。然后键入导出文件夹的名称(Name),选择导出文件的位置,等待文件导出。
  5. 由于 Seadragon 已经开源成为 OpenSeadragon,而DZC依旧采用老版本的 Seadragon,并且从已经关闭的CDN地址获取相关类库,所以“Preview in Browser”选项已经无法对图像的预览进行预览。不过在稍后我们将一起在 OpenSeadragon 中进行简单的开发已实现对图像。现在我们先点击“View Image Folder”对 Deep Zoom 图像的相关文件夹结构进项初步了解。文件目录结构如下:
 GeneratedImages
 |-- deep_output_files
 |     |-- 0
 |     |     |-- 0_0.jpg
 |     | 
 |     |-- 1
 |     |     |-- 0_0.jpg
 |     | 
 |     |-- …
 |     |-- 15
 |     |     |-- 0_0.jpg
 |     |     |-- 0_1.jpg
 |     |     |-- 0_… .jpg
 |     |     |-- 1_0.jpg
 |     |     |-- …_… .jpg
 |     |     |-- 76_19.jpg
 |
 |-- dez_output.xml
 |-- scene.xml
 |-- SparseImageSceneGraph.xml

  deep_output_files 文件夹中储存的就是图像金字塔及瓦片图。其中 0~15 这些文件夹就是图形金字塔各层的图像分割后各层瓦片图的集合。
  dez_output.xml 文件内部储存的是 Deep Zoom 图像的相关信息,根据这些信息 OpenSeadragon 或其它 Deep Zoom 阅图工具可进行相应的图像加载。其内部 xml 文本如下:

<?xml version="1.0" encoding="utf-8"?>
<Image
    TileSize="256"
    Overlap="1"
    Format="jpg"
    ServerFormat="Default"
    xmlns="http://schemas.microsoft.com/deepzoom/2009"
>
    <Size Width="19502" Height="5069" />
</Image>
2. OpenSlide

  我们可以使用 OpenSlide 读取一些常见的电子切片( virtual slides )生成 Deep Zoom 图像。OpenSlide 是一个基于 GUN 协议由 C 语言编写的一个开源工具库。我们在进行开发时使用 C、 Java、 Python 等语言调用该类库可以轻松的实现一个电子切片图像在线预览服务器。OpenSlide 对于常见的病理切片扫描仪生成的电子切片具有较好的支持。根据其官网介绍,OpenSlide 支持以下扫描仪厂商相关电子切片文件格式:

Aperio (.svs, .tif)
Hamamatsu (.vms, .vmu, .ndpi)
Leica (.scn)
MIRAX (.mrxs)
Philips (.tiff)
Sakura (.svslide)
Trestle (.tif)
Ventana (.bif, .tif)
Generic tiled TIFF (.tif)

官网地址:

openslide.org/