【後編】Pythonでカンタン画像解析~錆の面積はどれくらい?~
IT技術
python で画像解析してみよう!
業務の効率化や不明確値の定量化に大きく貢献してくれる「画像解析」。
前回に引き続き、python の特色である「モジュール」と「プログラミング技術」を活用して、仕事の効率化をはかりましょう!
今回は、錆の面積を算出していきたいと思います。
前回の記事を読んでいない方は、まずはこちらをお読みください。
異物検知アルゴリズムの応用
今回紹介した「異物検知アルゴリズム」の構築は、産業的にも様々な応用が可能です。
Deep learning のインプットにするも良し、アルゴリズム単体でも応用が可能でしょう。
画像解析で錆の面積を算出しよう
たとえば、配管の腐食を検知するにあたって「錆」の検出は非常に重要です。
今度は応用編として、以下の画像を解析し、錆の面積率を算出してみましょう。
色の明暗で判定
タピオカでも最初に試した、一定の敷居値より「暗い」箇所を切り出すコードです。
1## もっとも単純な方法 ##
2img_bw = imread('PEI85_sabitakabe_TP_V.jpg', 2)
3hit, wid = img_bw.shape
4
5## 一定の敷居値(今回は120)より暗い箇所のみ表示 ##
6from numpy import sum
7img_bw_m = where(img_bw < 120, 1, 0)
8pyplot.imshow(img_bw_m)
9print("Rust ratio is :", sum(img_bw_m) / (hit * wid) * 100, '%')
結果はいまいち…
40%ほどが、錆の領域だと判定されましたね。
この方法はやはり、タピオカの実験と同じような欠点があります。
画像に影があった場合は?
では、例えば、この画像に影がさしかかっていたらどうなるでしょうか?
1## 画像の上半分を暗くする(影がかかっていることをイメージ) ##
2img_bw = imread('PEI85_sabitakabe_TP_V.jpg', 2)
3hit, wid = img_bw.shape
4for i in range(int(hit / 2)): img_bw[i] = img_bw[i] / 2
5
6## 先ほどと同様暗い箇所を抽出
7img_bw_m = where(img_bw < 120, 1, 0)
8pyplot.imshow(img_bw_m)
9print("Rust ratio is :", sum(img_bw_m) / (hit * wid) * 100, '%')
影=錆になってしまった
案の定、影の部分も錆として検知されてしまいました。
HSV を使って検知してみよう
では、先ほどと同様に、HSV 空間に射影してから「赤っぽいところ」を検知させてみましょう。
1## カラーで読み込む ##
2img_bgr = imread('PEI85_sabitakabe_TP_V.jpg', 6)
3for i in range(int(hit / 2)): img_bgr[i] = img_bgr[i] / 2
4img_hsv = cvtColor(img_bgr, COLOR_BGR2HSV)
5
6## 赤色の範囲を定義 ##
7hsv_min = array([0, 64, 0])
8hsv_max = array([15, 255, 255])
9
10## 赤色 ≒ さび色をマスクとして定義する ##
11mask = inRange(img_hsv, hsv_min, hsv_max)
12
13## マスクの面積率を算出(マスクは0 or 255なので255で割る必要)) ##
14pyplot.imshow(mask)
15print("Rust ratio is :", sum(mask) / 255 / hit / wid * 100, '%')
検知成功!
今度こそ成功です!
多少の誤差はありますが、影がかかっていても、ほぼ完璧に検知できていますね。
さいごに
今回は、HSV 空間への射影を用いた「opencv」の基本的な使い方を紹介しました。
画像解析の技術そのものは、産業的にも医療的にも応用先が無限に存在します。
ぜひ、皆さんの作業効率化やソフト開発にも活用してみてくださいね!
こちらの記事もオススメ!
2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...
2020.07.30Python 特集実装編※最新記事順Responder + Firestore でモダンかつサーバーレスなブログシステムを作ってみた!P...
2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
「好きを仕事にするエンジニア集団」の(株)ライトコードです! ライトコードは、福岡、東京、大阪、名古屋の4拠点で事業展開するIT企業です。 現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。 いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。 システム開発依頼・お見積もり大歓迎! また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」を積極採用中です! インターンや新卒採用も行っております。 以下よりご応募をお待ちしております! https://rightcode.co.jp/recruit