ピーマン農家でないけど、ピーマン検知AIをJetson Nano で作ってみた -AI使わない編説明-

農業AI AI

上記の比較編では、AI使った場合、使わない場合を比較しました

今回は、AIを使わないでピーマンを検知する場合にはどうやって作るのか説明します。

ピーマン検知 AI使わない編

どんな処理を入れるか順に説明したいと思います。

背景、照明の当て方、画像処理工夫すればより良くできますが、ここではそこまではしていませんので、参考程度に。

スポンサーリンク

ライブラリ読込

cv2は画像処理をするためのOpenCVというライブラリになります。画像処理にはHALCONと呼ばれるすごいものもありますが、OpenCVは無料で使えます。

他は、画像を読み込んだり、表示したりに使います。

画像読込/緑成分取得

画像を読み込んで、ピーマンなので、緑成分を取得します。

他の、赤、青色成分より白っぽくなります。

ノイズ除去

色むらなどを除去するために、平均化(画像をちょっとぼかす)します。

ヒストグラム確認

あとで2値化処理をするために、ヒストグラムを確認します。

横軸が、画像の明るさを示していて、0が暗く、255が明るいです。

255が明るいので、緑色部分が明るいので、だいたい110より上がピーマン(机も)となり、110くらいの閾値で良いかなということになります。

2値化

ヒストグラムで確認した閾値で2値化します。

2値化は、単純に0-255段階ある明るさのレベルを0/1にするので、黒か白だけの画像にします。

膨張

ピーマンの白い領域に、黒い点々があるので、白い領域をいったん膨張させます。

収縮

膨張したものを、収縮します。そうすると、黒い点々とか、ヘタ部分が繋がります。

ラベリング

人が見ると、白い部分がそれぞれ、個別になっているように見えるのですが、データ的にはただ、平面に0/1が並んでいるだけです。

ですので、1の部分を個別に分ける処理をします。

ピーマン部分取得/表示

ピーマンのサイズ(画素数)から、ピーマン部分を取得して表示

処理を関数化 & Jetson nano実装

最後にこれをJetson nanoのカメラでリアルタイムに検出できるようにします。

ピーマン検知関数

下記コードをテキストに貼り付けて、「pimanDetect.py」を作成

Jetson nano実装

Jetson nanoで下記のを***.pyと適当に名前をつけて、実行

最後に

この実装例だと、いくつか悪い点があります。

  • ピーマンの面積がうまく抽出できていない
  • ピーマンの高さ、幅は置く角度で変わってしまう
  • 出荷して良い見た目かどうか判断できない

などです、最初2つは照明の当て方、画像処理など工夫でどうにでもなりますが、そのピーマンが傷があるとか、傷んでいるとかを画像処理でやるのはハードルが上がってきます。

その領域になるとAIが大得意な部分になります。

なので、AIが得意とする領域と画像処理が得意とする領域をうまく組み合わせて、作ってあげると良いものができるのではと思います。

スポンサーリンク

タイトルとURLをコピーしました