有一个图像分块的代码,可以直接将一幅图像分为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. burpsuite使用以及repeater模块实现重放攻击

    第一.burp suit是什么? Burp Suite 包含了一系列burp 工具,这些工具之间有大量接口可以互相通信,之所以这样设计的目的是为了促进和提高 整个攻击的效率.平台中所有工具共享同一ro ...

  2. Git学习原版手稿

    手稿诞生记        Git学习的时候难免会有遗忘然后往复学习查看的过程,所以就形成了这个学习的手稿,记录了Git使用过程中的大部分命令,今天在清理的时候偶然看到了这些记录,而且最近也在写Git的 ...

  3. Shiro-从数据表中初始化资源和权限

    我们在 applicationContext中配置受保护的资源和权限的关系 <property name="filterChainDefinitions"> <v ...

  4. ajax返回

    1.几种方式public function getAjax(){ //$data = 'ok'; //$this->ajaxReturn($data); // 'ok' //$this-> ...

  5. Java处理乱码问题

    中文乱码分为GET乱码和POST乱码 GET乱码在Tomcat中配置编码 <Connector port="8080" protocol="HTTP/1.1&quo ...

  6. django1.7+nginx1.4.4的static配置

    静态文件指像css,js,images之类的文件. 1.工程配置setting.py STATIC_URL = /static/ STATIC_ROOT = /home/www/winingcpi/s ...

  7. acm 士兵杀敌(一)

    士兵杀敌(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的军师,南将军现在 ...

  8. Hot resize Multipath Disk – Linux

    This post is for the users of the great dm-multipath system in Linux, who encounter a major availabi ...

  9. wap手机端按下 松开 滑动事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. delphi 面向对象实用技能教学二(封装)

    面向对象编程手法,是一项综合技能,单独把谁拿出来说都不合适.本次重写 TSimpleThread ,使其能在 D7 下运行. 基于 TSimpleThread ,重磅推出 TSimpleUI.ExeP ...