---
config:
layout: dagre
---
flowchart TD
A["画像を読み込む"] --> B{"スケールを設定しますか?"}
B -- Yes --> B1["スケールを設定"]
B -- No --> C["ROIレイヤーを追加"]
B1 --> C
C --> D["ランドマークを追加"]
D --> E["画像を回転"]
E --> F["画像を二値化"]
F --> G{"編集が必要ですか?"}
G -- Yes --> G1["二値化レイヤーを編集"]
G1 --> H["輪郭を抽出"]
G -- No --> H
H --> J["ビューアをリセット"]
J --> L{"次のROIを処理しますか?"}
L -- Yes --> C
L -- No --> M["すべてのレイヤーをリセット"]
M --> N{"次の画像を処理しますか?"}
N -- Yes --> A
N -- No --> O["完了"]
使用方法
For the English version, please refer to the Usage page.
本節では、Leaf Shape Analysis Tool のグラフィカルユーザーインターフェース(GUI)を用いた操作方法について説明します。
ROI の切り抜きから EFD の出力まで、すべての処理を一つのウィンドウ内で完結できます。
1 ワークフローの概要
全体の処理フローを以下に示します。
各ステップは、専用の GUI ウィジェットから操作できます。
各ステップの詳細は、次節 (セクション 2) に記載しています。
2 ステップごとの解説
2.1 アプリケーションの起動
インストール後、アプリケーションを起動します。 起動すると、napari ビューア ウィンドウが表示されます。
2.2 画像の読み込み
メニューバーから File > Open を選択するか、画像をビューアにドラッグ&ドロップして開きます。
ショートカットキー:Ctrl + O(Windows / Linux)または Cmd + O(macOS)
対応する画像形式は .jpg、.png、.tif、.bmp です。
画像を読み込むと、ファイル名をレイヤ名とする画像レイヤが追加され、その上に ROIs レイヤが自動的に作成されます。
2.3 (任意)スケールの設定
画像内にスケールバーが含まれる場合や、DPI 情報が正確な場合には、Scale Setter ウィジェット を用いてピクセルと cm の対応関係を設定できます。 この操作は任意ですが、スケールを設定すると輪郭抽出後に面積 (cm\(^2\)) が記録されます。
2.3.1 スケールバーを使用する場合
- Add Layer をクリックし、Scale Measurement シェイプレイヤ
を追加します。
- mode を
px/cmに設定します。 - スケールバー部分を拡大し、Add lines ツール
が選択されていることを確認します。
- 既知のスケールバーの長さに沿って線を引きます。
- 実際の長さと単位(デフォルトは 1 cm)を入力します。
- Set Scale をクリックします。
2.3.2 DPI 情報を使用する場合
- mode を
dpiに設定します(デフォルト)。 - DPI フィールドに画像の解像度を入力します(デフォルトは 300 dpi)。
葉のスキャン画像では、解像度 300–400 dpi 程度が一般的に用いられています (Shi ほか 2021; Viscosi ほか 2009)。 ファイルサイズと処理速度のバランスが良く、形状の詳細も十分保持されます。 細かい鋸歯のない葉の場合は、50 dpi 程度でも十分な場合があります (Neto ほか 2006)。
2.4 ROI(関心領域)の切り抜き
Crop Rectangle ウィジェット を用いて、解析対象領域(ROI)を指定します。
Add ROI Layer をクリックし、解析対象の葉を囲むように矩形を描きます。
- ROIs レイヤーが選択されていることを確認します。
- Add rectangle ツール
を選択し、対象領域を囲みます。
- Add ROI Layer をクリックします。
ROI_01という画像レイヤと、ROI_01_landmarksというポイントレイヤが自動的に作成されます。
ROI(Region of Interest)とは、画像全体のうち解析対象となる領域を指します。 葉形解析では、スキャン画像中の葉部分のみを切り出した領域が ROI に相当します。 ROI を指定することで、不要な背景の影響を除外できます。
- ズーム:マウスホイールで拡大縮小
- パン:Move camera ツール
でドラッグ
- スペースキーを押しながらドラッグでもパン可能(挙動が環境によって異なります)
- Delete selected shapes ツール
で矩形削除
- Next ROI index で ROI 番号を手動変更可能(自動で連番が増加します)
- Save cropped image:切り抜き画像を保存するかどうか(デフォルト:オン)
- Output Folder:デフォルトは
output/cropped_images/。Choose directory で変更可能
2.5 ランドマークの追加と回転
Landmark Tool を用いて、基部(base)と先端(tip)の 2 点を指定します。 これにより、生物学的な葉の向きを統一できます。
ROI_XX_landmarksレイヤ(XX は ROI 番号)を選択します。- 葉の基部(base)をクリックします。
- 先端(tip)をクリックします。
- Rotate Image Based on Points をクリックします。
- 基部が左(−x方向)、先端が右(+x方向)となるように画像が回転し、新しいレイヤ
ROI_XX_rotatedが追加されます。
- Add points ツール
でランドマークを追加
- ラベルは自動的に base → tip に進みます
- label ドロップダウンで手動変更可能
- Undo last point:最後のランドマークを削除
- Clear points:全ランドマークを削除
- Save rotated image:回転後画像を保存するかどうか(デフォルト:オン)
- Output Folder:デフォルトは
output/rotated_images/。Choose directory で変更可能
2.6 二値化マスクの生成
回転後の画像から、対象の輪郭抽出に用いる二値マスクを生成します。
二値化とは、グレースケール画像を輝度値に基づいて白(対象)と黒(背景)の2値に分類する処理です。
対象の形状を明瞭にし、輪郭抽出を容易にします。
利用可能な手法は次の2種類です。
- Otsu’s method (Otsu 1979):ヒストグラムから自動的に最適閾値を算出する統計的手法
- Segment Anything Model 2 (SAM2) (Ravi ほか 2024):Meta社開発の深層学習モデルを用いたセグメンテーション手法。背景が複雑な画像でも高精度に分離可能。
スキャン画像など、白背景に暗い葉が写っている場合は Otsu 法で十分です。背景が複雑な場合や葉が淡く写っている場合は、SAM2 を用いると良好な結果が得られます。
2.6.1 Otsu 法で二値化する場合
Binarization Widget の method を
Otsuに設定Binarize image をクリック
ROI_XX_rotated_Otsu_labelsレイヤが追加され、マスクがオレンジ色で表示threshold スライダーで閾値を手動調整可能(リアルタイム更新)
右側の [Binarization Widget]の[method]から、[Otsu]を選択します
[Binarize image]をクリックします
“ROI_XX_rotated_Otsu_labels” (XX は 01から始まるROI番号) というラベルレイヤーが追加され、二値化されたマスクが表示されます。対象の領域がオレンジ色で重ねて表示されます
[method]の下に[threshold]のスライダーが表示され、閾値を手動で調整することが可能です。
スライダーを動かすと、二値化の閾値が変化し、マスクがリアルタイムで更新されます。
2.6.2 SAM2 で二値化する場合
- Binarization Widget の method を
SAM2に設定 - Binarize image をクリック
ROI_XX_rotated_SAM2_labelsレイヤが追加され、マスクが青色で表示
技術的な問題により、スタンドアローン版では現在SAM2は利用できません。 SAM2 を利用する場合は、Python 版を使用してください。 将来的に対応予定です。
- Save binarized image:二値化マスクを保存するかどうか(デフォルト:オン)
- Output Folder:デフォルトは
output/binarized_images/
Otsu と SAM2 の結果を比較する場合、同一 ROI に対して両手法を実行してください。 Otsu はオレンジ、SAM2 は青で半透明表示され、重ねて比較できます。 それぞれのマスクを保存して後から解析することも可能です。
2.7 二値化マスクの編集(必要に応じて)
自動生成された二値マスクに誤差や欠損がある場合は、以下の手順で手動修正を行うことができます。
- 閾値の調整(Otsu 法の場合のみ)
- napari のラベル編集ツールを用いたマスクの直接編集
主に利用するツールは以下の3種類です。
| ツール | 用途 |
|---|---|
| paint brush |
欠けた部分などの細かな補修に適しています |
| polygon tool |
広い領域を一度に追加したい場合に適しています |
| label eraser |
不要な領域を削除する際に適しています |
2.7.1 Paint Brush ツールでの編集
ROI_XX_rotated_<method>_labelsレイヤー(XX は ROI 番号、<method>は Otsu または SAM2)を選択します。
- 左上の layer controls から paint brush
を選択します。
- 欠けた領域をクリック&ドラッグして塗りつぶします。
2.7.2 Paint brush ツールでの編集
- “ROI_XX_rotated_
<method>_labels” レイヤー (XX は 01から始まるROI番号、<method>は Otsu または SAM2) を選択します - 左上の [layer controls] から [paint brush] ツール
を選択します。
- 欠けている部分や、マスクが必要な部分をクリック&ドラッグして塗りつぶします
layer controls では以下の設定を変更できます:
- opacity:不透明度(デフォルト 0.5) - brush size:ブラシのサイズ(デフォルト 10 ピクセル)
他の設定は通常変更する必要はありません。
2.7.3 Polygon tool での編集
ROI_XX_rotated_<method>_labelsレイヤーを選択します。
- polygon
ツールを選択します。
- マスクを追加したい領域の周囲をクリックして多角形を描き、ダブルクリックで閉じます。
- 閉じた多角形の内部が自動的にマスクとして追加されます。
2.7.4 Label eraser ツールでの編集
ROI_XX_rotated_<method>_labelsレイヤーを選択します。
- label eraser
ツールを選択します。
- 削除したい部分をクリック&ドラッグしてマスクを消去します。
葉柄を除いて葉身のみの輪郭を取得したい場合は、label eraser ツールが有効です。 葉柄と葉身の接続部分を軽く切り離すように削除するだけで十分です。
後の輪郭抽出処理では ROI 内の最大の連結成分のみを抽出するため、 小さな穴を完全に埋める必要はありません。 輪郭が閉じていれば正しく抽出されます。
2.8 輪郭の抽出
マスクが確定したら、輪郭を抽出します。
ROI_XX_rotated_<method>_labelsレイヤーを選択します。
- Contour Extraction Widget の Extract Contour をクリックします。
- マスク外周に沿って水色の輪郭が表示され、
新たなレイヤーROI_XX_rotated_<method>_labels_contourが追加されます。
このとき、EFD と oriented true normalized EFD が自動的に計算され、メタデータとともにエクスポートされます。
抽出結果に誤りがある場合は、ROI_XX_rotated_<method>_labels_contour レイヤーを削除し、前のステップに戻ってマスクを修正してください。
- Save final (edited) mask:手動修正後のマスクを保存するかどうか(デフォルト:オン)
- Save chosen blob mask:デフォルト保存先は
output/binarized_images/。Choose directory で変更可能
2.9 リセットと次の処理へ進む
輪郭抽出を終えたら、ROI の処理をリセットし、次の ROI または次の画像に進みます。
2.9.1 次の ROI に進む場合
- Keep base image & ‘ROIs’ にチェックを入れ、Reset Viewer をクリックします。
元画像と ROI レイヤーは保持され、それ以外のレイヤーが削除されます。
- ROI プレビューが残るため、前回の領域を参照しながら次の ROI を追加できます。
- ROI の切り抜き に戻り、解析を続けます。
2.9.2 次の画像に進む場合
- Keep base image & ‘ROIs’ にチェックを入れた状態で Reset Viewer をクリックします。
- ROI の解析がすべて完了していることを確認します。
- Keep base image & ‘ROIs’ のチェックを外し、Reset All Layers をクリックします。
すべてのレイヤーが削除され、初期状態に戻ります。
- 画像の読み込み に戻り、新しい画像の解析を開始します。
- Save ROIs (Image + ROIs + ROI labels):ROI プレビュー画像を保存するかどうか(デフォルト:オン)
- 保存先のデフォルトは
output/rois/<image>(<image>は元画像のファイル名)。
Select file で保存先を変更できます。
3 出力ファイル
解析結果およびメタデータは自動的に指定フォルダ(デフォルト:./output/)へ出力されます。
フォルダ構成は以下の通りです。
| フォルダ名 | 内容 |
|---|---|
binarized_image_final |
手動修正後の最終二値マスク |
binarized_images |
自動二値化マスク |
coefficients_efd |
生の EFD 係数 |
coefficients_efd_normalized |
正規化済み(oriented true)EFD 係数 |
contour |
抽出された輪郭座標 |
contour_image |
輪郭を白・背景を黒で保存した画像 |
cropped_images |
ROI 切り抜き画像 |
metadata |
メタデータ(.json および .csv) |
rois |
ROI の概要プレビュー画像(元画像の半分サイズ) |
rotated_images |
ランドマークに基づき回転した画像 |
3.1 メタデータファイル
各 ROI の処理結果は、.json および .csv の両形式で自動保存されます。
<image_id>_<ROI_id>.json
<image_id>_<ROI_id>.csv
<image_id> は拡張子を除いた元画像のファイル名、
<ROI_id> は ROI 番号(ゼロ埋め、例:01, 02, 10)です。
leaf001.jpg の 2 番目の ROI を処理した場合:
leaf001_02.json および leaf001_02.csv が出力されます。 ROI 番号は常に 01 から始まります。
出力先のデフォルトは output/metadata/ です。
ファイルには ROI 座標、回転角度、スケール、二値化パラメータなどが含まれます。
3.2 メタデータの構造(JSON)
- metadata_version
- source(画像情報)
- absolute_path
- relative_path
- image_id
- roi_index
- absolute_path
- scale(スケール情報)
- px_per_cm
- unit
- scale_factors
- dpi
- px_per_cm
- roi(領域情報)
- polygon_yx
- bbox_ymin_ymax_xmin_xmax
- corners_yx
- slice_indices
- polygon_yx
- rotation(回転情報)
- angle_deg
- original_size
- rotated_size
- angle_deg
- landmarks(ランドマーク情報)
- points_layer_name
- points_n
- points_labels
- base_original / tip_original
- base_rotated / tip_rotated
- points_layer_name
- binarization(二値化情報)
- method
- threshold
- manually_edited (
true/false)
- method
- contour(輪郭情報)
- points
- area
- points
- meta(付加情報)
- created_time
- cropped_from
- face_color_type
- border_color_type
- created_time
- processing_history(処理履歴)
- binarization と contour extraction の各ステップ(手法・閾値・面積など)
CSV ファイルには、上記の一部情報を簡易形式でまとめています。
CSV ファイルは UTF-8 で保存されています。
Excel で開く際は、「データ」タブ → 「テキストまたはCSVから」を選択し、
インポートウィザードで文字コードを UTF-8 に指定してください。
(デフォルトの Shift-JIS 設定では文字化けします。)
4 推奨操作順序
- ツールを起動し、画像を読み込みます。
- 各 ROI についてステップ 1–9 の手順を順に実行します。
- 出力されたファイルは、そのまま R(例: Momocs (Bonhomme ほか 2014))や
Python(例: PyEFD)で解析に使用できます。
4.1 アイコンのクレジット
使用している一部のインターフェースアイコン(例:Add Shapes, Paint, Erase, Polygon)は、napari プロジェクトに由来するものであり、BSD 3-Clause License の下で配布されています。 本ドキュメントでは、説明および教育目的で使用しています。








