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度のメシより技術が好き /
(株)ライトコードは、WEB・アプリ・ゲーム開発に強い「好きを仕事にするエンジニア集団」です。
システム開発依頼・お見積もりはこちらまでお願いします。
また、WEB・スマホ系エンジニアを積極採用中です!
※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

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

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事

採用情報

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

バックエンドエンジニア

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

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

\ 世界はお前の手の中に・・・ /

モバイルエンジニア

\ サービスの守り神! /

インフラエンジニア