我正在使用濾波器來代替使用固定大小的濾波窗口,我使用基於噪聲密度的自適應窗口大小。例如,假設窗口大小是3x3,它有9個像素。當所有這9個像素被檢測爲損壞的像素時,進入下一步是無用的,因爲我需要窗口中的一些噪聲自由像素來處理下一步。在這種情況下,我將窗口大小更改爲5x5並再次掃描。如果再次檢測到所有像素(25像素)已損壞,則我會進入7x7窗口。爲了實現,我編寫了一個代碼,但它太大了,因爲我代表了每個窗口中的所有元素。我不確定如何執行它,但我相信會有其他簡單的方法來實現它。在MATLAB中表示可變濾波器大小
的代碼,我的上述目的是寫入
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
類似地,我使用的窗口高達11×11個。我想要很容易地表示V和V1矢量,而不是寫這麼多的代碼。
@Barnabas Szabolcs請參閱此 – user101509