13507(from 2004/11/01 to 2009/12/3)+

home imageJ weblog その他

Process Menu〜ファイルメニュー

SmoothSharpenFind edgesEnhance contrastNoiseShadowsBinaryMathFFTFiltersImage calculatorSubtract background Repeat command

Smooth〜滑らかに

アクティブな画像や選択枠をぼやっとさせます。(およそsharpenコマンドの反対の役割)このフィルターは画素の周辺の3x3画素の平均の値でそのピクセルの値を置換します。

Sharpen〜シャープ

画像や選択枠の詳細を強調したり,コントラストを増強したりします。(およそsmoothコマンドの反対の役割)しかし,ノイズも強調されます。このフィルターは,下記の要素のウェイトを各画素の近隣3x3画素に掛けた平均値で置き換えて作業します。

-1-1-1
-112-1
-1-1-1

Find Edges〜エッジを見つける

アクティブな画像上や選択枠内で,ハイライトの鋭利な変化を検出するためにSobel edge detectorを使います。2つの3x3の回旋核(下記に示す)が,水平と垂直の誘導物を生成するために使用されます。最終的な画像は、正方形の和の平方根を使った二つの誘導体と組み合わせることによって生成されます。

121
000
-1-2-1
10-1
20-2
10-1

Enhance Contrast〜コントラストの強調

画像のコントラストをヒストグラム伸展とヒストグラム同等化のどちらかを使うことによって強調します。この二つの方法の詳細に付いてはHypermedia Image Processing Referenceに記述されています。index で"enhancement(強調)"を調べてください。このコマンドはNormalize(正規化)Equalize Histgram(ヒストグラムの平均化)のチェックをしないかぎり,ピクセル値は変わりません。

Saturated Pixcels値は,飽和状態になった画像内のピクセルの数で決まります。この値の増加することで,コントラストが増加します。この値は,ヒストグラムストレッチが意図的に機能しなかったために起こる,小数の境界外にあるピクセルを防ぐために,0より大きくすべきです。

Normalize(正規化)をチェックするとImageJは画像のピクセル値を再計算します。その範囲は,データタイプに対する最大値と等しくなるか,浮動小数点画像の0-1.0になります。最大範囲は8ビット画像に対して0-255,16ビット画像に対して0-65535です。注意することはRGB画像の正規化はサポートしていないことです。

ヒストグラムの平均化を使って画像を強調するためにはEqualize Histgram(ヒストグラムの平均化)をチェックしてください。選択枠を作成して行うと,平均化は,選択枠内のヒストグラムを元に行います。ヒストグラム値の平方根を使う修飾したアルゴリズムを使用します。通常のヒストグラム平均化アルゴリズムを使用する場合はaltキーを押したままにします。"saturated Pixcels"と"Narmalize"のパラメータはヒストグラムの平均化をチェックした時には無視されます。平均化コードはRichard Kirkの貢献によります。

Noise〜ノイズ

画像にノイズを加えたり除いたりするときにこのサブメニューにあるコマンドを使います。より高度な性能が必要なら, www.imagescience.org/meijering/software/randomj/にあるErik MeijeringのRandomJパッケージを購入してください。

Add Noise

画像や選択枠内に不規則なノイズを加えます。ノイズは0と25の標準偏差の中間値を伴うガウス(通常)分布です。

Add More Noise

0と75の標準偏差の中間値を伴うガウス(通常)ノイズを加えます。

Salt and Pepper

画像や選択枠内にピクセルの2.5%を黒いピクセルにに,2.5%を白いピクセルに不規則に置き換えた,Salt & Pepper(塩コショウ)を加えます。注意:8ビット画像でだけ機能します。

Despeckle これはメディアンフィルターです。近隣3x3ピクセルの中間値でそれぞれのピクセルの値を置き換えます。これは時間のかかる作業です。なぜなら,選択枠内の各ピクセルに対して行うからで,近隣3x3ピクセル内の9ピクセルが分類されなければなりません。そして中心のピクセルが中間値(15番目)に置きかえられます。メディアンフィルターはSalt & Pepperノイズを取り除くのに効果的に機能します。

Shadows〜影

このサブメニューにあるコマンドは,コマンド名と直接一致する方向から光があたるように見えるような影効果を作り出します。これらコマンドでは,対象は黒で背景色は白と仮定しています。

Binary〜バイナリ

このサブメニューは,バイナリー画像(白黒)を処理するコマンドが含まれています。そのコマンドのいくつか(Erode(侵食), Dilate(拡張/つまり太字?) Open(枠線無し) and Close(枠線あり))は,連続的な調子の画像に処理します。

Threshold(閾) グレースケール画像を白黒画像や8原色のカラー画像に変換します。閾値レベルは現在の選択枠でのヒストグラムの分析値によって決定されます。もしくは,選択枠が無い場合は画像全体のそれになります。

Erode(侵食) 3x3隣接ピクセルをその最小値(明値)でそれぞれのピクセルを置き換えます。バイナリー画像では,黒色対象物の縁から,ピクセルを除去します。グレースケールやカラーの画像からは,背景色よりもより暗い部分を減らします。

Dilate(拡張) 隣接3x3ピクセルをその最大値(暗値)にそれぞれのピクセルを置き換えます。バイナリー画像では,黒色対象物の縁にピックセルを追加します。グレースケールやカラー画像の場合は,背景色よりもよりくらい部分を増やします。

Open(開放) 拡張処理の後で侵食処理を行います。バイナリー画像では,対象はなめらかにし、単離した画像をのぞきます。

Close(閉鎖) 侵食処理をした後で,拡張処理を行います。バイナリー画像の場合は,対象は滑らかになって小さな穴は塗りつぶされます。

Set Iterations(反復設定)... 侵食,拡張,開放,閉鎖を行なう回数を決められます。通常は1回です。

Outline バイナリー画像において,黒色対象物の外側を1ピクセルだけ幅広くします。

Skeletonize バイナリー画像において対象の縁からその骨格が単一の画素になるまで,画素を繰り返し除きます。対象は黒で背景色は白と仮定されています。

Distance Map(距離地図) Eucilidian(Eucilidean) distance map(EDM)ユークリッド距離マップを作成します。バイナリー画像に置けるそれぞれの前景(黒色)ピクセルは背景色(白色)ピクセル煮最も近い点から,ピクセル距離の等しいグレー値に置き換えます。

Ultimate Points(最終的な点) EDMの最終的な侵食点(UEPs)を作成します。入力にはバイナリー画像が要求されます。UEPsは細分化によって分けられた粒子を中心に表示されます。UEPのグレー値は粒子と一致する円に記された半径と等しいです。注意することはEDMは誘導された誤差によるノイズが少ないので滑らかなになるが,UEPのグレー値は少し低くなる。換言すると,それは見積もられる粒径が少し減少する。

Watershed(v1.31b or later) Watershed細分化は別々の粒子が触れている部分を自動的に切ったり,分けたりする方法です。そのためには白の背景色で黒の粒子を含むバイナリー画像が必要です。はそれははじめにユークリッド距離地図(EDM)を計算し,最終的な侵食点(UEP)を見つけます。そしてそれは各UEP(EDMの極大または頂点)を可能な限り,粒子の縁が到達するまで,もしくは他のUEP(成長している)の領域の縁に到着するまで拡張します。Watershed細分化は滑らかな凸面オブジェクトに対しては良好に働きますが,重なりすぎているものにはそうではありません。

Edit/Opition/Miscellaneousでデバッグが可能で,WatershedコマンドはどのようにWatershedアルゴリズムが働くのか示すようなアニメーションを作成します。ここにその例が提供されています。

Math〜数学的計算

このサブメニューにあるコマンド(subtract,Multiplayなど)は選択枠内やアクティブな画像における各画素に対して一定の値を加えます。結果値が画像のデータ形式の規定範囲を越え/下回った時には,その値を最大値/最小値に再設定します。スタックを伴う場合は,選択枠は無視されます。そして,スタック内の全てのスライスにその操作が適用されます。

Add... 画像に一定値を加算します。8bit画像では,255以上の結果値は255にセットされます。記号化された16bit画像では,65535以上の結果値は65535に設定されます。

Subtract... 画像から一定の値を減算します。8bitと16bit画像では,0以下の結果値は0に設定されます。

Multiply... 画像を指定された実数定数で乗算します。8bit画像では,255以上の結果値は255に設定されます。記号化された16bit画像では,65535以上の結果値は65535に設定されます。

Dvide... 画像を指定された実数定数で除算します。0による除算を試みた場合は,無視されます。

AND... 画像および指定された2進法の定数のビット的なAND演算を行います。

OR... 画像および指定された2進法の定数のビット的なOR演算を行います。

XOR... 画像および指定された2進法の定数のビット的なXOR演算を行います。

Min... 指定された定数よりも小さい,画像内の画素を定数で置き換えます。

Max... 指定された定数よりも大きい,画像内の画素を定数で置き換えます。

Gamma... 画像または選択枠内のそれぞれの画素(p)に対して,関数 f(p) = (p/255)^gamma*255 を適用します。そこは 0.1 <= gamma <= 5.0.となります。RGB画像に対しては,この機能は3カラーチャンネル全てに対して行われます。16bit画像に対しては,画像の最大値と最小値は,255の代わりにスケールとして使われます。

Log... 8bitが像に対して,画像または選択枠内のそれぞれの画素(p)に対して,関数 f(p) = log(p) * 255/log(255) が適用されます。RGB画像に対しては,この機能は3カラーチャンネル全てに対して行われます。16bit画像に対しては,画像の最大値と最小値は,255の代わりにスケールとして使われます。浮動小数点画像では,スケーリングは行われません。画像のlog10(常用対数)を計算するために,この捜査の結果を0.4343 (1/log(10)) で乗算します。

Reciprocal... アクティブな画像や選択枠の逆数を生成します。32bitの浮動小数点画像でだけ機能します。

NaN Background... 32ビットの浮動小数点画像の中でNaN(数でない)値に閾値化されていない画素を設定します。浮動小数点画像のために、Image/Adjust Thresholdの中にある"適用する"オプションは,このコマンドを実行します。Float.NaN (0f/0f), Float.POSITIVE_INFINITY (1f/0f), Float.NEGATIVE_INFINITY (-1f/0f)の値を持つ画素は32ビットの浮動小数点画像上の測定を行なう場合,無視されます。

Abs... アクティブな画像や選択枠の絶対値を生成します。32ビット浮動小数点画像でしか機能しません。

FFT〜FFT

このサブメニューニあるコマンドは,周波数領域の表示や加工,処理をサポートします。それらはNIHImageの副産物のImageFFTの作者であるArlo Reevesの貢献による2D高速ハートレー変換(2D Fast Hartley Transform;FHT)の実行に基づいています。

FFT フーリエ変換の計算とパワースペクトルの表示をします。周波数領域の画像はパワースペクトルを表示した8-bit画像に附属した32-bit浮動小数点FHTとして保持されます。Inverse FFTのような,このサブメニューにあるコマンドは32-bitFHT上で操作され,8-bitパワースペクトル上では操作しません。ImageJのほかの全てのコマンドはパワースペクトルだけを見ることができます。

もしマウスがアクティブな周波数領域ウィンドウ(FFT)上に差し掛かったら,その位置は曲座標で表示されます。角度は,半径がピクセル/サイクル(p/c)で表示されている間は,度数で表示されます。ImageJ1.33iか,それ以降で,もし,画像の空間縮尺が

Analyze/Set Scaleで定義されているなら,半径は[unit]/サイクル(例:mm/c)で表示されます。が提供されています。

Inverse FFT 逆フーリエ変換を計算します。変換された画像(周波数領域)上で,局所的なフィルターやマスクができます。そして,選択された周波数だけを含む画像や選択された周波数だけを抑制したような画像を作るために逆変換できます。ImageJの選択枠ツールと塗りつぶし(fill)/消去(clear)コマンドを使って,変換された画像のマスク部分を白と黒で描きます。黒色領域(画素値=0)は,一致する周波数をフィルター(除去)し,白色領域(画素値=255)は,一致する周波数を通します。しかし,同じ逆変換画像の間では,フィルター(除去)と透過の両方は,できません。

レーザースキャニングした共焦点顕微鏡によって作られた画像からノイズをどのように除くかということを例として示した別のがあります。

Redisplay Power Spectrum パワースペクトルを周波数領域(32-bitFHT)から再計算します。このコマンドは,もし8-bitパワースペクトル画像を加工してめちゃくちゃにしても,最初からやり直すことができます。

Bandpass Fillter これはJoachim WalterのFFTフィルタープラグインのバージョンに組み込まれています。

Custom Filter このコマンドは,フィルターとしてユーザーが提供する画像を使って,アクティブなフーリエ空間フィルタリングを行います。例として,FFTCustomFilterDemoFFTRemoveStreaksマクロを見てください。

Filters〜フィルター

このサブメニューは,雑多なフィルターを含んでいて.プラグインフィルターは,Plugins/Utilities/Install Pluginコマンドでインストールします。更なる情報は,Hypermedia Image Processingのリファレンスに言及します。indexをクリックして,回旋(convolution),ガウス(Gaussian),中間(median),平均(mean),侵食(erode),拡張(dilate),不鮮明(unsharp)のキーワードを入力して探してください。

Convolve... テキスト領域に入力された核を使った空間的回旋を行います。核は中心が元となる画素と一致して,他の要素は近隣の画素と一致するような行列です。効果を受ける目的の画素は,それぞれの元となる画素が,それと一致する核の係数で乗算され,その結果が加算されます。核のサイズの任意の制限はありません。しかし、それは二乗かもしれないし、奇数幅を持っているかも知れません。

テキストエリア内の列はすべて同数の係数でなければなりませんし,キャリッジリターンで終わらなければなりません。そして,係数は一つかそれ以上の空白で区切らなければなりません。カーネルはキーボードショートカットのctrl-vを使ってテキストエリアに貼り付けることができます。標準化カーネルはそれぞれの係数を係数の合計で除算することによって生じます。それは,画像の明るさを保ちます。

カーネルの表示は"メキシカンハット"と呼ばれる9×9です。それは,一回の操作でスムーズ化と鮮明化の両方の検出を行います。カーネルは,Image/Andjust/Sizeを使って手ごろなサイズに縮尺され,File/Import/As Text Imageを使って画像として表示されて,テキストファイルに保存されることに注意してください(ショートカットキー,ctrl-cを使ったコピーとctrl-vを使ったペースト)。そして,表面プロットプラグインを使ってプロットされます。

Guassian Blur... ガウス(bell-shaped)カーネルである,平方を使って回旋させることによって現在の画像を滑らかにします。カーネルの幅は画素あたり,2x半径+1です。ここでの半径はダイアログボックスに入力された値です。

Median... アクティブな画像におけるノイズを,近隣画素値の中間値を持つピクセルで置き換えて,減少させます。

Mean... 近隣画素値の平均値を持つ画素で置き換えて,現在の画像を滑らかにします。近隣の範囲はダイアログボックス内に入力された半径の値から特定します。

Minimum... このフィルターは,画像がその近隣値の中で,最も小さい画素値を持つ画素で置き換えてグレースケールの浸食を表現します。

Maximum... このフィルターは,画像がその近隣値の中で,最も大きい画素値を持つ画素で置き換えてグレースケールの拡張を表現します。

Unsharp Mask... 元画像から画像(アンシャープマスク)のぼかされたバージョンを減算することにより、端を鋭くし強調します。アンシャープマスクは,ガウス関数によってぼかした元画像と"マスクウェイト(重さ)"パラメーターを乗算することによって作成されます。コントラストを増加するために,ガウスぼかし半径を増加させてください。そして,追加したエッジを強調するために,"マスクウェイト(重さ)"値を増やしてください。

Variance... 近隣と一致しない画素を持つ画素で置き換えて,エッジを強調表示します。

Show Circular Masks... メディアのものによって使用される循環的なマスクの例を含んでいるスタックを生成する、中間値,平均値,最小値,最大値と様々な近隣サイズに対する異なるフィルタを使った円形のマスクの例を含むスタックを作成します。

Image Calculator...〜画像計算

ポップ・アップ・メニューから選ばれた2つのイメージ間の算術および論理演算を実行します。Image1あるいはImage1およびImage2の両方はスタックになります。両方がスタックである場合,それらは同数のスライスを持っているはずです。Image1とImage2は同じデータ・タイプであるかも知れないし,同じサイズである必要はありません。

Operationのポップアップメニューから,12のオペレーターの内の1つを選ぶことができます。Create New WIndowをチェックすると,新しいイメージか,スタックが結果を保持するために作成されます。そうでなければ,操作の結果は,Image1のうちのいくらかあるいはすべてが交換されます。32ビット(浮動小数点)の画像で,0による除算に起因する画素は、できるだけ大きな値(3.4e38)にセットされます。この値はEdit/Options/Miscellaneous/Divide by Zero Valueで再定義することができます。

Addimg1 = img1 + img2
Subtractimg1 = img1 - img2
Multiplyimg1 = img1 x img2
Divideimg1 = img1 ÷ img2
ANDimg1 = img1 AND img2
ORimg1 = img1 OR img2
XORimg1 = img1 XOR img2
Minimg1 = min (img1,img2)
Maximg1 = max (img1,img2)
Averageimg1 = (img1+img2) / 2
Differenceimg1 = | img1 - img2 |
Copyimg1 = img2

これらの例において,元と結果は,0値が白色なので,LUTが逆になってしまいます。非逆LUTを持つ画像上で操作してください。そして,RGB画像では,同じ結果を作成することは恐らくできないでしょう。

Subtract Background...〜背景減算

ゲルやほ化の画像から連続的な背景色がスムーズに除去されます。Stanley Sternbergの記事"Biomedical Image Processing",IEEE Computer,January, 1983によってイメージされたローリングボールアルゴリズムを使っています。the University of Michigan Mental Health Research InstituteのMichael Castle and Janice Kellerによって書かれたNIH Imageのパスカルコードを元にしています。ローリングボールラジアスは少なくとも背景の部分ではない画像内にある最大のオブジェクトの半径と同じ位になるだろう。

Repeat Command〜コマンドを繰り返す

前出のコマンドを繰り返します。UndoとOpenのコマンドは無視されます。ショートカットは,shift-Rです。

09/12/03 加筆修正