假如讀取F盤English檔案夾中的所有bmp圖檔: Files = dir(strcat('F:\\english\\','*.bmp')); LengthFiles = length(Files); for i = 1:LengthFiles; Img = imread(strcat('F:\english\',Files(i).name)); %自己寫圖像處理函數 ImgProc(Img); end |
matlab圖像旋轉和縮放程式 2009-06-23 11:32
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %旋轉 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function rotate(Image,Angle) %Image為位圖資料 %X,Y為其行列數 [X,Y]=size(Image); %原圖顯示 imshow(Image); %計算四個角點的新坐标,确定旋轉後的顯示區域 LeftTop(1,1)=-(Y-1)*sin(Angle); LeftTop(1,2)=(Y-1)*cos(Angle); LeftBottom(1,1)=0; LeftBottom(1,2)=0; RightTop(1,1)=(X-1)*cos(Angle)-(Y-1)*sin(Angle); RightTop(1,2)=(X-1)*sin(Angle)+(Y-1)*cos(Angle); RightBottom(1,1)=(X-1)*cos(Angle); RightBottom(1,2)=(X-1)*sin(Angle); %計算顯示區域的行列數 Xnew=max([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)])-min([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)]); Ynew=max([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)])-min([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)]); % 配置設定新顯示區域矩陣 ImageNew=zeros(round(Xnew),round(Ynew))+255; %計算原圖像各像素的新坐标 for indexX=0:(X-1) for indexY=0:(Y-1) ImageNew(round(indexX*cos(Angle)-indexY*sin(Angle))+round(abs(min([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)])))+1,1+round(indexX*sin(Angle)+indexY*cos(Angle))+round(abs(min([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)]))))=Image(indexX+1,indexY+1); end end %顯示 figure; imshow((ImageNew)/255) %%%%%%%%%%%%%%%%%%%%%%%%%%% %縮放 %%%%%%%%%%%%%%%%%%%%%%%%%%% function y=resize(a,mul,type) %**************************************************** %a:輸入圖像灰階值 %mul:縮放倍數 %type:1表示最鄰近法,2表示雙極性插值法 %畫出縮放後圖像并傳回其灰階值 %**************************************************** [m,n]=size(a); m1=m*mul;n1=n*mul; %**************************************************** if type==1 for i=1:m1 for j=1:n1; b(i,j)=a(round(i/mul),round(j/mul)); end end elseif type==2 for i=1:m1-1 for j=1:n1-1; u0=i/mul;v0=j/mul; u=round(u0);v=round(v0); s=u0-u;t=v0-v; b(i,j)=(a(u+1,v)-a(u,v))*s+(a(u,v+1)-a(u,v))*t+(a(u+1,v+1)+a(u,v)-a(u,v+1)-a(u+1,v))*s*t+a(u,v); end end end %***************************************************** b=uint8(b); imshow(b); title('處理後圖像'); y=b; |