天天看點

matlab讀取檔案夾中的所有内容(用于批量處理)

假如讀取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;

繼續閱讀