2017年4月23日 更新

シリーズ6.マクロ言語を使った画像処理の応用編~ノイズ軽減② 空間フィルタ処理~

【記事の目標】 画像を触ったことがない人を対象として、適切な画像解析を施すまでのImageJのマクロ言語を用いた学習過程を示す。

3,205 view お気に入り 0
前回の記事で空間フィルタ処理、カーネルの設計について学習しました。
今回は前回説明しなかった画像の端を含めてフィルタをかけるための手法について学びます。
前回も説明したように3x3のカーネルを作成してフィルタをかける場合は画像の外側の上下左右に1ピクセル増やす必要があります。ImageJでは1ピクセル増やすと増えたピクセルの輝度値が0になっていますがこれでは元の画像よりも輝度値が低くなってしまうため不正確であると考えられます。

そこで、この0になっている輝度値を図のように画像の最も外側のピクセルの輝度値に置き換えることを考えます。
 (3832)

【100x100の画像を例にマクロでみましょう】

 (3834)

Step1.

100x100ピクセルの画像を用意します。
(ここではサンプル画像を100ピクセル×100ピクセルの画像にします。)
100x100の画像

100x100の画像

Step2. 

この画像の輝度値を左上から右下に1ピクセルずつ読み取り配列に保管します。
Intensity=newArray(height*width);//配列を定義

for(y=0;y<height;y++)
{
        for(x=0;x<width;x++)
        {        
                Intensity[i]=getPixel(x,y); 
                i++;
        }        
}
輝度値を読み取るコード

Step3. 

もとの画像の大きさを上下左右1ピクセル分増やします。
ImageJのメニューのImage→Adjust→Convas Sizeをクリックします。

Step4. 

新しい画像ができたら周囲の1ピクセル増やした部分に輝度値を代入していくことを考えます。
このとき橙色で示した四隅は除外し、青で示した①から④の部分に分割してマクロを考えます。
(四隅についてはStep5で説明します)
49 件

関連する記事 こんな記事も人気です♪

ImageJ Macro

ImageJ Macro

ImageJ の Macro と呼ばれる,プログラミング言語についての説明を行っている記事をまとめたものです.
ImageJを使った体積測定

ImageJを使った体積測定

共焦点顕微鏡が普及している現在、簡単にできそうな体積の測定ですが、意外に手こずることがあります。 「面積は簡単だったから体積だって!」という方、読んでみてください。
総括① ImageJマクロ言語による画像処理―画像の基礎から二値化処理まで―

総括① ImageJマクロ言語による画像処理―画像の基礎から二値化処理まで―

多くのライフサイエンスの研究領域では顕微鏡で撮像した画像から輝度値や面積など各種統計量の計測や画像に写っている細胞数や粒子数の計数化などの定量化がImageJを用いて行われています。 ImageJマクロシリーズの記事では、このようなライフサイエンスの研究で実際によく使われる画像処理をマクロ言語で自動化することを目標に学習を進めてきました。本稿では総括①としてImageJのマクロ言語を用いた画像解析の学習シリーズ1~5までで学んだ内容をまとめました。
シリーズ6.マクロ言語を使った画像処理の応用編~ノイズ軽減① 空間フィルタ処理~

シリーズ6.マクロ言語を使った画像処理の応用編~ノイズ軽減① 空間フィルタ処理~

【記事の目標】 画像を触ったことがない人を対象として、適切な画像解析を施すまでのImageJのマクロ言語を用いた学習過程を示す。 今回の記事から応用編としてさらに詳しく画像処理を学んでいきます。最初のテーマはノイズ軽減です。
YoutubeでImageJ  - インストール・セットアップ・プラグイン

YoutubeでImageJ - インストール・セットアップ・プラグイン

Fiji(ImageJにあらかじめ様々なプラグインがインストールされているもの)のインストールの仕方。新しいプラグインのインストールの方法を動画として紹介します。
北村 旭 | 3,333 view

この記事のキーワード

この記事のキュレーター

エルピクセル編集部 エルピクセル編集部