農場の三次元モデルから草地部分を選択するための画像処理法

要約

空撮写真から構築される農場の三次元モデルを分析して収量予測や雑草識別を行う際、モデルが含む森林、家屋、倉庫、作業道路等を除外する必要がある。モデル作成用ソフトウェアが備える点群分類機能等と開発したアルゴリズムにより、草地圃場領域を選択することが可能になる。

  • キーワード:オルソモザイク、数値地形モデル、草地、点群分類、Python
  • 担当:北海道農業研究センター・寒地酪農研究領域・自給飼料生産グループ
  • 代表連絡先:
  • 分類:研究成果情報

背景・ねらい

カメラを搭載した小型マルチコプターの普及で、様々な形状・面積の草地においても高解像度の空撮写真を簡易・迅速・大量に取得可能となり、得られる情報を草地管理へ活用する試みが活発化している。草地圃場において生産関連情報の解析を空撮写真から行う場合、圃場のみの情報が必要となるが、現実には隣接する森林、建物、道路、畑などが写真に写りこむことは避けられない。そこで本研究では、農場全体の三次元モデルから草地圃場のみを選択するための処理を開発する。三次元モデル構築用ソフトウェア(Metashape Professional(Agisoft社)またはWebODMを使用)に備わっている点群分類機能と出力のひとつである数値地形モデル(Digital Terrain Model、DTMと略記)の利用を前提とし、プログラム言語Pythonによって草地圃場選択処理を計算機へ実装する。

成果の内容・特徴

  • 処理は三段階からなる:
    • 点群分類の利用による森林と建築物の大部分を除いたDTMとオルソモザイクの構築(図1)
    • DTMの標高データの利用による森林部分に残存するノイズの完全な除去(図2上段)
    • 作業道路の色相反射率の利用による解析対象外の圃場等の除去(図2下段)
  • モデル構築用ソフトウェアのオプション「点群分類」を実行し、地表面として分類される草地の点群データのみを使用することで、森林と建築物の大部分が除去されたモデルを得る(図1)。
  • DTM(図2A1)の標高データから算出する隣接画素間の傾斜度に関して、急傾斜を白色、平坦ないし緩傾斜を黒色とする二値画像を対話的に導出し、傾斜度の境界となる白色画素を連結して面積の大きな領域を選択する(図2B1、赤色部)。選択領域を透過、それ以外をマスクへ変換し、オルソモザイクと合成することで森林部分に残るノイズを完全に除去する(図2C1)。
  • 3で得られたオルソモザイクの青色域(図2A2)に対して、高反射率を白色、低反射率を黒色とする二値画像を対話的に導出し、白色画素を連結して面積の大きな領域を選択する(図2B2、赤色部)。選択領域を透過、それ以外をマスクへ変換し、カラーのオルソモザイクと合成することで青色域反射率が高い路面を境界とする解析対象外の圃場等を除去する(図2C2)。
  • 3と4の計算機への実装はPythonスクリプトによるもので、実行時に二値画像の閾値等を対話的に決定するためのユーザーインターフェースを備える。計算機にPython環境を作成できる場合はJupyter Notebook用のソースコード(図3)を、作成できない場合はグラフィカルユーザーインターフェース(Graphical User Interface、GUI)アプリケーション(図4)を提供できる。

成果の活用面・留意点

  • 三次元モデルから収量予測や雑草識別を行う際の前処理として解析対象の圃場のみを得られる。
  • モデル構築用ソフトウェアのオプション設定については、発表論文1)と2)を参照されたい。
  • スクリプト処理のために推奨される物理メモリーの容量は、300MBまでのオルソモザイクを含む場合で16GB、700MBまでで32GB、2,200MBまでで64GB、6,700MBまでで128GBである。

具体的データ

図1 空撮写真から構築された農場,図2 草地圃場選択の際のマスク作成のための画像,図3 草地圃場選択のためのPythonスクリプトのJupyter Notebook上での実行例,図4 草地圃場の選択処理を実行するためのグラフィカルユーザーインターフェース(Graphical User Interface、GUI)アプリケーション

その他

  • 予算区分:交付金、農林水産省(AIプロジェクト)
  • 研究期間:2017~2021年度
  • 研究担当者:坂上清一、小花和宏之、八木隆徳、吉利怜奈、渡辺也恭
  • 発表論文等:
    • 坂上ら(2021)農研機構研報、9:11-23
    • 坂上ら(2022)農研機構研報、11:23-29
    • 坂上、吉利、特願(2020年10月19日)