0

固定サイズのフィルタリング ウィンドウを使用する代わりに、ノイズ密度に基づく適応ウィンドウ サイズを使用するフィルターに取り組んでいます。たとえば、ウィンドウ サイズが 3x3 で、9 ピクセルだとします。これらの 9 ピクセルすべてが破損したピクセルとして検出された場合、次のステップを処理するためにウィンドウ内にノイズの多いフリー ピクセルが必要なため、次のステップに進む必要はありません。この場合、ウィンドウ サイズを 5x5 に変更して、再度スキャンします。再びすべてのピクセル (25 ピクセル) が破損していると検出された場合は、7x7 ウィンドウを選択します。実装するためにコードを書きましたが、各ウィンドウにすべての要素を表示したため、大きすぎます。他の方法で実装するかどうかはわかりませんが、他の簡単な方法があると確信しています。

上記の目的のために私が書いたコードは、

if((S1==1) && (S2==1))

        5x5 window===> V=[L(p-2,q-2) L(p-2,q-1) L(p-2,q) L(p-2,q+1) L(p-2,q+2) L(p-1,q-2) L(p-1,q-1) L(p-1,q) L(p-1,q+1) L(p-1,q+2) L(p,q-2) L(p,q-1) L(p,q+1) L(p,q+2) L(p+1,q-2) L(p+1,q-1) L(p+1,q) L(p+1,q+1) L(p+1,q+2) L(p+2,q-2) L(p+2,q-1) L(p+2,q) L(p+2,q+1) L(p+2,q+2)]; % 5x5 window

        for k=1:24
            if((V(k) == 0) || (V(k) == 255))

            else
              N(a)=V(k);
              a=a+1;
            end
        end 

        if((a-1)>= 1)
        Y(p,q)=round(Median(N(1:a-1)));
         %disp(Y(p,q));
        a=1;
       else
         7x7 window===>   V1=[L(p-3,q-3) L(p-3,q-2) L(p-3,q-1) L(p-3,q) L(p-3,q+1) L(p-3,q+2) L(p-3,q+3) L(p-2,q-3) L(p-2,q-2) L(p-2,q-1) L(p-2,q) L(p-2,q+1) L(p-2,q+2) L(p-2,q+3) L(p-1,q-3) L(p-1,q-2) L(p-1,q-1) L(p-1,q) L(p-1,q+1) L(p-1,q+2) L(p-1,q+3) L(p,q-3) L(p,q-2) L(p,q-1) L(p,q+1) L(p,q+2) L(p,q+3) L(p+1,q-3) L(p+1,q-2) L(p+1,q-1) L(p+1,q) L(p+1,q+1) L(p+1,q+2) L(p+1,q+3) L(p+2,q-3) L(p+2,q-2) L(p+2,q-1) L(p+2,q) L(p+2,q+1) L(p+2,q+2) L(p+2,q+3) L(p+3,q-3) L(p+3,q-2) L(p+3,q-1) L(p+3,q) L(p+3,q+1) L(p+3,q+2) L(p+3,q+3)]; % 7x7 window 

同様に、私は 11x11 までのウィンドウを使用しました。これだけのコードを書くのではなく、V と V1 ベクトルを簡単に表現したいのです。

4

1 に答える 1

1

[p,q]サイズを中心とした任意のウィンドウnは、画像から次のように読み取ることができます。

halfSize = floor(n/2); %# n has to be odd
window = image(p-halfSize:p+halfSize,q-halfSize:q+halfSize);

の最大値で画像をパディングするか、または、たとえばと(と同じ)halfSizeをテストして、インデックス作成エラーが発生しないようにする必要があることに注意してください。p>halfSizep<imageSize-halfSize+1q

于 2012-12-15T14:51:25.483 に答える