使用Median filter, Maximum filter, Minimum filter, midpoint filter在之前所產生黑白相間條紋的圖片,以一個(2n+1)x(2n+1)pixels的矩陣來實現 。原始圖形如下:
以下使用matlab來對各種filter以3x3 pixels來實現,使用matlab的好處是median, max, min都有函數可以直接用,不用另外寫。
n=input('The (2n+1)x(2n+1) matrix of the filter, n=')
%if 3x3 pixels matrix, please input n=1, if 5x5, please input n=2 and so on.
%首先初始化四個矩陣,以便存取濾波後的圖形,矩陣的大小為256x256
for k1=1:256
for l1=1:256
image_medf(k1,l1)=bwimage(k1,l1);
image_maxf(k1,l1)=bwimage(k1,l1);
image_minf(k1,l1)=bwimage(k1,l1);
image_midf(k1,l1)=bwimage(k1,l1);
i1=1; %用來計數
%對某一個pixel(k1,l1),選取以其為中心之3x3 pixels的灰階值,記錄於temp
%忽略邊界效應,也就是不計算無法被這個3x3 filter覆蓋的pixels
%所以對3x3 filter而言,k1和l1從第2 pixel計算到255個pixel
if k1>1&&l1>1&&k1
%You can find the raw data in the director c:\DIP
fout=fopen('c:\DIP\image_medf','w');
for i1=1:256
ori=fwrite(fout,image_medf(i1,:),'uchar');
end;
fclose(fout);
fout=fopen('c:\DIP\image_maxf','w');
for i2=1:256
ori=fwrite(fout,image_maxf(i2,:),'uchar');
end;
fclose(fout);
fout=fopen('c:\DIP\image_minf','w');
for i3=1:256
ori=fwrite(fout,image_minf(i3,:),'uchar');
end;
fclose(fout);
fout=fopen('c:\DIP\image_midpf','w');
for i4=1:256
ori=fwrite(fout,image_midpf(i4,:),'uchar');
end;
fclose(fout);
以3x3 filter實現的結果分別如下:
Median Filter                                              Maximum Filter
Minimum Filter                                           Midpoint Filter
- Nov 17 Fri 2006 11:59
數位影像處理2-median/max/min/midpoint filter-使用Matlab
close
全站熱搜
留言列表
發表留言