NIfTI ボリュームローダー (nifti-volume-loader)

Library

概要

SMARSORG の nifti-volume-loader は、Cornerstone3D フレームワーク向けに設計された独立型の NIfTI 体積データローダーです。TypeScript で実装され、NIfTI ファイルの読み込み、メタデータのキャッシュ、スライス単位の imageId 生成、さらに NIfTI のアフィン行列を「正交スキャン行列」に変換する処理を持ちます。ブラウザ環境での fetch にカスタムヘッダを注入できるため、認証付きエンドポイントからの取得や既存の医用画像表示パイプラインへの統合が容易です。(約300字)

GitHub

リポジトリの統計情報

  • スター数: 4
  • フォーク数: 0
  • ウォッチャー数: 4
  • コミット数: 4
  • ファイル数: 11
  • メインの言語: TypeScript

主な特徴

  • Cornerstone3D と親和性の高い独立型 NIfTI ボリュームローダー
  • NIfTI メタデータをキャッシュし、スライスごとの imageId を生成
  • NIfTI のアフィン行列を正交スキャン行列に変換する処理(空間整合性の確保)
  • カスタム HTTP ヘッダを注入可能で、認証付きリソースに対応

技術的なポイント

nifti-volume-loader の注目点は「行列変換」と「Cornerstone3D との結合点」にあります。NIfTI 形式はヘッダ内にボクセル→ワールド変換(アフィン行列)を保持し、脳画像やその他体積データを正しく表示するためにはこの行列を解釈してボクセル座標と物理座標を一致させる必要があります。本リポジトリは、そのアフィン情報を取り出して「正交スキャン行列(orthogonal scanning matrix)」へ変換する処理を提供します。これにより、任意のスライス方向や回転を持つデータでも、Cornerstone3D によるスライス表示やボリュームレンダリングで正しい向きとピクセル間隔が反映されます。

実装面では TypeScript による型定義が整備され、主要なエクスポートには init(初期化)、createNiftiImageIdsAndCacheMetadata(画像ID作成とメタデータキャッシュ)、cornerstoneNiftiImageLoader(Cornerstone 用ローダー本体)があります。createNiftiImageIdsAndCacheMetadata は、リモートの .nii/.nii.gz を取得してヘッダを解析し、スライス単位で使える imageId の配列を生成するとともに、解析結果をキャッシュして繰り返し読み込みコストを下げます。

ネットワーク面では fetch ベースの取得を行い、利用者がカスタムヘッダを注入できる仕組みがあるため、トークンベースの認証や特定の CORS 設定を必要とする環境にも対応できます。バンドル面では簡易的な webpack 設定が含まれており、ライブラリを既存のフロントエンドに組み込む際の導入コストが低く設計されています。ただしリポジトリは小規模でコミット数も少ないため、実運用前には動作確認と追加テスト(特に多様な NIfTI 変種や圧縮形式の互換性確認)を推奨します。

応用としては、医用画像ビューワーでのスライス表示、3D ボリュームレンダリングの前処理、既存の Cornerstone3D ベースのパイプラインへのプラグイン追加などが想定されます。将来的にはより多様な圧縮形式や並列ダウンロード、ストリーミング対応の拡張が考えられます。(約700〜1200字程度)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • .webpack: dir
  • CHANGELOG.md: file
  • PUBLISH.md: file
  • README.md: file

…他 6 ファイル

(簡単な構成メモ)

  • TypeScript ソースはライブラリ本体を構成し、ビルド/バンドル用に webpack 関連の設定が含まれます。CHANGELOG や PUBLISH によりリリース手順が用意されている点から、npm パッケージとしての配布を想定した作りです。

まとめ

Cornerstone3D 環境で NIfTI を正確に扱うための軽量な TypeScript ローダーです。

リポジトリ情報:

READMEの抜粋:

@smars/nifti-volume-loader

独立的 NIfTI 体积数据加载器,基于 Cornerstone3D 框架。

安装

npm install @smars/nifti-volume-loader

使用方法

基本使用

import {
  cornerstoneNiftiImageLoader,
  createNiftiImageIdsAndCacheMetadata,
  init,
} from '@smars/nifti-volume-loader';

// 初始化加载器
init();

// 创建图像 ID 并缓存元数据
const imageIds = await createNiftiImageIdsAndCacheMetadata({
  url: 'path/to/your/nifti/file.nii.gz',
});

自定义请求头

您可以为加载器发出的请求注入自定义头部,这对于身份验证很有用:

import { init } from '...