1. 程式人生 > >用小波對影象分解,和特徵分析

用小波對影象分解,和特徵分析

path = 'C:\Program Files\MATLAB\R2013a\bin\Original_Images\DIP3E_Original_Images_CH10\';
fileExt = '*.tif';
files = dir(fullfile(path,fileExt));
len = size(files,1);
n=0;
for i=1:len
    fileName = strcat(path,files(i,1).name);
    f=imread(fileName);
        figure,imshow(f);title('original img');
        I=im2double(f);
        for j=1:8
            wname=['sym',num2str(j)];    % sym1,sym2.....sym8   db1,db2----->db10   coif1--->coif5
              %wavemngr('read',1)  檢視工具箱中所有的小波
            [c,s]=wavedec2(I,4,wname);
            for k=1:4
                ca=appcoef2(c,s,wname,k);
                ch=detcoef2('h',c,s,k);   % 一級水平細節
                cv=detcoef2('v',c,s,k);   % 一級垂直細節
                cd=detcoef2('d',c,s,k);   % 一級對角細節
        
                ca=mat2gray(ca);     % 歸一化
                ch=mat2gray(ch);
                cv=mat2gray(cv);
                cd=mat2gray(cd);
            
            figure,imshow([ca,ch;cv,cd]);
            title([wname,' wavedec.: approx. ','and det. coefs (lev. ',num2str(k),')',num2str(n)]);
            name=['D:\img\',wname,' wavedec approx ', 'level ',num2str(i),num2str(j),num2str(k), num2str(n)];    
            n=n+1;
            saveas(gcf, name, 'jpg');
               close all;
            end
        end
end; 

第一個for  迴圈 遍歷資料夾內所有的tif  影象 

第二個for 迴圈是採用何種小波

第三個for 迴圈是對影象進行N級分解