Matlab: 图片分块处理

P1: 

[FileName,PathName] = uigetfile('*.*','Select the image');   
 Im=imread([PathName FileName]);  
imshow(Im)  
hold on  
L = size(Im);  
height=32;  
width=32;  
max_row = floor(L(1)/height);  
max_col = floor(L(2)/width);  
seg = cell(max_row,max_col);  
%分块  
for row = 1:max_row         
    for col = 1:max_col          
    seg(row,col)= {Im((row-1)*height+1:row*height,(col-1)*width+1:col*width,:)};    % 分块公式,得到一组seg
    end  
end   
for i=1:max_row*max_col  
    aa=seg{i}
imwrite(seg{i},strcat('m',int2str(i),'.bmp'));    
end  
%画出分块的边界  
for row = 1:max_row        
    for col = 1:max_col    
 rectangle('Position',[160*(col-1),160*(row-1),160,160],...  
         'LineWidth',2,'LineStyle','-','EdgeColor','r');  
        end  
end   
hold off  

P2:

clc% [FileName,PathName] = uigetfile('*.*','Select the image');   
% Im=imread([PathName FileName]);  
% imshow(Im)  
% hold on  
L = size(Im);  
height=64;  
width=64;  
max_row = floor(L(1)/height);  
max_col = floor(L(2)/width);  
seg = cell(max_row,max_col);  
ab=zeros(height,width);
%分块  
for row = 1:max_row        
    for col = 1:max_col          
    seg(row,col)= {Im((row-1)*height+1:row*height,(col-1)*width+1:col*width,:)};    
    end  
end   
for i=1:max_row*max_col  
    seg{i}
imwrite(seg{i},strcat('m',int2str(i),'.bmp'));    
end  
% for ro=1:max_row
%     for co=1:max_col
%         ab(ro)=[ab(ro),seg(ro,co),zeros(32,10)];
%     end
% end

%     aaa=[ab(1);ab(2);ab(3);ab(4);ab(5);ab(6);ab(7);ab(8);ab(9);];
%     imshow (aaa);
%画出分块的边界  
for row = 1:max_row        
    for col = 1:max_col    
 rectangle('Position',[1600*(col-1),1600*(row-1),1600,1600],...  
         'LineWidth',2,'LineStyle','-','EdgeColor','r');  
        end  
end   

猜你喜欢

转载自blog.csdn.net/gusui7202/article/details/82114038