[討論]有關低通濾波器不能用函式做運算已回收

看板MATLAB作者 (coke)時間15年前 (2010/11/16 17:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
這是我用函式的寫法 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
文章代碼(AID): #1CuaoYSx (MATLAB)