如何称量图像然后在MATLAB中有效地添加它们?

时间:2014-10-06 00:17:49

标签: matlab image-processing vector vectorization linear

我需要一种体积矢量'点积'。这是问题所在:

我有一个2x3x4卷,它只是一堆4 2x3图片。我们称之为卷vol

我还有4x1向量,我们称之为vec

我希望我的输出是每个图像的加权和。因此,我的输出将是2x3图像。它将通过以下方式形成:

output = vol(:,:,1).*vec(1) + vol(:,:,2).*vec(2) + vol(:,:,3).*vec(3) + vol(:,:,4).*vec(4)

我可以把它放在for循环中,但我想知道是否有更简单的方法。

感谢。

1 个答案:

答案 0 :(得分:3)

使用 bsxfun 重新排列vec的维度后, permute 的完美案例,让vec展开在vol的大小上,让元素乘法发生,最后使用sum来获取所需的结果 -

sum(bsxfun(@times,vol,permute(vec,[3 2 1])),3)

或者使用矩阵乘法与一些 reshape ' -

reshape(reshape(vol,[],numel(vec))*vec,size(vol,1),[])