2012-05-09 10 views
1

私のアルゴリズムの特徴抽出ステップは、「3D」画像にいくつかのフィルタを適用し、フィルタリングされたピクセルの値を画像の元のピクセルの特徴として使用します。MATLABの「選択された」ピクセルに画像フィルタリング技術を適用する

私の問題は、すべての画像ではなく、ピクセルの小さなサブセット(しきい値処理されたピクセル)の機能が必要なことです。一部のピクセルだけではなく、すべての画像をフィルタリングするのに時間がかかります。

私の質問は、画像の選択されたピクセルのみをフィルタリングする方法です。この目的のためのMATLAB関数はありますか?(私はimfilterは使用できません)

ありがとうございます。ここ

+0

あなたは、フィルタを記述することはできますか?どのようにあなたを助けるかを理解しやすくなります。 – twerdster

+0

フィルターも3Dですか、それともスライスで実行していますか? –

+0

フィルタは、各ピクセルのヘッセ行列の固有値です。各ヘッセ行列エントリ(例えば、Ixy、Ixx、Iyz、...)について、まず、ガウスフィルタを使用して画像をフィルタリングし、次に所望の方向(x、yまたはz)の画像勾配を計算する。 – Lily

答えて

2

画像に閾値を適用し、MATLABで高速な行列演算である:

% let's assume i is your image (matrix) 
thresh = 60; % set the threshold for pixel values 
i = uint16(i > thresh) .* i; % adjust uint16 to your: class(i) 

これは閾値以下である0に全ての画素をセットします。
フィルタを後で小さな領域に適用する場合は、画像のどの列と行にゼロより大きい値が含まれているかを確認し、それに応じて画像を切り抜くか、またはroipolyを使用して関心領域を定義します。

+0

ありがとうございます、私のプログラムでは、高速スレッシュホールド手法が非常に便利です。 roipoly&roifilt2は仕事をすることができますが、2D画像を扱うことができます。申し訳ありませんが、私の画像が3Dであることを忘れてしまいました。 – Lily

4

roifilt2を使用してください。前のステップをスキップすることができますので、あなたの場合は

c = [222 272 300 270 221 194]; 
r = [21 21 75 121 121 75]; 
BW = roipoly(I,c,r); 

は、BWが既に定義されている次のコードはMatlab Documentation site

I = imread('eight.tif'); 

まずから直接採取し、関心領域を定義します。

さて、フィルタを適用します。

H = fspecial('unsharp'); 
J = roifilt2(H,I,BW); 
figure, imshow(I), figure, imshow(J) 
+0

ありがとう! roifilt2はまさに私が欲しかったものです。私のイメージは3Dだと言わざるをえませんでした! : – Lily

+0

roifilt2は3D画像では機能しません – Lily

関連する問題