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