有一个图像分块的代码,可以直接将一幅图像分为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. Spring转账业务_XML配置事物控制

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  2. LeetCode 305. Number of Islands II

    原题链接在这里:https://leetcode.com/problems/number-of-islands-ii/ 题目: A 2d grid map of m rows and n column ...

  3. 【转】JVM可视化工具插件---Visual GC

    Visual GC是一个Java 内存使用分析与GC收集的可视化工具插件 <插件下载> 一:整个区域分为三部分:spaces.graphs.histogram 1 spaces区域:代表虚 ...

  4. Python函数-callable()

    callable(object) 作用: 检查对象object是否可调用.如果返回True,object仍然可能调用失败:但如果返回False,调用对象ojbect绝对不会成功. 注意: 类是可调用的 ...

  5. Vue forms

    Vue forms Vue 的表单. 表单中的数据和是双向绑定的. 你可以使用 v-model 对控件元素进行数据双向绑定. 比较有用的修饰符 .lazy .number .trim

  6. (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令

    (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单 上一节说到如 ...

  7. 6、Selenium+Python登录案例 -- Github

    一:登录 1.指定浏览器,打开网址:https://github.com/login 2.设置等待时间: time.sleep(3) or driver.implicitly_wait(3) 3.输入 ...

  8. Composer + thinkphp5.1安装与使用

    Composer 是 PHP 的一个依赖管理工具.我们可以在项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件,有了它,我们就可以很轻松的使用一个命令将其他人的优秀代码引用到我 ...

  9. Angular5学习笔记 - 创建组件(四)

    一.创建组件 ng generate component component-name #简写 ng g c component-name ng generate directive|pipe|ser ...

  10. Day2-VIM(三):删除

    字符删除 x 删除光标所在处字符 X 删除光标所在前字符 这里没有什么可注意的地方,但需要说明一下的是 通常情况下,新手一旦着急便会按着x不动,从而达到删除一大块文本的目的 如果是头几天使用还好说,但 ...