Skip to content

ディープズームとギガピクセル画像

タイルピラミッドを DZI と IIIF Image API 3.0 として配信し、テクスチャサイズの上限なしに元画像のフル解像度でブラシマスクを塗ります。

一つのファイルとしてブラウザに送るには大きすぎる画像——航空測量、繋ぎ合わせた顕微鏡モザイク、スキャンした地図——に、どの倍率でも機能するボックス、ポリゴン、マスクでアノテーションできます。 Potato はタイルピラミッドを配信し、その上にアノテーションキャンバスを重ねます。

yaml
annotation_schemes:
  - annotation_type: image_annotation
    name: structures
    description: "Mark every structure."
    source_field: image
    viewer: deepzoom          # the default is `fabric`
    tools: [bbox, polygon, brush, eraser]
    labels:
      - {name: building, color: "#c0392b"}

タイルのルートが読み出す先が media_directory です。データファイル中のパスはそこからの相対になります。

動作する例:examples/image/deep-zoom/

二つのプロトコル、一つのピラミッド

同じタイルピラミッドを DZIIIIF Image API 3.0 の両方として配信します。IIIF が効いてくるのは文化遺産やデジタルヒューマニティーズの仕事で、そうした機関の既存ビューアや引用の慣行がすでに IIIF を前提にしているからです。描画は OpenSeadragon が担い、他のアセットと同じくローカルに同梱しています。

フル解像度のマスク

タイル化された画像でも、ブラシマスクは元画像のフル解像度で動きます。マスクバッファが GPU テクスチャではなく画像のピクセルをインデックスしているからです。ぶつかるテクスチャサイズの上限がありません。

ここは慎重に述べる価値があります。この主張の以前の版が誤っていて訂正されたためです。タイル化画像へのマスク付けは他のプラットフォームでもできます。V7 もその一つです。ここで固有なのは機能ではなくバッファの設計です。

バッファは疎かつチャンク化されており、それがこの方式を現実的にしています。12 メガピクセルの画像に 10 クラスで、およそ 458 MB からおよそ 46 MB になり、マスクデータは画像面積とともに増えることがなくなって、解像度によらず 16 KB に収まるようになりました。

Potato が適切なツールでない場合

デジタル病理に限って言えば、QuPath(デスクトップ、オープンソース、この分野の標準)と Cytomine(Web、オープンソース、ブラインドアノテーション対応のマルチユーザー)が専用に作られていますし、Potato は SVS、DICOM、NIfTI を読みません。Potato をここで使うのは、画像が大きくても臨床フォーマットではない場合や、その上に一致度とワークフローの層が必要な場合です。

関連ページ