[討論]有關低通濾波器不能用函式做運算已回收
這是我用函式的寫法
clear all;
c=imread('LENA.bmp');
imshow(c);
mask=[1/16 2/16 1/16;2/16 4/16 2/16;1/16 2/16 1/16];
d=filter2(mask,c);
imshow(uint8(d));
但...不能用filter2()
這是以下版本
b = imread('LENA.bmp');
db=double(b);
[h,w]=size(b); %取變數之長(h)與寬(w)
c=zeros(h,w); %產生h*w之零矩陣
for i=1:h
for j=1:w
if(i==1 && j==1)%左上角
a1=0;
a2=0;
a3=0;
a4=0;
a5= db(i,j)*4 ;
a6= db(i,j+1)*2 ;
a7=0;
a8= db(i+1,j)*2 ;
a9= db(i+1,j+1)*1 ;
a=(a1+a2+a3+a4+a5+a6+a7+a8+a9)/16;
c(i,j)=a;
end
if(i==h && j==1)%左下角
a1=0;
a2=db(i-1,j)*2;
a3= db(i-1,j+1)*1;
a4=0;
a5= db(i,j)*4 ;
a6= db(i,j+1)*2 ;
a7=0;
a8=0;
a9=0;
a=(a1+a2+a3+a4+a5+a6+a7+a8+a9)/16;
c(i,j)=a;
end
if(i==1 && j==h)%右上角
a1=0;
a2=0;
a3=0;
a4=db(i,j-1)*2;
a5=db(i,j)*4 ;
a6= 0;
a7= db(i+1,j-1)*1;
a8= db(i+1,j)*2 ;
a9=0;
a=(a1+a2+a3+a4+a5+a6+a7+a8+a9)/16;
c(i,j)=a;
end
if(i==h && j==w)%右下角
a1=db(i-1,j-1)*1;
a2=db(i-1,j)*2;
a3=0;
a4=db(i,j-1)*2;
a5=db(i,j)*4 ;
a6= 0;
a7= 0;
a8= 0;
a9=0;
a=(a1+a2+a3+a4+a5+a6+a7+a8+a9)/16;
c(i,j)=a;
end
if(i==1 && j>1 && j<w)%上邊
a1=0;
a2=0;
a3=0;
a4=db(i,j-1)*2;
a5=db(i,j)*4;
a6=db(i,j+1)*2;
a7=db(i+1,j-1)*1;
a8=db(i+1,j)*2;
a9=db(i+1,j+1)*1;
a=(a1+a2+a3+a4+a5+a6+a7+a8+a9)/16;
c(i,j)=a;
end
if(i==h && j>1 && j<w)%下邊
a1=db(i-1,j-1)*1;
a2=db(i-1,j)*2;
a3=db(i-1,j+1)*1;
a4=db(i,j-1)*2;
a5=db(i,j)*4;
a6=db(i,j+1)*2;
a7=0;
a8=0;
a9=0;
a=(a1+a2+a3+a4+a5+a6+a7+a8+a9)/16;
c(i,j)=a;
end
if(i>1 && i<h && j==w)%左邊
a1=db(i-1,j-1)*1;
a2=db(i-1,j)*2;
a3=0;
a4=db(i,j-1)*2;
a5=db(i,j)*4;
a6=0;
a7=b(i+1,j-1)*1;
a8=b(i+1,j)*1;
a9=0;
a=(a1+a2+a3+a4+a5+a6+a7+a8+a9)/16;
c(i,j)=a;
end
if(i>1 && i<h && j==1)%右邊
a1=0;
a2=db(i-1,j)*2;
a3=db(i-1,j+1)*1;
a4=0;
a5=db(i,j)*4;
a6=db(i,j+1)*2;
a7=0;
a8=db(i+1,j)*2;
a9=db(i+1,j+1)*1;
a=(a1+a2+a3+a4+a5+a6+a7+a8+a9)/16;
c(i,j)=a;
end
if(i>1 && i<h && j>1 && j<w)%內容
a1=db(i-1,j-1)*1;
a2=db(i-1,j)*2;
a3=db(i-1,j+1)*1;
a4=db(i,j-1)*2;
a5=db(i,j)*4;
a6=db(i,j+1)*2;
a7=db(i+1,j-1)*1;
a8=db(i+1,j)*2;
a9=db(i+1,j+1)*1;
a=(a1+a2+a3+a4+a5+a6+a7+a8+a9)/16;
c(i,j)=a;
end
uc=uint8(c);
imshow(uc);
end;
end;
這個轉uint8真的是太折磨了....
想請問大大有更好更快的方法嗎??
在此感激不盡...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.33.90.98