画像解析ソフトの定番 ImageJ のまとめ

前ページへ | 目次 | 次ページへ
(このページのオリジナルページ:Process Menu


Smooth(スムージング)

アクティブな画像(または選択範囲)をぼかす(blur)。このフィルターは各ピクセルを、その近傍 3x3 の平均値で置き換える。

Sharpen(シャープネス)

画像(や選択範囲)のコントラストを増大させて細部を強調するが、ノイズも強調されるおそれがある。このフィルターは下に示した重みづけの因子に従い、各ピクセルを周囲 3x3 の重み付けした平均値で置き換える。
-1 -1 -1
-1 12 -1
-1 -1 -1

Find Edges(境界の検出)

Sobel edge detector(ゾーベル・オペレーター;ゾーベルの輪郭検出器)を用いて、アクティブな画像(または選択範囲)内にある急激な輝度変化を強調する。下に示した2つの 3x3 convolution kernel(コンボリューション・カーネル;畳み込みフィルタ)を用いて、垂直および水平導関数(輝度の変化率)を生成する。最終的な画像は、2つの導関数から、その平方和の平方根で作成される。
 1  2  1  1  0 -1
 0  0  0  2  0 -2
-1 -2 -1  1  0 -1

Find Maxima(極大点の検出)...

画像中の局所的な濃度のピーク(=極大点)を決定する。このコマンドにより、もとの画像と同サイズのバイナリー画像(マスク画像のような画像)が作成され、そこに極大点がマークされる(または、各極大点が「セグメント化された粒子(segmented particle)」としてマークされる)。Editメニュー>Options>Conversions の設定により、RGB 画像での輝度の極大点の計算時に、RGBの3色の明るさを重みづけを加味して平均した値を用いるか、または重みづけなしで平均した値を用いるかを設定できる。このコマンドは Michael Schmid の貢献により作製されたプラグインに基づいている。



ダイアログボックスには下のオプションが表示される:
  • "Noise Tolerance"(ノイズ耐量) - 極大点の値が周囲よりもこの値の分以上高くない場合、その極大点は無視される(キャリブレーションされた画像では、キャリブレーションされた輝度の単位で数値を指定する)。別の言い方では、「(極大点の値)−(ノイズ耐量)」に閾値が設定されており、極大点の周囲に隣接する部位でこの値が閾値よりも大きい場合に分析対象となる。極大点として認定されるには、このエリア内に極大点の値よりも高い値を示す点があってはならず、またこのエリア内には極大点はひとつだけが認められる。
  • "Output Type"(出力形式)は:
    • "Single Points"(1点) - 極大点ごとに1点のみを結果として出力する
    • "Maxima Within Tolerance" (ノイズ耐量範囲内の極大点)- それぞれの極大点ごとに "Noise Tolerance"(ノイズ耐量)を超える点をすべて結果として出力する
    • "Segmented Particles"(セグメント化された粒子) - それぞれの極大点ごとに「粒子」に区分されると仮定し、画像をエリアに区分する。このときの方法は、画像内の輝度値に watershed(分水嶺)アルゴリズムを適用する(一方、Processメニュー>Binary>Watershed では、 Euclidian distance map(ユークリッド・ディスタンス・マップ)を使用する)。
    • "Display Point selection"(点を選択して表示) - 各極大点ごとに1つの点を、全体では多数の点を同時に選択した選択範囲を表示する。
    • "Count"(計数) - Results ウィンドウ内の極大点の数を表示する。
  • "Exclude Edge Maxima"(境界の極大点を除外) - 極大点を取り囲むノイズ耐量エリアが画像の縁(選択範囲の縁は含まない)に接している場合、その極大点を除外する。
  • "Light Background"(明るい背景) - 画像のバックグラウンドがそれと区別したい対象よりも明るい画像の場合にこれをチェックする。上に挙げた細胞のコロニー(Cell Colony)の画像など。
  • "Above Lower Threshold"(低い側の閾値以上の場合のみ) - (このオプションは画像が閾値設定されているときだけ表示される。) 低い側の閾値を越える極大点のみを検出する。画像の高い側の閾値は無視される。"Output Type" として "Segmented Particles" が選択されているときは、低い側の閾値未満の領域はバックグラウンドとみなされる。



出力される画像は二値化(バイナリ)画像で、対象(前面)の輝度値が255、バックグラウンドが0である。Process メニュー>Binary>Options で "Black Background"(バックグラウンドが黒)オプションを使っているかによって、反転された LUT か通常の LUT が用いられる。出力ウィンドウの粒子の数は、"Analyze Particles"(粒子解析)で得られる粒子数と同様に、"Output Type" の選択には依存しない。注意点は、"Exclude Edge Maxima" が選択されていると、通常 "Segmented Particles" で得られる「粒子」は境界に接することになること。"Exclude Edge Maxima" は極大点に対して適用され、粒子に対しては適用されない。

Find Maxima はスタックでは動作しないが、FindStackMaxima マクロはスタック内の全画像で動作し、出力された画像を含む、もうひとつ新たなスタックが生成される。FindMaximaRoiManager マクロでは、 Find Maxima により検出された粒子がどのように ROI Manager に加えられるかがわかるようになっている。

Enhance Contrast(コントラスト強調)

画像のコントラストを強調する。方法はヒストグラムの伸張(histogram stretching)か、ヒストグラムの均等化(histogram equalization)である。どちらの方法も Hypermedia Image Processing Reference に詳細が記されている。目次で "enhancement" (強調)を検索すること。このコマンドでは、Normalize(標準化)か、または Histogram Equalize(ヒストグラムの均等化)がチェックされていない限りはピクセル値は変更されない。



Saturated Pixels (飽和ピクセル)の値は、画像中で飽和するのを許容するピクセル数を決める。この値を増やすとコントラストが増大する。この値はゼロよりも大きい値にする;これは画像中に、かけ離れた値を占めるピクセルが少しでもあった際に、コントラスト伸張が思ったような結果にならないのを防ぐためである。

Normalize (標準化)がチェックされていると、ImageJ は画像のピクセル値を再計算し、ピクセル値の分布幅がそのデータ型の最大幅になるように、あるいは浮動小数点の画像では 0〜1.0 になるようにする。8ビット画像の最大幅は 0〜255で、16ビット画像では 0〜65535 である。注意点は、RGB画像の標準化はサポートされていないこと。

Equalize Histogram (ヒストグラムを均等化する)をチェックすると、ヒストグラム均等化によって画像を強調する。選択範囲があると、選択範囲のヒストグラムをもとに均等化が行われる。均等化には、ヒストグラム値の平方根を用いる修正されたアルゴリズムが使われる。[ALT]キーを押しながらコマンドを選ぶと、標準的なヒストグラム均等化を用いる。Equalize Histogram がチェックされると、"Saturated Pixels"(飽和ピクセル)と "Normalize" (標準化)パラメータがチェックされていても無視される。均等化のプログラムは Richard Kirk により提供された。

Noise (ノイズ)サブメニュー

画像にノイズを加えたり除いたりするには、このサブメニューのコマンドを使う。より発展的なことがしたいときは、Erik Meijering による RandomJ パッケージ(Binomial 2項分布, Exponential 指数関数的, Gamma ガンマ, Gaussian ガウス分布, Poisson ポアソン分布, Uniform 一様分布 が可能)を www.imagescience.org/meijering/software/randomj/ でチェックすること。


Add Noise (ノイズを加える)
画像または選択範囲にランダムなノイズを加える。ノイズはガウス分布(正規分布)を示し、平均は0、標準偏差は25である。
Add More Noise (より多くのノイズを加える)
ガウスのノイズ(平均0、標準偏差75)を加える。
Salt and Pepper (ごま塩ノイズ)
画像や選択範囲にごま塩ノイズを加える。これは、全ピクセルの うち、ランダムな 2.5%のピクセルを黒いピクセルに、2.5%のピクセルを白いピクセルに置き換える。注意:このコマンドは8ビット画像でのみはたらく。
Despeckle (ノイズ除去;しみ抜き)
これはメディアン(中央値)フィルタである。このフィルタでは、全ピクセルがそのピクセルの近傍3×3ピクセルの中央値に置き換えられる。この操作には時間がかかる。なぜなら選択範囲の各ピクセルごとに、ピクセル値を近傍3×3の9ピクセルを(ピクセル値で)ソートして得られる中央値(5番目の値)に置き換えていく必要があるから。メディアン・フィルタはごま塩ノイズを除去するのが得意である。
Remove Outliers (外れ値の除去)
あるピクセルの値がその周囲の中央値から一定値(Threshold 閾値)以上離れているとき、その中央値で置き換える。CCDの画像の「ホットピクセル」や「デッドピクセル」を補正するときなどに役立つ。



Radius(半径)は、中央値を計算する領域の範囲(非キャリブレーション画像ではピクセル単位)を指定する。Radius がどの領域に相当するのかを確認するには Process>Filters>Show Circular Masks を使う。Threshold(閾値)は、ピクセル値が中央値からどの程度離れると値を置き換えるかを 生データの単位(キャリブレーションする前の値)で指定する。Which Outliers (どちらの外れ値)では、周囲(中央値)に比べて明るすぎ、または暗すぎのどちらを置き換えるかを指定する。

Remove NaNs(非数の除去)
このフィルターは、32ビット(浮動小数点)の画像において、NaN (Not-a-Number;非数)のピクセルを、カーネル(核)の領域内でその周囲の中央値に置き換える。ただし、非数のエリアが、カーネルのサイズよりも大きい場合は除去されない。



Radius は、中央値を計算するのに使う円形のカーネル(核)の面積を決める。NaNs マクロは、非数がどのように形成され、測定され、除去されるのかを示している。注意点は、ImageJ のフィルターには Gaussian Blur(ガウスのぼかし)、Mean(平均値)Variance (分散)などのように、NaNがあるとその周囲のピクセルもみな NaN に変えてしまうものがあること。他のフィルターでも、NaN のピクセルの位置では、不正な結果が得られる可能性がある。

Shadows (シャドウ)サブメニュー

このサブメニューのコマンドは、コマンド名に対応する方向から光があたったようなシャドウ効果を生成する。コマンドは Convolve3x3 という ImageJの3×3のコンボリューション(畳み込み)関数を使う。2つのコンボリューション・カーネルが図に示されている。Shadows Demo では Convolve3x3 のスピードのデモのために、8つすべてのカーネルを使っている。


Binary(二値化)サブメニュー

このサブメニューには、二値化(バイナリー;白黒の)画像を作製し処理するためのコマンドが含まれる。ここでは対象物が黒、背景が白と想定されている:そうでない場合は、Processメニュー>Binary>Options にある "Black Background"(背景を黒に)をチェックする。


Make Binary (二値化;バイナリー画像の作製)
画像を白黒に変換する。閾値のレベルは、そのときの選択範囲(または、どこも選択されていなければ画像全体)のヒストグラムが分析されて決定される。閾値を設定するためのアルゴリズムについては、質問と回答集 に記載されている。もし、Imageメニュー>Adjust>Threshold ツールで閾値が設定されていれば、ダイアログがポップアップし、どの部分を前景色、どの部分を背景色にするかを指定でき、また前景色を白で背景色を黒にするかどうか確認できる。

スタックの場合、スタック内のすべての画像が二値化されるが、そのときの閾値は、現在表示されているスライスで計算された閾値が使われる。スタックを二値化する際、スライスごとに閾値を計算して使用したいときは、ConvertStackToBinary マクロを使う。MakeSliceBinary マクロでは、スタックの現在のスライスを二値化したあと、キーを押すと次のスライスに進む。
Convert to Mask(マスクに変換)
画像を白黒に変換する。もし閾値がセットされていたら、その閾値を使い、そうでない場合はヒストグラムを解析して、閾値を計算する。マスクは反転したLUT(白が0、黒が255)をもっている(Processメニュー>Binary>Options のダイアログボックスで、"Black Background" が選ばれているとき以外)。
Erode (浸食;エロージョン)
黒い物体の境界部からピクセルを除外する。グレイスケールでエロージョンを行うには、Processメニュー>Filters>Minimum を使う。
Dilate(膨張;ダイレーション)
黒い物体の境界部の周囲にピクセルを加える。グレイスケールでダイレーションを行うには、Processメニュー>Filters>Maximum を使う。
Open(開放;オープン)
まずエロージョンを行ない、次にダイレーションを行う。これにより、対象物の境界が平滑になり、孤立したピクセルが除去される。
Close(閉鎖;クローズ)
まずダイレーションを行ない、次にエロージョンを行う。これにより対象物が平滑になり、小さな穴が埋められる。
Options(オプション)...
二値化サブメニューのコマンドで使われる幾つかの設定を変えるダイアログボックスが表示される。



Iterations(反復)は、エロージョン、ダイレーション、オープン、クローズなどの実行回数を指定する。

Count (計数)は、エロージョンのときは、あるピクセルの周囲に背景色のピクセルが何個隣接しているときにそのピクセルを除外するか、ダイレーションのときは、あるピクセルの周囲に何個の前景色のピクセルが隣接しているときにそのピクセルを加えるかを指定する。

画像が黒い背景に白い物体であれば、Black background をチェックする。プラグインではこのオプションを下のように設定できる。
 Prefs.blackBackground = b;
マクロでは下のように設定する。
 setOption("black background", b);
ただし、b は 'true'(真)または 'false'(偽)である。

Pad edges when eroding (エロージョンで画像の縁を保持)がチェックされていると、Processメニュー>Binary>Erode(エロージョン) で画像の縁はエロージョンを受けない。この設定はProcessメニュー>Binary>Close でも有効である。これがチェックされていないと、Close では 縁からもエロージョンを受ける。

EDM output (EDM出力)は、Processメニュー>Binary>Distance Map(距離地図)、Ultimate Points(極限点)、Voronoi(ボロノイ) コマンドでの出力方式を決める。"Overwrite" (上書き)に設定すると、入力された画像に8ビット出力画像が上書きされる。"8-bit"、"16-bit"、"32-bit" に設定すると別に出力画像が作製される。32-bit 出力画像は、浮動小数点の(サプピクセル;ピクセルよりも細かい)距離解像度をもっている。
Outline(縁取り、アウトライン)
二値化画像内の対象物に、幅1ピクセルの縁取り(アウトライン)を作製する。
Skeletonize(骨格化、スケルトナイズ)
二値化した画像で、物体の境界からピクセルを繰り返し除外していき、最後に幅1ピクセルの線だけの「骨格」(スケルトン、skeleton)になるまでにする。
Distance Map(距離地図、ディスタンス・マップ)
ユークリッド距離地図(EDM、Euclidian distance map)を作成する。二値化した画像で、前景色の各ピクセルごとに、そのピクセル値を、最も近い背景のピクセルからの距離に相当するグレイ値に置き換える。
Ultimate Points(極限点、アルティメット・ポイント)
EDM(ユークリッド距離地図)で、極限浸食点(UEP、ultimate eroded points)を作成する。入力画像として二値化した画像が必要。 UEP は、セグメント化により粒子として分離される際の「粒子の中心」を示す。UEP のグレイ値は、その粒子に内接した円の半径に等しい。
Watershed (分水嶺、ウォーターシェッド)
Watershed(分水嶺)のセグメント化は、つながった粒子を自動的に分離、切り離すのに使える。まず EDM (ユークリッド距離地図)と UEP (極限浸食点)が計算される。次に、各 UEP(EDMのピークまたは極大値) が可能な限りダイレーションされる ー それが粒子の端に到達するか、隣からダイレーションしてきた UEP の境界に到達するまで。Watershed によるセグメント化は、周囲が平滑で、あまり重なりすぎない物体でもっともよく機能する。



Editメニュー>Options>Misc でデバッグをオン(Enable debugging)にすると、Watershed コマンドはアニメーションを作成するので、アルゴリズムがどのように機能するかがわかる。実例もある。
Voronoi(ボロノイ)
2つの最も近い粒子の境界から等距離の点のつくる線で画像を分割する。したがって、ある粒子のボロノイ Voronoi の区画は、(他の粒子より)その粒子に最も近い点すべてを含む。1点からできている粒子の場合、これは ボロノイ分割 Voronoi tessellation(別名 ディリクレ分割 Dirichlet tessellation)である。

出力画像では、Voronoi の区画内のピクセル値は0である。2つの区画の間の分割線のピクセル値は、最も近い粒子までの距離に等しい。これは背景の中心軸変換(medial axis transform)に似ているが、粒子内部の穴の中には、線ができない。出力形式は、Processメニュー>Binary>Options のダイアログボックスで "Overwrite"、"8-bit"、"16-bit"、"32-bit" から選ぶ。


Math (演算)サブメニュー

このサブメニューのコマンドは、アクティブな画像(または選択範囲)の各ピクセルに定数を足したり、引いたり、掛けたり、などをする。結果の数値が、そのデータ型がとりうる値の範囲を外れた(大きすぎ、または小さすぎた)場合、その値はとりうる値の最大値、最小値に再設定される。スタックの場合、"Process Stack?"(スタックを処理しますか?)ダイアログボックスが表示される。このダイアログボックスには、Yes(スタック全体を処理する)、No(現在の画像だけを処理する)、Cancel ボタンがある。
Add(加算)...
画像(または選択範囲)に定数を加える。8ビット画像では、結果が255を越えた場合、255に設定される。16ビット符号小数点画像では、65,535 以上の結果は 65,535 に設定される。
Subtract(減算)...
画像(または選択範囲)から定数を減算する。8ビットや16ビット画像で、計算結果が0より小さい場合、0に設定される。
Multiply(積算)...
画像(または選択範囲)に対し、指定した実数の定数でかけ算する。8ビット画像では、計算結果が255を越えた場合、255に設定される。16ビット画像では、結果が65,535を越えた場合、65,535に設定される。
Divide(除算)...
画像(または選択範囲)を、指定した実数の定数で割り算する。32ビット(浮動小数点)画像以外では、0で割ろうとしても無視される。32ビット画像では0で割った結果は、NaN (0/0)または、無限大になる。
AND(アンド、論理積)...
画像と指定した二値化定数の間でビット演算の積を求める。
OR(オア、論理和)...
画像と指定した二値化定数の間でビット演算の和を求める。
XOR(エックスオア、排他的論理和)...
画像と指定した二値化定数の間でビット演算の排他的論理和を求める。
Min(最小値)...
画像内のピクセル値が指定した定数よりも小さいとき、その定数で置き換える。
Max(最大値)...
画像内のピクセル値が指定した定数よりも大きいとき、その定数で置き換える。
Gamma(ガンマ)...
画像(または選択範囲)の各ピクセルに対し、f(p) = (p/255)^ γ *255 の関数を適用する。ただし、 γ(ガンマ)は、0.1< γ <5.0 である。RGB画像の場合、この関数は3つのチャンネルそれぞれに対して適用される。16ビット画像では、画像のスケーリングに、式中の 255 ではなく、その画像の最大値、最小値が使われる。
Set(セット)...
画像(または選択範囲)を指定した値で置き換える。
Log(対数)...
8ビット画像では、画像(または選択範囲)の各ピクセル(p)に対し、関数 f(p) = log(p) * 255/log(255) を適用する。RGB画像では、3つのカラーチャンネルすべてにこの関数が適用される。16ビット画像では、画像のスケーリングに、式中の 255 ではなく、その画像の最大値、最小値が使われる。浮動小数点の画像では、スケーリングは行われない。画像の log10 を計算するには、この命令の結果に 0.4343 (1/log(10))を掛ける。
Reciprocal(逆数)
アクティブな画像(または選択範囲)の逆数を生成する。32ビット浮動小数点の画像でのみ機能する。
NaN Background(NaN 背景)
32ビット浮動小数点の画像で、閾値未満のピクセルに NaN(非数)を設定する。浮動小数点画像では、Imageメニュー>Adjust Threshold の "Apply" をおこなうと、このコマンドが作動する。32ビット浮動小数点の画像で計測を行う場合、ピクセル値が Float.NaN (0f/0f)、Float.POSITIVE_INFINITY (1f/0f) または Float.NEGATIVE_INFINITY (-1f/0f)のピクセルは無視される。
Abs(絶対値)
アクティブな画像(または選択範囲)の絶対値を生成する。32ビット浮動小数点画像でのみ機能する。
Macro (Expression Evaluator) (マクロ(計算式の確認))
このコマンドでは、ユーザーが指定した式に従って画像の演算がおこなわれる。完全な合成画像を作成したり、実際の画像やスタックでピクセル単位の正確な操作を行ったりすることもできる。MathMacroDemo マクロ(Tiago Ferreira 作)で使用法のデモがある。


FFT(高速フーリエ変換)サブメニュー

このサブメニューのコマンドは、frequency domain(周波数領域、周波数特性)の表示、編集、処理をサポートする。この機能は、NIHImage の 派生ソフト ImageFFT の作者である Arlo Reeves が製作した2次元の高速ハートレー変換(Fast Hartley Transform; FHT)を実装したものがベースになっている。3次元FHTについては、Bob Dougherty によるプラグイン 3D Fast Hartley Transform(3次元高速ハートレー変換)をチェックすること。
FFT(高速フーリエ変換)
フーリエ変換を計算し、パワースペクトラム(power spectrum)を表示する。周波数特性画像は、32ビット浮動小数点のFHTとして保存され、パワースペクトラム表示用の8ビット画像が付加される。このサブメニューのコマンドは、Inverse FFT(逆FFT)のように、8ビットパワースペクトラム上ではなく、32ビットFHT上で動作する。他のすべてのImageJのコマンドはパワースペクトラムを「見る」ことしかできない。

アクティブな周波数特性(FFT)ウィンドウの上にマウスが来ると、その位置が極座標で表示される。角度は度で示され、半径はピクセル/サイクル(p/c)で表示される。画像の空間的なスケールが Analyzeメニュー>Set Scale が定義されているなら、[単位]/サイクル(c)(例:mm/c)で表示される。v1.39b またはそれ以降では、点を選択した際の局座標が Analyzeメニュー>Measure で記録される。実例が利用できる。
Inverse FFT(逆高速フーリエ変換、逆FFT)
逆フーリエ変換を計算する。高速フーリエ変換した(周波数特性の)画像では、スポット状のフィルターをかけたりマスク処理したりできるので、処理後の画像を逆変換すると、選択した周波数成分だけを含む画像や選択した周波数成分を含まない画像を作成できる。ImageJの選択ツールとFill(塗りつぶし)、Clear(消去) コマンドを使うと、変換後の画像の一部をマスクするように、黒や白を描くことができる。黒く塗りつぶす(ピクセル値=0)と、その該当する周波数成分がフィルター(除去)され、白く塗りつぶす(ピクセル値=255)と、該当する周波数成分だけが通過する。ただし、1回の逆変換で同時に除去と通過を同時に行うことはできない。

注意点は、周波数特性画像で、除去されるエリアはゼロで塗りつぶされ、通過するエリアは255で塗りつぶされる必要があること。そうなっているかどうか調べるには、カーソルを塗りつぶしたエリアに重ねてみて、ステータスバーに表示される値が0か255になっているかを調べればよい。

この実例では、画像の低周波数成分を除去(または通過)させるマスクの作製法について図示されている。



中心以外を選択する場合、パワースペクトラムでは同じ空間周波数成分が、中心に対して点対称の位置にも現れる。ImageJ 1.41k またそれ以降のバージョンでは、それらのうちの一方だけを消去したり塗りつぶしたりすればよい。次の例(Arlo Reeves により提供)では、パワースペクトラムの上半分を選択、消去しているが、自動的に下半分にも鏡像反転されて適用されたのが、フィルター処理後の画像のパワースペクトラムを見るとわかる。



この例の画像は、rsb.info.nih.gov/ij/images/abe.tifで利用できる。もうひとつの実例では、共焦点レーザー走査型顕微鏡で作成した画像からノイズを除去する方法が示されている。
Redisplay Power Spectrum パワースペクトラムの再表示
周波数特性画像(32ビットFHT)から、 パワースペクトラムを再計算する。このコマンドを使うと、8ビットパワースペクトラム画像を編集中にミスをした時に最初からやり直せる。
FFT Options...
FFT Options ダイアログボックスを表示する。


  • Display(表示) - チェックボックスがあり、どの画像がFFTコマンドにより作製された画像かを指定する。
    • FFT Window(FFTウインドウ)は、標準の出力である。パワースペクトラムの8ビット画像と実際のデータから構成されるが、ユーザーには実際のデータを見ることはできない。パワースペクトラム画像はログスケールで表示され、見えにくい要素の見やすさが強調されている。実際のデータは逆FFTコマンドで使用できる。
    • Raw Power Spectrum(未処理パワースペクトラム)は、ログスケールにしていないパワースペクトラムのこと。
    • Fast Hartley Transform(高速ハートリー変換)は、コマンドによって使われる内部形式を、フーリエ変換ではなく、ハートリー変換にもとづいて行う。
    • Complex Fourier Transform(複合フーリエ変換)は、FFTの実数部と虚数部に対する2枚のスライスのスタックを使う。
  • Do Forward Transform をチェックすると、FFT Optionsのダイアログ閉じると、ただちに現在の画像が変換される。
Bandpass Filter(バンドパスフィルター)...
このコマンドは Joachim Walter による FFT Filter プラグインの組み込み版である。高い空間周波数成分を除去したり(画像をぼかす)、低空間周波数成分を除去したり(ぼかした画像を差し引いた画像に似る)する。ライン状にスキャンされた画像に現れる、水平方向や垂直方向のすじを抑制することもできる。


  • Filter Large Structures Down to(〜以上の大きな構造をフィルタする) - 画像のゆるやかな明るさの変動(背景)のうち、指定した値よりも大きな明るい(または暗い)部分を抑制する。
  • Filter Small Structures Up to(〜以下の小さな構造をフィルタする) - スムージングの量を決める。画像中で指定したサイズよりも小さい対象を強力に減弱する。注意点は、これらの数字はどちらも実際のカットオフに用いられる空間周波数の半分であること。カットオフは非常にソフトで、バンドパス(通過する空間周波数帯)の中央の空間周波数であってもよほどそれらの数字の差が大きくない限り(例、5倍以上とかそのぐらい)ある程度減弱されてしまう。
  • Suppress Stripes(縞模様を抑制) - 水平方向または垂直方向の縞模様を除去するかどうかを選択する。水平方向の縞模様を除去するのは、オリジナル画像から水平方向にだけぼかしをかけた画像を減算するのに似ている。
  • Tolerance of Direction(方角の耐性) - Suppress Stripes(縞模様を抑制)のためのコマンド。大きい数字を入力すると短い縞や水平方向(または垂直方向)に対して、角度をもった縞模様が除去される。
  • Autoscale After Filtering(フィルター処理後にコントラスト調整) もっとも輝度の低い点を0、輝度の高い点を255になるように調整する(すべての輝度の違いは維持される)。
  • Saturate (飽和)輝度の上限の点を多少飽和させ、見た目のコントラストを改善する。Saturate は、Autoscale がオンの時だけ効果を発揮する。
  • Display Filter(フィルター表示)は、生成されたフィルターを表示する。注意点は、この処理により、オリジナル画像に対するフィルタ処理のUndoが不可能になること。

バンドパスフィルターでは、画像の外周部のアーチファクトを防止するのに空間的アルゴリズムを使用している(フーリエ変換の前に、画像サイズを拡張し、(本来の)画像の周囲に画像の鏡像の一部をコピーして並べる。これにより、画像の外側には急激な画像の変化が起こらない)。
Custom Filter(カスタムフィルター)...
このコマンドでは、ユーザーが準備した画像をフィルターとして用いて、アクティブな画像に対してフーリエ空間フィルタリングを行う。フィルター用の画像は8ビットに変換される。輝度0の値をもつピクセルに対応する空間周波数は遮断され、255の値を持つピクセルに対応する空間周波数は、減弱されずに通過する。注意点は、このフィルター用の画像は画像の中心に対して点対称になっている必要があること、つまり、中心(x=画像の幅/2、y=画像の高さ/2で定義される)の反対側の点は同じ値でなければいけない。そうでないと、アーチファクトが生じる。

FFTCustomFilterDemoFFTRemoveStreaks マクロに、実例がいくつかある。
FD Math(FD演算)..
このコマンドは、2つの画像の相関、畳み込み(コンボリューション)、逆畳み込み(デコンボリューション)を計算する。その方法は、まず画像を周波数ドメインに変換して、複合した乗算または乗算、除算を行ない、その後、結果を空間ドメインに変換する。相関、畳み込み、逆畳み込み、周波数ドメインにおけるこれら3つの命令は、空間ドメインにおける命令と等価である。実例については、 DeconvolutionDemoMotionBlurRemoval マクロを参照。

Filters (フィルター)サブメニュー

このサブメニューには、その他のフィルターや、 Plugins>Utilities>Install Plugin コマンドによってインストールされたプラグインフィルターが含まれる。詳しい情報は、Hypermedia Image Processing Reference (http://www.dai.ed.ac.uk/HIPR2/)を参照。Index をクリックし、convolution(コンボリューション、畳み込み)、Gaussian(ガウスの(ぼかし))、median(メディアン、中央値)、mean(平均)、erode(浸食)、dilate(膨張)、unsharp(アンシャープ、尖鋭化)というようなキーワードを探す。
Convolve(畳み込み、コンボリューション)...
テキストエリアに入力されたカーネルを使い、空間的な畳み込み(コンボリューション)を行う。カーネルとは行列で、その中心の要素がもとのピクセル(ソースピクセル)の位置に対応し、他の要素は周辺のピクセルに対応する。出力されるピクセルは、各ソースピクセルに、カーネルの対応する位置の係数を掛け、それらの結果を足しあわせたもの。必要に応じて、入力画像の周辺に、外周部のピクセルを複製して効果的に拡大する。カーネルのサイズに実質的な限界はないが、正方形であることと幅が奇数であることが必要。



テキストエリアの各行の係数は、同じ個数でなければならない。行の最後には改行を入れ、 各係数の間には1つ以上のスペースを入れる。カーネルを入力するときは、キーボードショートカット(ctrl + v)で貼り付け(ペースト)できる。Normalize Kernel (カーネルの標準化)をチェックすると、各係数は全ての係数の合計値で割り算される。これにより、画像の明るさが変化しなくなる。

上に示したカーネルは、9 x 9 "Mexican Hat"(メキシカン・ハット)。1回の操作でスムージングと境界の検出を行う。注意点は、カーネルは "Save" ボタンをクリックするとテキストファイルとして保存できるが、File>Import>Text Image で画像として表示できる。Image>Adjust>Size を使うと適当なサイズに調節され、 Analyze>Surface Plot を使うと(3次元グラフに)プロットできる。

ConvolutionDemo マクロでは、マクロの中でこのコマンドを使う方法を例示している。
Gaussian Blur(ガウスのぼかし)...
このフィルターは、ガウスの(Gaussian)関数で畳み込みをすることで画像のスムージングを行う。Sigma とは、ガウスの関数の標準偏差シグマのことで、-0.5乗(約61%)に減衰する半径(これは Photoshop と同様だが、ImageJの過去のバージョンとは異なっている。ImageJの過去のバージョンでは、2.5倍大きな数字を入力する必要がある)。

ImageJ の他のすべての畳み込み操作と同様、画像よりも外側のピクセルはもっとも近い画像内のピクセルと同じ値を持つと仮定される。このため、画像の周囲の境界のピクセルは画像内部のピクセルよりもより強い重みづけがされていることになり、外周では、角でないところよりも角がより強い重み付けがなされる。このため、非常に大きなぼかし半径でスムージングをすると、出力画像は外周のピクセル、とくに角のピクセルの影響を強く受ける(極端なケースとして、ぼかし半径が 1e20 の場合には、画像全体が4つの角のピクセルの平均値で置き換えられる)。

速度を上げるには、ぼかし半径が小さいとき以外は、画像の(縦や横の)長さを畳み込みの前に縮小し、後で元の長さに拡大する。
Median(メディアン、中央値)...
アクティブな画像において、各ピクセル値をその近傍のピクセル値の中央値で置き換えることで、画像のノイズを減らす。
Mean(平均)...
現在の画像において、各ピクセル値をその近傍のピクセル値の平均と置き換えてスムージングする。周辺のピクセルの範囲は、ダイアログボックスにその半径を入力して指定する。
Minimum(最小値)...
このフィルターは、グレースケール上の浸食(erosion)を行う。各ピクセルをその近傍のピクセルの最小値で置き換える。
Maximum(最大値)...
このフィルターは、グレースケール上の膨張(dilation)を行う。各ピクセルをその近傍のピクセル値の最大値に置き換える。
Unsharp Mask(アンシャープマスク、尖鋭化)...
アンシャープマスクは、入力画像から同じ画像をぼかしたものを差し引き、大きな(低周波数の)構造が入力画像と比べて同じコントラストになるように画像を調節する。これは、ハイパスフィルターを通した画像を加算してからシャープネスを適用したのと同じ意味である。Radius(半径)は、差し引く画像に適用するガウスのぼかしの標準偏差(ぼかしの半径)である。Mask Weight(マスクの重み)はフィルターの強さを決める。Mask Weight =1 のとき、加算されるハイパスフィルターを通した画像の重みが無限になる。
Variance(分散)...
各ピクセル値をその近傍のピクセル値の分散と置き換えることで、画像内の境界を強調する。
Show Circular Masks(円形のマスクを表示)
MedianMeanMinimumMaximumVariance の各フィルターで使用できる、様々な近傍サイズの円形のマスクのサンプルを含むスタックを生成する。

Image Calculator(画像演算)...

2つの画像をポップアップメニューで指定し、その画像間で、画像の算術演算や論理演算を行う。Image1 または Image1Image2 の両方はスタックでもよい。もしどちらもスタックの場合、スライス数が同じでなければならない。Image1Image2 は、同じデータ型でなければならないが、画像サイズは同じでなくともよい。



操作は、 Operation: (演算)ポップアップメニューで、12個の演算子から1つを選べる。Create New Window(新規ウインドウを作成)をチェックすると、新し画像またはスタックが作製されて結果が保持される。そうでない場合は、演算結果は Image1 の画像に置き換えられる。32-bit Result をチェックすると、指定された演算が行われる前に、元の画像は32ビット浮動小数点に変換される。

32ビット(浮動小数点)画像では、ゼロで除算されたピクセルは Infinity(無限)に、ゼロのピクセルがゼロで除算されると、NaN(Not a Number、非数)にセットされる。ゼロで割られた際の値は、Edit>Options>Misc で再定義できる。
Add(加算)img1 = img1+img2
Subtract(減算)img1 = img1-img2
Multiply(乗算)img1 = img1*img2
Divide(除算)img1 = img1/img2
AND(論理積)img1= img1 AND img2
OR(論理和)img1 = img1 OR img2
XOR(排他的論理和)img1 = img1 XOR img2
Min(最小値)img1 = min(img1,img2)
Max(最大値)img1 = max(img1,img2)
Average(平均)img1 = (img1+img2)/2
Difference(差分)img1 = |img1-img2|
Copy(複製)img1 = img2

下の実例では、原画像と対象画像は反転したLUT(ゼロのピクセルが白)で表示されている。反転していないLUTをもつ画像やRGB画像への演算は、同じ結果にはならない。


Subtract Background(背景の減算)...

ゲルやその他の画像から、なだらかで連続的で背景を除去する。”rolling ball”(転がるボール)アルゴリズム(Stanley Sternberの論文に記載、”Biomedical Image Processing”, IEEE Computer 誌 1983年1月号)に基づいている。画像のピクセル値を高さにした3D の表面を想定し、表面の裏側を転がるボールが背景をつくるのを想像する。現在のアルゴリズム(ver. 1.39f 以降)では、ボールではなく、放物面(パラボロイド)が回転するのを近似して利用している。



Rolling Ball Radius (転がるボールの半径)は、放物面の曲面の直径である。大ざっぱに述べると、8ビット画像やRGB画像では、その値が、少なくとも画像内でもっとも大きな物体の半径以下であれば、その物体は背景の一部には含まれない。値を大きくしても機能するが、画像の背景があまり均一でなくなる可能性がある。16ビットや32ビット画像では、ピクセル値のとる範囲が 0〜255 ではないが、半径はピクセル値の範囲に反比例する。例えば、16ビット画像(0〜65535)での半径として典型的な値は、0.2〜5程度である。

Light Background(明るい背景)オプションでは、背景が明るく対象物が暗い画像を処理できる。

Create Background (背景を作製)オプションでは、出力されるのは背景を減算された画像ではなく、背景そのものとなる。このオプションは(Preview(プレビュー)オプションと合わせると)作製された背景を検討するのに役立つ。Create Background は背景の減算のアルゴリズムを調整したいときにも役立つ。アルゴリズムを調整して、背景を作製する前に、画像を複製してフィルター処理(例えば、背景の「穴」を埋める、など)をしてから、最終的な減算処理は Process>Image Calculator で行う。

背景("rolling the ball")の計算には、画像はほこりなどの外れ値を排除するために最大値フィルター(3x3)を通し、その後ノイズを減らしてスムージング(平均値フィルタ、3x3)される。Disable Smoothing(スムージングしない)オプションでは、背景を作製するのに無修正の画像データが使われる。このオプションは、減算後の画像データが背景よりも小さな値を絶対にとらないようにしたい時に使用する。


Repeat Command(コマンド繰り返し)

一つ前のコマンドを再度行う。Undo (取り消し)コマンド、Open(ファイルを開く)コマンドは無視される。ショートカットは、Shift+R。


Amazon リンク
※ Kindle版(iPad, Android)あり

※ Kindle版(iPad, Android)あり

※ Kindle版(iPad, Android)あり




(このページのオリジナルページ:Process Menu
前ページへ | 目次 | 次ページへ

このページへのコメント

Median(メディアン、中央値)の項目に変換ミスがありました。
お知らせしておきます。
「中央値で御聞けること」⇒「中央値で置き換えること」

1
Posted by 大室 隆司 2019年07月27日(土) 15:06:48 返信数(1) 返信

大室様、ご指摘いただき感謝申し上げます。修正いたしました。

0
Posted by  imagej imagej 2019年07月30日(火) 18:52:59

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます