固定サイズのフィルタリング ウィンドウを使用する代わりに、ノイズ密度に基づく適応ウィンドウ サイズを使用するフィルターに取り組んでいます。たとえば、ウィンドウ サイズが 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 ベクトルを簡単に表現したいのです。