有一个图像分块的代码,可以直接将一幅图像分为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

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

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

matlab处理:批处理图像分块的更多相关文章

  1. 使用matlab批量处理图像后在指定文件夹存储

    使用matlab批量处理图像后在指定文件夹存储 clear;clc;close all; Files=dir('D:\文件及下载相关\文档\MATLAB\postgraduate\Kodak\*.jp ...

  2. 使用方向变换(directional transform)图像分块压缩感知

    论文的思路是先介绍分块压缩感知BCS,然后介绍使用投影和硬阈值方法的迭代投影方法PL,接着将PL与维纳滤波器结合形成SPL(平滑PL),并且介绍了稀疏表示的几种基,提出了两种效果较好的稀疏基:CT与D ...

  3. gdal读写图像分块处理

    转自赵文原文 gdal读写图像分块处理(精华版) Review: 用gdal,感觉还不如直接用C++底层函数对遥感数据进行处理.因为gdal进行太多封装,如果你仅仅只是Geotif等格式进行处理,IO ...

  4. matlab学习笔记,图像分块

    clc; clear all; close all; I = imread('E:\matlab\files-images\tomsen512.jpg'); rs = size(I, 1);% 行数c ...

  5. MATLAB之图像分块处理

    file_path = 'D:/MATLAB/bin/IMAGES/GreenChannels/_512_pixel/';% 图像文件夹路径 img_path_list = dir(strcat(fi ...

  6. matlab 图像分块及恢复

    1. block_divide % 返回的块向量构成的矩阵,其维度信息为 K^2 * N,每一列由块构成的列向量 function P = block_divide(I, K) r = size(I, ...

  7. Matlab 视频与图像之间的相互转换

    matlab版本是2015b,其中更新了部分函数库之前网上相关程序不适用于新版本,在此提供适用于新版本的程序: 帧序列转换为视频 function video = frames2video(frame ...

  8. 【matlab】用matlab 保存带标记图像、图片的方法总结

    最近看了一些用matlab对图形图片进行保存的帖子和资源,关于图像保存的方法给大家分享一下这些方法是大家所使用方法的一个总结. 如今常用的方法有三种printf,imwrite,saveas下面分别介 ...

  9. gdal读写图像分块处理(精华版)

    一.gdal进行数据操作在安装好gdal后,即可调用gdal库中的函数.(需要包含的头文件:gdal_priv.h)1.打开数据集使用gdal库进行数据(影像)操作的第一步就是打开一个数据集.对于“数 ...

随机推荐

  1. 畅通工程再续 (kruskal算法的延续)

    个人心得:这题其实跟上一题没什么区别,自己想办法把坐标啥的都给转换为对应的图形模样就好了 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实 ...

  2. FastAdmin 中的 formatter flag 分析

    FastAdmin 中的 formatter flag 分析 效果 首先看看效果,这里的文字和颜色可以根据数据改变. 这是系统自带的分类管理. 代码 功能在 \public\assets\js\bac ...

  3. Monkey测试与MonkeyRunnner测试的区别

    1.Monkey测试  == 压力测试: MonkeyRunner == 自动化测试 2.Monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件 3.MonkeyRu ...

  4. Python 函数之lambda、map、filter和reduce

    1.lambda函数 lambda()是Python里的匿名函数,其语法如下: lambda [arg1[, arg2, ... argN]]: expression 学习条件运算时,对于简单的 if ...

  5. (转)Dynamic Web project转成Maven项目

    本文转载自:http://my.oschina.net/twosnail/blog/369125 1.新建Dynamic Web Project 1.File -> New -> Othe ...

  6. 回调函数(callback)经典解答

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:常溪玲链接:http://www.zhihu.com/question/19801131/answer/13005983来源: ...

  7. Javascript 面向对象(一):封装

    Javascript 面向对象编程(一):封装 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言, ...

  8. (转)newInstance()和new()

    在Java开发特别是数据库开发中,经常会用到Class.forName( )这个方法.通过查询Java Documentation我们会发现使用Class.forName( )静态方法的目的是为了动态 ...

  9. 如何成功且顺序的进入centos系统的安全模式?(图文详解)

    说白了,这个很简单! 见 -bash : ** : command not found的问题解决(图文详解)

  10. Solr查询错误

    报错: Exception in thread "main" java.lang.VerifyError: Bad return type Exception Details: L ...