如何将图像从文件夹分成4x4块

2次查看(最近30天)
Petrus van Aswegen
Petrus van Aswegen 2021年5月5日
我想把文件夹中的所有图像分成4x4块,然后将RGB信息存储在一个零矩阵中。附件是图片的样例。有人知道怎么把这些块分割然后把信息存储在矩阵里吗。
3评论
Petrus van Aswegen
Petrus van Aswegen 2021年5月5日
对不起,我的措辞不准确。结束状态是利用每个4x4 patch中的RGB颜色信息来分离太阳能电池板的属性,然后使用支持向量机检测其他图像中的太阳能电池板。金宝app我基本上需要把图像分成小块,然后把每个小块中的信息存储到一个矩阵中

登录评论。

接受的答案

Turlough休斯
Turlough休斯 2021年5月5日
嗨庄园, mat2cell方法 乔纳斯 指出可以做的更普遍如下。注意,这将处理图像维度不是相应块维度的因子的情况(忽略其余行或列)
1.参数
blockHeight = 4;
blockWidth = 4;
folderName =“C: / /……”%文件夹包含图像
2.目录中。其他人可以使用这三行代码来复制演示。一旦你修改 folderName 您可以用第四行替换下面的三行。
(儿子(1:6)。文件夹]=交易('');
= cellfun(@(x) sprintf()“office_ % s.jpg”, x) {' 1 '' 2 '“3”“4”“5”“6”},“大学”、假);
[fils.name] =帧{:};
%儿子= dir (fullfile (folderName * . png));<用这一行替换上面的内容
3.加载一个初始图像以获得一些元数据:
I0 = imread (fullfile(儿子(1).folder,儿子(1). name));
N1 = blockHeight *的(地板(大小(钱数,1)/ blockHeight), 1);
N2 = blockWidth *的(地板(大小(钱数,2)/ blockWidth), 1);
4.循环遍历目录:
L =细胞(元素个数(儿子),1);
2 = 1:元素个数(儿子)
I = imread (fullfile(儿子(2).folder,儿子(2). name));
b = mat2cell(我(1:blockHeight *元素个数(N1), 1: blockWidth *元素个数(N2):), N1、N2, 3);
L{2} =猫(4 b {:});% or L{ii} = b;
结束
l
L =6×1单元阵列
{4×4×3×33750 uint8} {4×4×3×33750 uint8} {4×4×3×33750 uint8} {4×4×3×33750 uint8} {4×4×3×33750 uint8}
结果L是一个6乘1的矩阵单元格数组,其中每个单元格对应一个图像。矩阵尺寸(4x4x3x3750)对应于块的高度、块的宽度、RGB和块的线性索引。
1评论
Petrus van Aswegen
Petrus van Aswegen 2021年5月5日
这个很好,非常感谢你,伙计。感谢你的帮助

登录评论。

答案(1)

乔纳斯
乔纳斯 2021年5月5日
你可以用mat2cell
一个=兰德(256256 3);矩阵的%
N = 4 * 1 (64);
B = mat2cell (N, N, 3);
调整从这里
3评论
Petrus van Aswegen
Petrus van Aswegen 2021年5月5日
传奇。谢谢你的帮助,非常感谢。

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!