画像解析

画像解析とは

画像解析とは、画像から基本要素を取り出し、統計的なデータを得る画像処理技術を指します。画像解析の対象となる分野は衛星写真、天文、工業/農業の出荷前検査、指紋認証、セキュリティカメラ、医用画像など多岐にわたります。

画像解析の一般的な処理は以下の流れで行います。

画像解析の流れ

画像解析における領域解析は特定範囲の数、面積、長さ、角度、形状の計測等を行うことを目的としています。領域解析を行うため、事前に全体画像から対象領域を切り出すセグメンテーションを行います。この処理は、全体画像の対象領域を1、対象領域以外の不要な部分を0の値にわけることから2値化とも言います。元の画像は様々な外乱を含んでいることがあるため、より良い解析結果を得るために、セグメンテーションのアルゴリズムを使い分けるだけでなく、その前後で画像の強調やモルフォロジー演算により対象部分を正確に取り出す作業を行います。

また最近では機械学習やディープラーニングを用いた画像認識なども画像解析に含まれるようになっています。ディープラーニングで得られる判断の柔軟性により、画像解析の応用分野はさらなる広がりを見せています

画像解析の技術と手法

ここでは一般的な画像解析で使われる処理技術を上述の流れに沿ってご紹介します。

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製品群が、画像解析を強力にサポートします。