1. HOME
  2. ブログ
  3. IT技術
  4. 【前編】Pythonでカンタン画像解析~タピオカはいくつ?~

【前編】Pythonでカンタン画像解析~タピオカはいくつ?~

python で画像解析してみよう!

業務の効率化や不明確値の定量化に大きく貢献してくれる「画像解析」。

難しそうに思うかもしれませんが、python を使えば、誰でも簡単に出来てしまうのです。

python の特色である「モジュール」と「プログラミング技術」を活用して、仕事の効率化をはかりましょう!

環境構築

以下の説明は、Anaconda および jupyter notebook のユーザーを前提として記述しています。

画像処理用モジュール「opencv」

代表的な画像処理用モジュールとして、「opencv」もしくは「pillow」があげられます。

機能やインストール、その他の手間から見ると大差はありませんが、処理速度は opencv の方が早いです。

もちろん他のモジュールでも同じことができますが、今回は「opencv」を用いて説明します。

インストール

まずは、opencv をインストールしましょう。

Anaconda prompt を起動後に、以下のコマンドを入力するだけで完了です。

準備完了!

あとは、コード中に  from cv2 import * と記載するだけ。

これで、opencv を使って画像を解析できちゃいます!

「異物検知」で画像解析

「画像解析」にはさまざまなやり方・解析対象があります。

今回は、そのなかでもよく使う「異物検知」を使おうと思います。

異物検知は、「顔認証アルゴリズム」や「トリミングしたい箇所の検出」など、さまざまな場面に応用できるため、日々の業務でも大活躍間違いなしですよ!

タピオカを数えてみよう

それではさっそく、下のイラストを解析して、タピオカがいくつあるか数えてみましょう!

色の明暗で判定する

一番簡単な解析は、白黒で読み込み、色の明るさで判定する方法です。

opencv は、numpy array 形式で画像を読み込んでくれます。

つまり、numpy.where 関数を使って「一定範囲の数値=暗さ」の領域を抽出すれば、タピオカを検出できるはずです。

サンプルコード

結果は失敗に…

コードを実行すると、このような結果になりました。

どうやら、ストローの部分も濃い色であるため、単純な色の明るさだけだと検出できないようです。

HSV を使ってみよう

このような場合、以下のような対処方法が考えられます。

  1. cv2.bitwise_and()を使ってマスク処理する
  2. for 分で条件分岐させる
  3. HSV を使ってマスク処理する

今回は、HSV を使ってマスク処理してみましょう。

HSV とは?

「HSV」は、色を以下の要素で表現する方式のことです。

  1. Hue(色相)
  2. Saturation(彩度)
  3. Value(明度)

HSV は、人間が色彩を調整する際の感覚に近いため、簡単に可読性の高いコードを書くことができるのです。

サンプルコード

結果は…成功!

上記コードを実行すると、以下のような結果になりました。

しっかりタピオカのところだけ切り出せていますね!

タピオカはいくつある?

では、タピオカの数を確認してみましょう。

findContours()関数を使おう

これも、opencv の「findContours()関数」を使えば簡単にできてしまいます。

これは、解析対象の numpy.array を解析し、図の中にいくつ図形があるのか検知します。

先ほどの画像のようにはっきり明瞭なコントラストがあれば、一発で図形を見出すことが可能です。

サンプルコード

結果

上記コードを実行した結果がこちらです。

カウントしたところ、「15個」と出力されていますね。

ちゃんとイラストと一致しています、大成功です!

他にはどんな処理ができる?

これ以外にも、「contourArea()」や「areLength()」を使って、タピオカの面積率や周囲の長さ、あるいは重心の位置を抽出したり…

…といった処理が可能です。

しかし、これらの検出方法は「粒子同士が重なっている場合、同一粒子と見なす」可能性が高いです。

Watershed」を使えばこの問題は解決しますが、今回は割愛します。

後半へつづく!

後編では、画像解析で「錆の面積」を算出してみたいと思います!

後半はこちら

こちらの記事もオススメ!

書いた人はこんな人

広告メディア事業部
広告メディア事業部
「好きを仕事にするエンジニア集団」の(株)ライトコードです!

ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もり大歓迎!

また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です!
インターンや新卒採用も行っております。

以下よりご応募をお待ちしております!
https://rightcode.co.jp/recruit

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア