• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

matlab处理:批处理图像分块

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

有一个图像分块的代码,可以直接将一幅图像分为5*5的小块,代码如下:

%[FileName,PathName] = uigetfile('*.*','Select the image');  
Im=imread('Bicubic flowers.bmp');
imshow(Im)
hold on
L = size(Im);
height=5;
width=5;
max_row = floor(L(1)/height);%实验图片为800*1280,则max_row=5,max_col=8
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,:)};   
    end
end 
for i=1:max_row*max_col
imwrite(seg{i},strcat('m',int2str(i),'.bmp'));   %把第i帧的图片写为'mi.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

  怎么直接把一个文件夹里的所有图片都按这个分块方法进行分类并保存结果呢?开始我想的是直接用一个循环结构就可以了,但是后来发现最后的结果不对,好几张图片分类最后的小图片数量不够,试了几次才发现是命名相同的问题,循环里最后保存的每个大图的小图片的名字是一样的,所以后面的把前面产生的小图像给覆盖掉了,然后就想办法,每个循环都建立一个文件夹,来分开保存每个大图的小图片,这样问题就解决了。代码如下:

srcDir=uigetdir('Choose source directory.'); %获得选择的文件夹
cd(srcDir);
%mkdir('.\image')
allnames=struct2cell(dir('*.bmp')); %只处理8位的bmp文件
[k,len]=size(allnames); %获得bmp文件的个数
for ii=1:len
%逐次取出文件
mkdir(['.\image\',int2str(ii)]);
name=allnames{1,ii};
Im=imread(name); %读取文件
%然后在此处添加你的图像处理程序即可
L = size(Im);
height=5;
width=5;
max_row = floor(L(1)/height);%实验图片为800*1280,则max_row=5,max_col=8
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,:)};   
    end
end 
for i=1:max_row*max_col
imwrite(seg{i},strcat('image\',int2str(ii),'\','m',int2str(i),'.bmp'));   %把第i帧的图片写为'mi.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 
end

  最后,这个代码的作用是批量处理一个文件夹里的图像(进行图像分块),可以将分块结果保存到每一个相应文件中如下:

(三张原图批量分块)                                                分块结果如下:

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi笔记(整理)-符号和基本语法发布时间:2022-07-18
下一篇:
Delphi中将XML文件数据装入DataSet发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap