matlab 代码
IO接口
[posIdx, weiIdx] = blockMaching(im, par)
输入:
* 图像im
* 匹配参数,window和block尺寸,step等
输出:
* 不同中心块对应的前10个类的索引posIdx
* 前10个类的权重
步骤:
- 设置块匹配的window大小为5*5,window移动步长为1,block大小为25*25,block的移动步长为2。
- 提取所有window块
对于3维图像,[d1,d2,d3] = size(im);
方法1.
for d3
for d1
for d2
%抽取5*5的window
end
end
end
从以上代码可知,循环次数为 d1*d2*d3,并且在取window时,存在内存不连续的取数过程。
方法2.
for d3
for window_row
for window_col
%%按列取一维块中不同位置的数据
end
end
end
以上代码可知,循环次数为d3*window_row*window_col,每次取数据都是连续地址。
通过试验对比,在相同的图像尺寸下,方法2比方法1要快至少10倍
- //
//
中心块是以步长为2提取的,需要保存中心块索引
两个索引:
- 当前中心块在所有块内的索引
- offInAllBlk=(