連続画像の位置合わせ
AlignRef2の使い方
連続する2D画像の位置ずれを、ブラウザ内で確認・補正して保存します。インストールは不要です。
まずはデモで試しましょう
AlignRef2は、組織の連続切片などの画像を順番に読み込み、平行移動と回転で位置を合わせるツールです。自動位置合わせ、目視確認、手動補正、切り抜き、保存までをブラウザ内で行えます。旧 AlignRef + MultiStackRegの手順はLegacy workflowとして残しています。
公開URL:https://satorumuro.github.io/AlignRef/
Load images → Try demo dataset を押すと、マウス脳の連続切片132枚を読み込めます。ご自身の画像を用意する必要はありません。クリック時に約9.84 MBをダウンロードします。デモは事前にAlignRef2で位置合わせされていません。
Windows上のGoogle ChromeとMicrosoft Edgeで確認しています。他のブラウザやスマートフォンでの画像処理は未検証です。このガイドは狭い画面でも読めます。
基本的な使い方
-
画像を読み込む
Choose imagesで複数ファイル、またはChoose folderでフォルダーを選びます。1切片につき1ファイルを用意してください。ファイル名の数字を考慮した順序(image1、image2、image10)で並びます。新しい画像を読み込むと現在の作業が置き換わるので、先に保存してください。
-
順序と画像を確認する
Viewer上部のSliceとファイル名を確認します。Fで次、Rで前へ移動。Viewer上のホイールも使えます。Fit to Windowで全体を表示できます。大きさの異なる画像は拡大縮小せず、最大幅・高さの共通キャンバス中央に配置されます。余白はCanvas backgroundでWhite / Blackを選びます。
-
自動位置合わせの設定を確認して実行する
Automatic registrationのChannelはGray / Red / Green / Blueから選択します。初めてならGray、Proxy limitは初期値768から試せます。Proxy limitは計算用の縮小画像の最大辺で、出力サイズを縮小する設定ではありません。
ReferenceのMiddle sliceは中央、Current sliceは今見ている画像を基準にします。Run Rigid Registrationで、基準から両側へ隣接画像を順に位置合わせします。対象は読み込んだスタック全体です。Set Position Start / Endはこの処理の範囲指定には使いません。
-
すべての結果を目で確認する
Previous image overlay / Next image overlayで前後の画像を重ね、Overlay opacityで透明度を調整します。Flickerで交互表示できます。Registration warningsも確認してください。数値が良くても解剖学的に正しいとは限りません。形の変化、大きなずれ、欠損、低コントラストの画像は補正が必要になることがあります。
-
必要な部分を手動で補正する
補正の基準にする画像へ移動し、前後画像のoverlayを表示してStart Recording Positionを押します。W A S Dで上下左右に1 px、Q Eで左右に0.1°回転します。Shiftを併用すると10倍です。記録中は切片移動が止まります。
Finish Recording Positionで補正量を記録します。この時点では画像に適用されず、プレビューが消えます。続いて下の説明に従ってSet Position Start / Set Position Endを設定し、範囲を確認してApply Position & Rotationを1回押します。取り消しはUndo last change (Ctrl+Z)です。Cancel Recordingは記録中のプレビューを破棄します。
-
必要なら共通範囲を切り抜く
Start Cropを押し、Viewerで四角形をドラッグします。内側のドラッグで移動、角のドラッグで大きさを変更できます。Apply Cropで全画像の出力範囲を設定。Undo Cropで戻せます。Clear Crop Boxは選択枠だけを消します。余白が必要ならExpand Canvas +100 px each sideで四辺を100 pxずつ広げられます。
-
画像と作業内容を保存する
FormatでPNG(初期値)またはJPEGを選びます。Export to folderは選択先に新しいサブフォルダーを作成します。小さなスタックはDownload ZIP (small stacks)でも保存できます。ZIPは符号化済み画像の合計256 MBまでです。どちらも8-bit画像と
transforms.jsonを保存します。Save transforms.jsonは変換設定だけを保存し、元画像は含みません。再開するには同じ元画像を同じ順序で読み込み、Load transforms.jsonを使います。画像数・各画像サイズが一致する必要があります。対応付けは名前ではなく並び順です。ページを閉じる・更新する前に保存してください。
Start / Endは「手動補正の適用範囲」
記録した同じ移動量・回転量を、どの切片に適用するかを指定します。切片番号は1から始まり、元ファイル名の番号とは別です。
- Finish Recording Positionの直後は、StartとEndの両方が今の切片になります。
- 最初の対象切片へ移動し、Set Position Startを押します。
- 最後の対象切片へ移動し、Set Position Endを押します。
- Position rangeの番号と✓、Apply to slices …を確認してから適用します。
「Apply to slices 34–72 (inclusive)」なら34と72を含む全切片に適用します。StartとEndが同じなら1枚だけです。
未設定は「—」。設定直後はstatusに切片番号が短時間表示され、設定済みボタンにも色が付きます。Start: 72、End: 34のように逆順でも入力値は入れ替わらず、適用範囲34–72とStart > Endが表示されます。
Applyを繰り返し押すと補正が重なります。誤操作はUndoで戻してください。自動位置合わせを再実行すると自動変換が置き換わりますが、適用済みの手動補正は残るので結果を再確認してください。
キーボード・マウス操作
| 操作 | 動作 |
|---|---|
| F / R | 次 / 前の切片(記録中・処理中は移動しません)。 |
| Viewer上のホイール | 下で次、上で前。連続イベントを1操作として抑制し、先頭・末尾で止まります。 |
| Ctrl + ホイール | Viewerをズーム。画像の出力サイズは変わりません。 |
| Viewerをドラッグ | 表示を移動。Cropモードでは切り抜き枠を操作します。 |
| W A S D / Q E | 記録中に移動 / 回転。Shiftで10倍。 |
| Ctrl Z | 記録中以外で直前の変更を取り消し。履歴は最大50操作。 |
入力欄・選択欄・スライダーを操作中は切片移動を抑止します。キーやホイールが効かないときは、処理や記録を終え、Viewerをクリックしてから試してください。Viewer外のホイールは通常のスクロールです。移動ボタンやSliceの番号入力も使えます。
対応形式と16-bit TIFF
| 項目 | 現在のWeb beta |
|---|---|
| 一般画像 | JPG / JPEG / PNG |
| TIFF | .tif / .tiff、Classic TIFF、1ファイル1ページ、little / big endian |
| TIFFの画素 | 符号なし8-bit / 16-bit、grayscale(BlackIsZero / WhiteIsZero)またはRGB |
| TIFFの圧縮 | 非圧縮、LZW、Zlib/Deflate。Predictor 1 / 2。 |
| TIFFの配置 | strip形式、RGBはinterleaved、top-left orientation、通常のfill order、alphaなし。 |
| 非対応 | 複数ページTIFF、tiled、BigTIFF、planar separate、alpha・追加channel、palette、CMYK、1-bit、signed / float、PackBits / JPEG / CCITT圧縮、その他のorientation・fill order・predictor。BMP / DICOM入力もありません。 |
元TIFFは変更しませんが、読み取った16-bitの値を0–65535から0–255へ変換(round(value / 257))し、表示・位置合わせ・手動補正に使います。出力は8-bit PNG / JPEGです。PNGでも元の16-bit精度は戻りません。
自動コントラスト調整はありません。16-bitの狭い値域だけを使う画像は暗く見える場合があります。16-bit精度の保存、TIFF出力、物理的な画素間隔やICC/EXIF情報の引き継ぎは未実装です。元画像は別途保管してください。
画像はブラウザ内で処理します
読み込んだ画像データは、サーバーへアップロードされません。画像の読み込み、位置合わせ、保存用データの作成をブラウザ内で行います。
アプリのコードは公開サイトから取得します。Try demo datasetは公開AlignRefサイトからデモ画像をダウンロードします。これらの通信は、ご自身の画像を送信するものではありません。外部の出典リンクはクリックしたときに開きます。
困ったときは
TIFFが開けない
表示されたファイル名とエラーを確認し、上の対応形式と照合してください。複数ページやtiled TIFFは、対応する単一ページ・strip形式の画像に書き出してから読み込みます。読み込みに失敗した場合は、それまでのスタックを維持します。
画像サイズが異なる・余白がある
画像は最大幅・高さのキャンバス中央へ配置されます。画像自体は拡大縮小されません。背景色を確認し、必要なら最後に共通範囲をCropしてください。画素の物理的な大きさを自動的に揃える処理はありません。
大きなスタックで時間がかかる・ブラウザが重い
まず少数の画像で試し、不要なタブを閉じてください。Proxy limitを小さくすると計算負荷を抑えられますが、位置合わせ結果は再確認してください。大きな出力はZIPよりExport to folderを使います。TIFFの1回のdecodeは60秒で打ち切られます。キャンバス上限は1辺32,767 px・100 MPですが、端末のメモリ制限でそれより小さくても処理できない場合があります。
Start / Endが意図した番号ではない
Finish Recording Positionが両端を現在切片に設定するため、Finishの後に範囲を指定してください。ViewerのSliceとファイル名を確かめて設定し、Apply直前に範囲を読み直します。
位置合わせが不自然・警告が出る
全切片をoverlayで確認し、必要な範囲を手動補正してください。形の変形や欠損を自動的に修復するツールではありません。失敗した隣接ペアは直前の自動変換を引き継いで警告されるため、警告の先も確認します。
保存・中止・再開
フォルダー保存が利用できない場合は小さなスタックでZIPを使えます。処理中のCancelで中止できますが、フォルダーに書き込み済みのファイルは残ります。ページ再読込による作業の自動復元はありません。画像とtransforms.jsonを保存してください。
出典・ライセンス
ソフトウェアのコードはApache-2.0です。デモ画像は別にCC BY-SA 4.0で提供します。
デモ:Mouse Brain Architecture Project / Brain Architecture Project (BAP)のsubj03。ライセンスの根拠はBAP公式Policy、配布元ホストはJHU subj03です。奇数切片のみを保持し、共通キャンバス化・JPEG化した132枚を使用しています。
デモ画像や加工後の画像を共有する際はBAPへの帰属、出典・ライセンスへのリンク、追加加工の説明を保持し、CC BY-SA 4.0で共有してください。DATA_LICENSE.mdはデモ画像の書き出しにも含まれます。BAP/JHUの推奨・承認を意味しません。