画像処理
画像解析の手順 ~ImageJのコマンド紹介~
こんにちは!
理系学生の卒業研究、製品開発・検査等で画像解析をする方もいらっしゃいますよね。
皆さんはどんな画像解析ツールをお使いでしょうか?
おそらくこの記事を見ている方には"ImageJ"をお使いの方も多いのではないでしょうか。
でも、画像解析といっても何をしていいか分からない!という方も多いと思います。
そこで今回は、画像解析の手順について、実際にImageJのコマンドと合わせて説明していきます!
本記事ではImageJについて紹介してりますが、本サイトMiVLogでは高機能画像解析ソフト『WinROOF』シリーズを利用して画像解析についてご紹介しております。
『WinROOF』シリーズには、教職員・学生向けの【WinROOF Education】というお得なエディションもございますので、ImageJをご利用の方も是非バナー画像をクリックしてご確認ください!
画像解析の流れ
画像解析において大事なポイントは5つです!
このうち、赤枠で囲った部分の「前処理」「抽出」「後処理」「測定」の4つについて詳しく説明します!
キャリブレーション
では早速「前処理」について・・・の前に、キャリブレーションについて説明しておかなければなりません!
キャリブレーションとは?
Google先生にお尋ねすると、「校正」という意味だと出てきますね。
画像処理におけるキャリブレーションとは何か!
それは、「画像の1Pixelを実寸に換算したときの長さ」です!
このキャリブレーションを設定しておかないと、せっかく粒子や細胞の面積、長さ等を測定しても実寸ではないんですね・・・
それではImageJでのキャリブレーションの設定方法です。
① "Straigt"コマンドで、長さが分かる箇所に線を引く
下図赤○のQ"Straigt"コマンドで、画像内のスケールに直線を引きます。
② キャリブレーション値の設定
メニューバーのAnalyze→Set Scaleからキャリブレーション値の設定をします。
・Distance in pixels:①で引いた直線の画素数(変更しない)
・Known distance :その直線が実寸だとどれぐらいの長さか
・Unit of length :単位
の3つを入力して、OKを押せばキャリブレーションの設定は完了です!
前処理
画像解析における前処理とは、次の「抽出」をしやすくするための処理です。
例えば、背景の明るさムラをなくしたり、エッジ強調をしたり・・・などがありますが、代表的なのはメディアンフィルタ処理です。
メディアンフィルタ処理とは、簡単に言うとノイズ除去に役立つ処理ですね。
■■メディアンフィルタ処理の詳しい説明を見るにはここをクリック■■
■■他のフィルタ処理の説明を見るにはここをクリック■■
ImageJにおけるメディアンフィルタ処理は、
メニューバーのProcess→Medianからできます。
Radiusはフィルタ処理を適用する範囲(半径[Pixel])ですので、除去したいノイズのサイズに合わせて調整してくださいね!
抽出
次は抽出です。対象を抽出するために、特定の明るさなどの値を指定する2値化という処理を使います。
Image Jでの2値化方法です。
今回は明るさ(輝度値)で2値化をするので、カラー画像の場合は、
メニューバーのImage→Type→8-bitでグレー画像にしましょう!
① 2値化コマンドの選択
メニューバーのImage→Adjust→Thresholdから2値化の設定をします。
今回使用している画像は先にモノクロ画像化してあります。
② 2値化パラメータの調整
2つのスライダーを調整して抽出するパラメータを調整します。
2値化では輝度という明るさで抽出します。輝度は0~255の範囲で0に近いほど暗く(黒)、255に近いほど明るく(白)になります。
今回抽出したい粒子は黒っぽいので、下限を0、上限を70として、輝度値が0~70のものを抽出しています。
上手く調整できない場合は、抽出する箇所が赤く塗りつぶされるように上下限を設定してみてください!
③ バイナリ画像に変換
パラメータ調整ができたら、[Apply]ボタンを押して、バイナリ画像に変換します。
この変換をしておかないと「後処理」ができないので、後処理を行う場合は必ず変換しましょう!
後処理
後処理では、モフォロジーという処理がメジャーです。
モフォロジーとは2値化領域の整形をする処理で、2値化が上手くいかない時に助けてくれる処理なので、
ぜひ覚えておきましょう!
ImageJでのモフォロジー処理は、メニューバーのProcess→Binaryから選択できます。
色々あるモフォロジーですが、その中でもよく使う・知っておくと便利なものを紹介します!
よく使うモフォロジー
・Erode(収縮):2値領域を1画素分膨らませる処理
・Dilate(膨張):2値領域を1画素分縮める処理
・Open(オープニング):2値領域の大きさをあまり変えずに切り離す処理
・Close(クロージング):2値領域の大きさをあまり変えずに繋げる処理
特にオープニングとクロージングの2つは頻繁に使用します!覚えておきましょう!
この4つの処理について詳しく知りたい方は、ぜひこの記事を読んでみてください。
■■モフォロジー処理の詳しい説明を見るにはここをクリック■■
知っておくと便利なモフォロジー
・Fill Holes(穴埋め):2値領域で囲まれた箇所を埋める処理
・Watershed:くっついている2値領域を分離する処理
粒子が密集しているような画像の時にウォーターシェッドは効果を発揮します!
頭の片隅に置いておきましょう!
測定
抽出、後処理が終わると最後に測定です。
① 測定項目の選択
メニューバーのAnalyze→Set Measurementから測定項目を選択します。
使用する方が多そうなのは、
・Area(面積)
・Mean gray value(平均輝度)
・Center of mass(重心位置)
・Perimeter(周囲長)
・Fit ellipse(長径・短径・角度)
・Fere's diameter(フェレ径)
・Area function(面積率)
あたりかと思います。
②測定
メニューバーのAnalyze→Analyze Particlesから測定を行います。
・Size(um^2):面積で測定対象を絞ることが可能
今回だと、"10-Infinity"としているので面積が10um^2以下の粒子は測定対象外にしています。
・Circularity:円形度で測定対象を絞ることが可能
円形度とはどれだけ円に近いかを示す指標です。0~1で設定可能で、1で真円となります。
今回は0.3~1の範囲で設定しているのでかなり潰れた形をしている粒子は測定対象外となります。
・Show:測定結果の画像での表示方法を選択
OverlayまたはOverlay Maskにすれば画像上に描画できます。
下記3つは、チェックを入れると適用されます。
・Display results:
粒子ごとの測定結果を表示するかの選択
・Exclude on edges:
画像の端に被る粒子は測定対象外にすることが可能
・include holes:
穴が空いている(2値領域で塗りつぶされていない粒子)も測定可能
測定の設定をしてOKを押すとこのように画像へのオーバーレイと粒子ごとの測定結果が表示されます!
あとは測定結果を保存してヒストグラムを作成したり...皆さんのお好みの方法で結果を分析してみてください!
画像解析の手順は掴めましたでしょうか?この記事が少しでも皆さんのお役に立てば幸いです。
もっと複雑な解析をする必要がある、大量の画像を自動で解析したい!というようなお悩みをお持ちの方向けにWinROOFシリーズの無料体験版(デモ版)も用意しています。
気になる方は下のリンクからダウンロードしてみてくださいね。
■■デモ版をダウンロードするにはこちらをクリック!■■
また、画像解析でお困りのことがありましたら、気軽にお問合せください。
■■三谷商事ビジュアルシステム部への問い合わせはこちらをクリック!■■
最後まで読んでいただき、ありがとうございました!