画像解析とは?
画像解析とは、画像から基本要素を取り出し、統計的なデータを得る画像処理技術を指します。画像解析の対象となる分野は衛星写真、天文、工業/農業の出荷前検査、指紋認証、セキュリティカメラ、医用画像など多岐にわたります。
画像解析の一般的な処理は以下の流れで行います。
画像解析の技術と手法
ここでは一般的な画像解析で使われる処理技術を上述の流れに沿ってご紹介します。
1. 画像の強調
画像の強調は輝度の調整やノイズの除去により、次に行うセグメンテーションの精度を向上させる作業です。
上の散らばったお米をセグメンテーションで取り出そうとしたとき、背景との明るさの違いに注目することができますが、左側の元画像を見ると画像の下部が上部と比べて暗くなっており、一つのしきい値でお米と背景を切り分けることが困難です。背景の明るさの分布を取りだし、補正をかけることで取出しが容易になります。
画像データは一般的に0-255の輝度階調を持ちます。使用される範囲が狭い場合、視覚での解析が難しい上に、照度によるセグメンテーションでもわずかなしきい値の変化で出力結果に大きな違いが起こります。解析を行う照度範囲を0-255に引き伸ばすことで、詳細な解析が行えます。その他、ヒストグラム分布の均等化、ガンマ補正、基準画像のヒストグラムに一致させる処理も頻繁に使われます
画像にブレが生じている場合には、ブレをあらかじめ除去する必要があります。上画像ではウィーナーデコンボリューションを使用して、ブレの除去を行っています。その他にもブラインドデコンボリューションやルーシー・リチャードソン、正則化フィルターを使ったブレ除去手法があります。
画像分類や物体検出で使われることが多いディープラーニング手法である畳み込みニューラルネットワークを用いたノイズ除去の手法もあります。
2. 画像のセグメンテーション
画像から必要な領域を取り出すセグメンテーションで広く用いられている手法をご紹介します。必要な部分を1、不要な部分0とするマスクを作成するため2値化とも言われます。
最もシンプルなセグメンテーションは照度のしきい値を用いる方法で、ピクセルごとの照度の値の大きい/小さいで領域をわける手法です。任意の数値で指定する他に、画像全体からグローバルしきい値を算出するOtsu法や明るさが一様でない場合には適応的なしきい値を用いて、自動的にしきい値を計算する方法があります。
こちらの画像では検出したい細胞が背景と比較して明るい部分と暗い部分が両方含まれます。このようなときには境界の照度変化に注目しエッジ検出を用いることで輪郭を得ることができます。エッジ検出にはソーベル法、キャニー 法、ガウスのラプラシアン (log)、プレウィット法、ロバーツ法、ゼロクロッシング法などがあります。
カラー画像の場合特定の色だけを関心領域として取り出す手法もよく使われます。RGBに特定の範囲を指定する方法や、明るさのばらつきを無視するために、L*a*b*やHSVといった別の色空間に変換してから色を区分することもあります。上の画像では細胞核の抽出を目的としてL*a*b*色空間に変換したうえで、色情報を表すa*,b*レイヤーでのユークリッド距離を解析し、k-meansクラスタリングにより近い色の領域を抽出しています。
複数の対象が重なった画像でセグメンテーションを行うと、それらがつながり大きな一つの対象になってしまうことがあります。そのままでは正確に面積や計数を行うことができません。その場合watershed セグメンテーションを使用してイメージ内で接触しているオブジェクトを分離する方法が利用できます。Watershed 変換は、明るいピクセルを高い表面、暗いピクセルを低い表面として扱うことにより、イメージ内の "集水域 (catchment basins)" と "流域の稜線 (watershed ridge lines)" を検出します。
輝度や色が共通の際、質感や模様の違いに注目するのがテクスチャのセグメンテーションです。上の写真では2種類の布地の種類の違いをランダム性の統計的尺度であるエントロピーの出力を用いたセグメンテーションを行っています。
最近ではセグメンテーションをディープラーニングで行う手法も確立されています。ディープラーニングを用いたピクセルベースのセグメンテーションを行う手法はセマンティックセグメンテーションと呼ばれており、上の画像ではSegNetというネットワーク構造を用いて領域を取り出しています。うまく学習が進むと車道と歩道など色や模様が近いものも柔軟に切り出すことができます。
3. モルフォロジー演算
セグメンテーションで2値化された結果の形状に対して行う処理の総称をモルフォロジー演算といいます。
最も基本的なモルフォロジー演算は「膨張」と「収縮」で、組み合わせにより穴の塗りつぶしを行うクローズ処理や細かいノイズの除去のオープン処理、トップハットフィルタ、ボトムハットフィルタなどがあります。
上の画像では一般的なモルフォロジー演算の組み合わせで前立腺癌細胞の検出を行った例です。あらかじめ用意された2値化画像に対して1.穴を埋める、2.画像の境界と接する領域を削除、3.収縮処理によりノイズを削除する、の3ステップで全体像がうつった前立腺癌細胞だけを取り出しています。
4. 領域解析
セグメンテーション、モルフォロジー処理を経て意図する領域を取り出した後、領域解析を行います。各ピクセル単位の輝度やRGB数値の確認、画像の要素をヒストグラム、平均、分散などの統計処理、また、切り出した領域に対して長さ、面積、向きといったプロパティを測定することなどが含まれます。
その他の領域解析の例
MATLABを使用した画像解析
1. 豊富で高度な画像解析用関数群
MATLAB®は画像解析で用いる関数や例題を多数提供しています。
例えば上述のプロパティ解析例でも使われているのがregionprops関数です。2値化後の画像を入れて測定したい項目をプロパティで指定するだけで実に30以上の項目の測定が可能です。また、多くの関数からどの関数を組み合わせて使うべきか迷う場合には、例題を参照することで解析の流れを理解しながら処理を学ぶことができます。例題の一部を変更するだけで課題が解決するかもしれません。
2. 初心者にやさしいアプリからのコード生成
さらに初心者の方も画像解析を気軽に取り組めるよう、処理ごとにアプリケーションを用意しており、マウス操作で決定したアルゴリズムをMATLABコードとして生成し、処理を自動化することができます。
こちらの動画では「色のしきい値」「イメージの領域解析」の二つのアプリを使い、マウスで行った操作をMATLABコードで出力することで画像から大きないちごだけを判別する処理を自動化しています。
他にも、R2017b時点で画像処理系だけで15以上のアプリが用意されており高度な処理の関数の詳細を知らなくても、マウス操作、MATLABコード生成の順で自動化に取り組むことができます。
3. 機械学習やディープラーニングと画像解析を同一環境で
MATLABは20年以上かけて拡張されてきた画像処理系ライブラリに加え、近年話題のディープラーニングをはじめとする機械学習にも対応しています。画像の準備、学習、精度の検証まで最小で10行で行うことができるシンプルなフレームワークです。
ディープラーニングを行う際にも前処理、後解析において画像処理は必須テクニックになります。画像処理に加えて、機械学習・ディープラーニングを同一環境で進められることはMATLAB環境で開発を行う大きなメリットとなります。
以下のMATLAB製品群が、画像解析を強力にサポートします。
- 画像処理系ライブラリ: Image Processing Toolbox™、Computer Vision Toolbox™
- 機械学習のための機能を強化: Statistics and Machine Learning Toolbox™、Neural Network Toolbox™
- 外部のカメラからの直接画像取込み: Image Acquisition Toolbox™
- 並列処理やGP GPUを用いて画像処理を高速化: Parallel Computing Toolbox™
例および使用方法
ソフトウェア リファレンス
参考: 点群 (ポイントクラウド), 3次元画像処理, 外観検査