Skip to content

Asparagus Leaf Density Mapping Tools: Scripts for automatically quantifying and visualizing leaf density map from given images

License

Notifications You must be signed in to change notification settings

teaminaho/pseudo_leaf_density_estimator

Repository files navigation

アスパラガス茎葉繁茂度マップ生成ツール

概要

出力画像例

出力画像例: 左から入力画像、繁茂度ヒートマップ画像、4段階離散化繁茂度マップ画像、
  グリッド化繁茂度マップ画像、農業試験場指導員の方に行って頂いたアノテーション例

  • 本リポジトリでは、アスパラガスの茎葉・擬葉(Pseudo Leaf)の繁茂度マップを簡易に生成・確認するためのコード等を提供します。
  • 本研究(本リポジトリの成果物)は、生研支援センター「イノベーション創出強化研究推進事業」(JPJ007097)の一環として開発されました。

背景

  • アスパラガスの安定生産のためには、整枝により茎葉を適切な繁茂状態に保つ必要があります。また、アスパラ株の生育状態に合わせて、茎葉の繁茂状態を基に新規の株について植え込む位置を決定したり立茎角度を調整するといった作業を行います。
  • 一方で、茎葉の繁茂度は繁茂状態は産地や農家により様々であり、また複合的な観点での判断が必要なため、形式知化や指導が難しく、新規生産者がその判断の部分でつまづき得る形態になっています。
  • たとえば、その要因の一つは繁茂度を表現する指標・共通言語が無いことであり、現状は「スカスカ」など曖昧な表現で、主に口語で共有しています。
    • 指導員の方にヒアリングした際の情報の一つとして、繁茂度は概ね4段階程度に大別され、その情報を基に茎葉管理を行っている、という前提情報があります。

開発目的

利用例

  • そこで上記の問題に対して、スマートフォン等の画像から簡易に繁茂度を自動的に数値化・可視化するためのツールを開発しました。
  • このツールは、茎葉の繁茂度を自動的に数値化・可視化し、アスパラガス栽培の専門家である農業試験場の指導員が提供するアノテーション画像と同等の情報を持つ繁茂度マップを画像から推定するためのコア技術の開発を目的として作成しました。

各処理工程解説

処理工程説明画像

処理名 説明
1. 画像撮影 繁茂度推定を行う対象となる入力画像を取得します。
2. 有効領域選択 繁茂度を取得するための画像上の縦範囲を指定します。
3. 茎葉候補領域と背景領域を二値化 色情報ベースで茎葉候補領域マスクを取得します。
4. 繁茂度計算 茎葉候補領域マスク情報を用いて繁茂度マップを推定・計算します。
5. 結果画像の出力 推定された繁茂度マップについて、結果画像を出力します。

結果画像は以下の三種を出力します。

  • 繁茂度マップを連続値のヒートマップ画像として出力したもの
  • 繁茂度のヒートマップ画像を 4 段階に離散化した画像
  • 離散化された繁茂度のヒートマップ画像について、画像グリッド領域毎に統計処理を行った画像

また、各処理の具体的な実装と処理例はleaf_density_calculation.ipynbから確認可能です。

動作確認環境

インストール

リポジトリのクローン

git clone git@github.com:teaminaho/pseudo_leaf_density_estimator.git

依存ライブラリのインストール

  • クローン先のディレクトリで以下のコマンドを実行して下さい。
pip install -r requirements.txt

スクリプト等の説明と利用方法

繁茂度マップ画像生成用スクリプト

python generate_leaf_density_map_images.py INPUT_PATH [オプション]
  • INPUT_PATHでパス指定された処理対象の画像ファイルを入力として、繁茂度マップ推定を行い、結果画像を出力します
  • 出力画像は以下の5つの画像を横方向結合した画像で構成されます
    • 入力画像
    • 茎葉候補領域マスク
    • 繁茂度ヒートマップ画像
    • 4 段階離散化された繁茂度ヒートマップ画像
    • 4 段階離散化+グリッド後処理を行った繁茂度ヒートマップ画像

オプション

  • --conf-path PATH: 設定ファイル(TOML 形式)へのパスを指定します。デフォルト値は./conf/conf.tomlです。
  • --output-dir PATH: 出力画像を保存するディレクトリのパスを指定します。デフォルト値は./data/outputです。ディレクトリが存在しない場合は生成します。
  • --hmin INTEGER: 画像の切り取り開始の画像縦座標値を指定します。省略した場合のデフォルト値は 0 です。
  • --hmax INTEGER: 画像の切り取り終了の画像縦座標値を指定します。省略すると自動的に計算されます。
  • --help: ヘルプメッセージを表示し、終了します。

使用例

以下のコマンド例では、サンプル画像に対して、切り取り開始の画像縦座標値を0、切り取り終了の画像縦座標値を2500と指定した形で結果画像を生成します。

python generate_leaf_density_map_images.py data/2021/sample_images/20211005_132152.jpg --hmin 0 --hmax 2500

結果画像の例

generate_leaf_density_map_images.py 用設定パラメタについて

  • TOML 形式の設定ファイル内(./conf/conf.toml)に記述されるパラメタについて記述したものになります。

擬葉領域を抽出する際に使用するパラメータ

パラメータ名 説明
lch_lower LCh 色空間での最小値。左から、Lightness、Chroma、Hue に対応。
lch_upper LCh 色空間での最大値。左から、Lightness、Chroma、Hue に対応。
hsv_lower HSV 色空間での最小値。左から、Hue、Saturation、Value に対応。
hsv_upper HSV 色空間での最大値。左から、Hue、Saturation、Value に対応。

Grid 分割表示時の使用パラメータ

パラメータ名 説明
grid_size グリッド分割表示時の、画像横方向の分割数。

heatmap 表示時の使用パラメータ

パラメータ名 説明
kernel_size blur 処理をかける際のカーネルサイズ。
density_min 擬葉密度を normalize する際に使用する下限値。
num_density_bins 擬葉密度をビン分割する際に、何等分にするかの値。
divided_area 擬葉密度を 4つにビン分割する際の、それぞれの境界値。

自動 ROI 下端決定アルゴリズムパラメータ

パラメータ名 説明
k_h_size 自動 ROI 抽出時に使用されるエッジ抽出アルゴリズムの、縦方向のカーネルのサイズ。
serch_area アルゴリズムを適用させる範囲。縦方向のピクセル値を入力する。

About

Asparagus Leaf Density Mapping Tools: Scripts for automatically quantifying and visualizing leaf density map from given images

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published