close

使用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&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Maximum Filter

Minimum Filter&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspMidpoint Filter


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Irwinlin 的頭像
    Irwinlin

    變化是生活的調味料

    Irwinlin 發表在 痞客邦 留言(1) 人氣()