Matlab中的光栅扫描
我正试图为一个涉及指纹识别的更大项目编写代码。我正在尝试使用blockproc,它占用我的128x128矩阵的3x3“窗口”。我有一个52x9矩阵,矩阵的每一行都描述了一个分叉模式。我需要做的是从128x128矩阵中取出3x3块,同时从左到右、从上到下移动。然后使用神经网络将每一块与分叉模式矩阵进行比较。我需要进行光栅扫描,以确保获得128x128矩阵的所有可能的3x3表示形式。换句话说,我需要向右移动1个像素,获得3x3窗口,运行网络,然后再移动1个像素,等等。如果我不能再向右移动(不能再创建3x3窗口),我将向下移动1个像素,然后再次重复水平扫描过程。例如: 一个简单的3x5阵列:Matlab中的光栅扫描,matlab,raster,Matlab,Raster,我正试图为一个涉及指纹识别的更大项目编写代码。我正在尝试使用blockproc,它占用我的128x128矩阵的3x3“窗口”。我有一个52x9矩阵,矩阵的每一行都描述了一个分叉模式。我需要做的是从128x128矩阵中取出3x3块,同时从左到右、从上到下移动。然后使用神经网络将每一块与分叉模式矩阵进行比较。我需要进行光栅扫描,以确保获得128x128矩阵的所有可能的3x3表示形式。换句话说,我需要向右移动1个像素,获得3x3窗口,运行网络,然后再移动1个像素,等等。如果我不能再向右移动(不能再创建
A = [10 11 12 13 14;
15 16 17 18 19;
20 21 22 23 24];
使用2x3窗口执行光栅扫描将产生以下矩阵
A1 = [10 11 12;
15 16 17];
A2 = [11 12 13;
16 17 18];
A3 = [12 13 14;
17 18 19];
A4 = [15 16 17;
20 21 22];
A5 = [16 17 18;
21 22 23];
A6 = [17 18 19;
22 23 24];
请记住,默认情况下,MATLAB始终沿行运行,因此需要翻转A和块大小。您可以检查由colfilt()
内部调用的块序列:
其中,每列依次为A1、A2、。。。或者更准确地说,
重塑(A1',[],1)
,重塑(A2',[],1)
,两个循环有什么问题?一个用于行,一个用于列:
for row=1:128-3
for col=1:128-3
subMatrix = M(row,col:col+3)
% send to neural network function
end
end
有什么问题吗?您在生成A1-A6算法(或数据集的等效算法)时有困难吗?我在从给定矩阵生成A1-A6时有困难。我可能会想出一些带有if条件的for/loop来检查是否可以形成3x3矩阵,但如果可能的话,我宁愿尝试使用一个函数。我不确定哪一个计算速度更快。谢谢你,这个函数从来都不是什么新鲜事。我想我也可以使用循环,因为我需要跟踪结果。Matlab中的循环是致命的slow@user2151446你错了,我的朋友!当您需要循环并且没有其他选择时,请使用循环
for row=1:128-3
for col=1:128-3
subMatrix = M(row,col:col+3)
% send to neural network function
end
end