使用方法

🇺🇸 English Version / Available in English

For the English version, please refer to the Usage page.

本節では、Leaf Shape Analysis Tool のグラフィカルユーザーインターフェース(GUI)を用いた操作方法について説明します。
ROI の切り抜きから EFD の出力まで、すべての処理を一つのウィンドウ内で完結できます。


1 ワークフローの概要

全体の処理フローを以下に示します。
各ステップは、専用の GUI ウィジェットから操作できます。

---
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["完了"]

各ステップの詳細は、次節 (セクション 2) に記載しています。


2 ステップごとの解説

2.1 アプリケーションの起動

インストール後、アプリケーションを起動します。 起動すると、napari ビューア ウィンドウが表示されます。

Initial window
図 1: 初期画面

2.2 画像の読み込み

メニューバーから File > Open を選択するか、画像をビューアにドラッグ&ドロップして開きます。
ショートカットキー:Ctrl + O(Windows / Linux)または Cmd + O(macOS)

How to open a image
図 2: File > Open
対応フォーマット

対応する画像形式は .jpg.png.tif.bmp です。

画像を読み込むと、ファイル名をレイヤ名とする画像レイヤが追加され、その上に ROIs レイヤが自動的に作成されます。

Image loaded
図 3: 画像読み込み後

2.3 (任意)スケールの設定

画像内にスケールバーが含まれる場合や、DPI 情報が正確な場合には、Scale Setter ウィジェット を用いてピクセルと cm の対応関係を設定できます。 この操作は任意ですが、スケールを設定すると輪郭抽出後に面積 (cm\(^2\)) が記録されます。

2.3.1 スケールバーを使用する場合

  1. Add Layer をクリックし、Scale Measurement シェイプレイヤ を追加します。
  2. modepx/cm に設定します。
  3. スケールバー部分を拡大し、Add lines ツール が選択されていることを確認します。
  4. 既知のスケールバーの長さに沿って線を引きます。
  5. 実際の長さと単位(デフォルトは 1 cm)を入力します。
  6. Set Scale をクリックします。
Set scale (px/cm mode)
図 4: スケール設定 (px/cmモード)

2.3.2 DPI 情報を使用する場合

  1. modedpi に設定します(デフォルト)。
  2. DPI フィールドに画像の解像度を入力します(デフォルトは 300 dpi)。
Set scale (dpi mode)
図 5: スケール設定 (dpiモード)
推奨スキャン解像度

葉のスキャン画像では、解像度 300–400 dpi 程度が一般的に用いられています (Shi ほか 2021; Viscosi ほか 2009)。 ファイルサイズと処理速度のバランスが良く、形状の詳細も十分保持されます。 細かい鋸歯のない葉の場合は、50 dpi 程度でも十分な場合があります (Neto ほか 2006)


2.4 ROI(関心領域)の切り抜き

Crop Rectangle ウィジェット を用いて、解析対象領域(ROI)を指定します。
Add ROI Layer をクリックし、解析対象の葉を囲むように矩形を描きます。

  1. ROIs レイヤーが選択されていることを確認します。
  2. Add rectangle ツール を選択し、対象領域を囲みます。
  3. Add ROI Layer をクリックします。
  4. ROI_01 という画像レイヤと、ROI_01_landmarks というポイントレイヤが自動的に作成されます。
ROIとは

ROI(Region of Interest)とは、画像全体のうち解析対象となる領域を指します。 葉形解析では、スキャン画像中の葉部分のみを切り出した領域が ROI に相当します。 ROI を指定することで、不要な背景の影響を除外できます。

Draw ROI rectangle
図 6: 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 点を指定します。 これにより、生物学的な葉の向きを統一できます。

  1. ROI_XX_landmarks レイヤ(XX は ROI 番号)を選択します。
  2. 葉の基部(base)をクリックします。
  3. 先端(tip)をクリックします。
  4. Rotate Image Based on Points をクリックします。
  5. 基部が左(−x方向)、先端が右(+x方向)となるように画像が回転し、新しいレイヤ ROI_XX_rotated が追加されます。
Added landmarks
図 7: ランドマークの追加
操作のヒント
  • 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 法で二値化する場合

  1. Binarization WidgetmethodOtsu に設定

  2. Binarize image をクリック

  3. ROI_XX_rotated_Otsu_labels レイヤが追加され、マスクがオレンジ色で表示

  4. threshold スライダーで閾値を手動調整可能(リアルタイム更新)

  5. 右側の [Binarization Widget]の[method]から、[Otsu]を選択します

  6. [Binarize image]をクリックします

  7. “ROI_XX_rotated_Otsu_labels” (XX は 01から始まるROI番号) というラベルレイヤーが追加され、二値化されたマスクが表示されます。対象の領域がオレンジ色で重ねて表示されます

  8. [method]の下に[threshold]のスライダーが表示され、閾値を手動で調整することが可能です。
    スライダーを動かすと、二値化の閾値が変化し、マスクがリアルタイムで更新されます。

Added landmarks
図 8: Otsu 法による二値化

2.6.2 SAM2 で二値化する場合

  1. Binarization WidgetmethodSAM2 に設定
  2. Binarize image をクリック
  3. 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 ツールでの編集

  1. ROI_XX_rotated_<method>_labels レイヤー(XX は ROI 番号、<method> は Otsu または SAM2)を選択します。
  2. 左上の layer controls から paint brush を選択します。
  3. 欠けた領域をクリック&ドラッグして塗りつぶします。

2.7.2 Paint brush ツールでの編集

  1. “ROI_XX_rotated_<method>_labels” レイヤー (XX は 01から始まるROI番号、<method> は Otsu または SAM2) を選択します
  2. 左上の [layer controls] から [paint brush] ツール を選択します。
  3. 欠けている部分や、マスクが必要な部分をクリック&ドラッグして塗りつぶします
ツール設定の調整

layer controls では以下の設定を変更できます:
- opacity:不透明度(デフォルト 0.5) - brush size:ブラシのサイズ(デフォルト 10 ピクセル)

他の設定は通常変更する必要はありません。

2.7.3 Polygon tool での編集

  1. ROI_XX_rotated_<method>_labels レイヤーを選択します。
  2. polygon ツールを選択します。
  3. マスクを追加したい領域の周囲をクリックして多角形を描き、ダブルクリックで閉じます。
  4. 閉じた多角形の内部が自動的にマスクとして追加されます。

2.7.4 Label eraser ツールでの編集

  1. ROI_XX_rotated_<method>_labels レイヤーを選択します。
  2. label eraser ツールを選択します。
  3. 削除したい部分をクリック&ドラッグしてマスクを消去します。
編集の補足

葉柄を除いて葉身のみの輪郭を取得したい場合は、label eraser ツールが有効です。 葉柄と葉身の接続部分を軽く切り離すように削除するだけで十分です。

後の輪郭抽出処理では ROI 内の最大の連結成分のみを抽出するため、 小さな穴を完全に埋める必要はありません。 輪郭が閉じていれば正しく抽出されます。


2.8 輪郭の抽出

マスクが確定したら、輪郭を抽出します。

  1. ROI_XX_rotated_<method>_labels レイヤーを選択します。
  2. Contour Extraction WidgetExtract Contour をクリックします。
  3. マスク外周に沿って水色の輪郭が表示され、
    新たなレイヤー ROI_XX_rotated_<method>_labels_contour が追加されます。
Extracted contour
図 9: 輪郭の抽出

このとき、EFDoriented 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 に進む場合

  1. Keep base image & ‘ROIs’ にチェックを入れ、Reset Viewer をクリックします。
    元画像と ROI レイヤーは保持され、それ以外のレイヤーが削除されます。
  2. ROI プレビューが残るため、前回の領域を参照しながら次の ROI を追加できます。
  3. ROI の切り抜き に戻り、解析を続けます。

2.9.2 次の画像に進む場合

  1. Keep base image & ‘ROIs’ にチェックを入れた状態で Reset Viewer をクリックします。
  2. ROI の解析がすべて完了していることを確認します。
  3. Keep base image & ‘ROIs’ のチェックを外し、Reset All Layers をクリックします。
    すべてのレイヤーが削除され、初期状態に戻ります。
  4. 画像の読み込み に戻り、新しい画像の解析を開始します。
保存オプション
  • 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
  • scale(スケール情報)
    • px_per_cm
    • unit
    • scale_factors
    • dpi
  • roi(領域情報)
    • polygon_yx
    • bbox_ymin_ymax_xmin_xmax
    • corners_yx
    • slice_indices
  • rotation(回転情報)
    • angle_deg
    • original_size
    • rotated_size
  • landmarks(ランドマーク情報)
    • points_layer_name
    • points_n
    • points_labels
    • base_original / tip_original
    • base_rotated / tip_rotated
  • binarization(二値化情報)
    • method
    • threshold
    • manually_edited (true / false)
  • contour(輪郭情報)
    • points
    • area
  • meta(付加情報)
    • created_time
    • cropped_from
    • face_color_type
    • border_color_type
  • processing_history(処理履歴)
    • binarization と contour extraction の各ステップ(手法・閾値・面積など)

CSV ファイルには、上記の一部情報を簡易形式でまとめています。

文字コードについて

CSV ファイルは UTF-8 で保存されています。
Excel で開く際は、「データ」タブ → 「テキストまたはCSVから」を選択し、
インポートウィザードで文字コードを UTF-8 に指定してください。
(デフォルトの Shift-JIS 設定では文字化けします。)


4 推奨操作順序

  1. ツールを起動し、画像を読み込みます。
  2. 各 ROI についてステップ 1–9 の手順を順に実行します。
  3. 出力されたファイルは、そのまま R(例: Momocs (Bonhomme ほか 2014))や
    Python(例: PyEFD)で解析に使用できます。

4.1 アイコンのクレジット

使用している一部のインターフェースアイコン(例:Add Shapes, Paint, Erase, Polygon)は、napari プロジェクトに由来するものであり、BSD 3-Clause License の下で配布されています。 本ドキュメントでは、説明および教育目的で使用しています。


5 参考文献

Bonhomme, Vincent, Sandrine Picq, Cédric Gaucherel, と Julien Claude. 2014. Momocs: Outline Analysis Using R. Journal of Statistical Software. Vol. 56. https://www.jstatsoft.org/v56/i13/.
Neto, João Camargo, George E. Meyer, David D. Jones, と Ashok K. Samal. 2006. 「Plant Species Identification Using Elliptic Fourier Leaf Shape Analysis」. Computers and Electronics in Agriculture 50 (2): 121–34. https://doi.org/10.1016/j.compag.2005.09.004.
Otsu, Nobuyuki. 1979. 「A Threshold Selection Method from Gray-Level Histograms」. IEEE Transactions on Systems, Man, and Cybernetics 9 (1): 62–66. https://doi.org/10.1109/TSMC.1979.4310076.
Ravi, Nikhila, Valentin Gabeur, Yuan-Ting Hu, Ronghang Hu, Chaitanya Ryali, Tengyu Ma, Haitham Khedr, ほか. 2024. 「SAM 2: Segment Anything in Images and Videos」. https://arxiv.org/abs/2408.00714.
Shi, Peijian, Kexin Yu, Karl J. Niklas, Julian Schrader, Yu Song, Renbin Zhu, Yang Li, Hailin Wei, と David A. Ratkowsky. 2021. 「A General Model for Describing the Ovate Leaf Shape」. Symmetry 13 (8): 1524. https://doi.org/10.3390/sym13081524.
Viscosi, V., P. Fortini, D. E. Slice, A. Loy, と C. Blasi. 2009. 「Geometric Morphometric Analyses of Leaf Variation in Four Oak Species of the Subgenus Quercus (Fagaceae)」. Plant Biosystems - An International Journal Dealing with All Aspects of Plant Biology 143 (3): 575–87. https://doi.org/10.1080/11263500902775277.