2017年4月23日 更新

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

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

3,360 view お気に入り 0
 (3861)

 (3860)

i=0;
for(y=1;y<101;y++)
{
        setPixel(101, y, Intensity[(100*i)+99]);
        i++;
}
領域③

【領域④】

領域④はy座標は101のままでx座標を1ピクセルずつ増やして座標を読み取り、配列に代入したもとの画像の輝度値を代入していけばよいことになります。
 (3865)

配列をIntensity[i]とすると、画像の輝度値は次のように考えられます。
 (3867)

i=0;
for(x=0;x<101;x++)
{
        setPixel(x, 101, Intensity[(9900+i]);
        i++;
}
領域④

【四隅について】

上記では除外した四隅
(0,0), (0, 101), (101, 0), (101, 101)については次のようになります。
(0,0)の輝度値←Intensity[0]の輝度値
(0, 101)の輝度値←Intensity[9900]の輝度値
(101, 0)の輝度値←Intensity[99]の輝度値
(100,101)の輝度値←Intensity[9999]の輝度値

◆スクリプト

height=getHeight(); //縦のピクセル数を抽出 画像の幅と高さ
width=getWidth(); //横のピクセル数を抽出
Intensity=newArray(height*width);//height, widthともに100
i=0;

run("32-bit");
//まずもとの画像から輝度値を抽出し配列Intensityに代入する。
for(y=0;y<height;y++)
{
        for(x=0;x<width;x++)
        {        
                Intensity[i]=getPixel(x,y);
                i++;
        }        
}


run("Canvas Size...", "width=101 height=100 position=Top-Right zero");
run("Canvas Size...", "width=102 height=100 position=Top-Left zero");
run("Canvas Size...", "width=102 height=101 position=Bottom-Center zero");
run("Canvas Size...", "width=102 height=102 position=Bottom-Right zero");
//102×102の画像を作成

i=0; //領域①
for(y=1;y<101;y++)
{
        setPixel(0,y,Intensity[100*i]);
        i++;
}

i=0;//領域②
for(x=1;x<101;x++)
{
        setPixel(x,0,Intensity[i]);
        i++;
}


i=0;//領域③
for(y=1;y<101;y++)
{
        setPixel(101, y, Intensity[(100*i)+99]);
        i++;
}

i=0;//領域④
for(x=0;x<101;x++)
{
        setPixel(x, 101, Intensity[(9900+i]);
        i++;
}

//四隅の輝度値
setPixel(0,0,Intensity[0]);
setPixel(0,101,Intensity[9900]);
setPixel(101,0,Intensity[99]);
setPixel(101,101,Intensity[9999]);


N=3;//カーネルの大きさ
intensity=0;

run("32-bit");
for(y=1;y<101;y++){
        for(x=1; x<101;x++){ 
                        
intensity=(getPixel(x-1,y-1)
+getPixel(x,y-1)
+getPixel(x+1,y)
+getPixel(x-1,y)
+getPixel(x,y)
+getPixel(x+1,y)
+getPixel(x+1,y+1)
+getPixel(x, y+1)
+getPixel(x+1, y+1))
/(N*N);                
                        setPixel (x,y, intensity); 
                        
                }
        }
ノイズ軽減のスクリプト
 (3879)

フィルタ処理前

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,428 view

この記事のキーワード

この記事のキュレーター

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