【发布时间】:2013-03-06 14:57:53
【问题描述】:
我有图像需要分成块,然后为每个块计算直方图。我认为最好的方法是使用 blockproc() 函数计算每个块的直方图,但直方图是一个向量,我想将它存储在第三维中,以便更快地进行进一步的计算。
例如,我有 1024*1024px 的图像,我将其划分为 64*64px 的块,并使用 hist() 计算直方图。所以 blockproc 应该返回一个 16*16 的矩阵。但是鉴于 hist() 返回一个我想要存储的向量,我想让 blockproc() 返回一个 16*16*256 矩阵,第 3 维是我的直方图的 256 个值。
我当前的代码是:
function [ counts ] = getHist( block )
[counts,]=hist(block.data, 0:255);
end
HistA = blockproc(lbpA, [64 64], @(block_struct) getHist(block_struct));
但它返回 (16*256) x 1024 矩阵。
我怎样才能做到这一点?
谢谢!
【问题讨论】:
-
blockproc返回什么?如果返回的元素个数没问题,后面就可以reshape了。 -
我添加了一个代码示例,但它没有按预期工作。 @DedekMraz:它返回 (16*256) x 1024 矩阵,我什至不明白为什么它不返回 (16*256) x 16 矩阵?
标签: matlab image-processing matrix