简化MATLAB中的迭代维度

时间:2012-02-28 11:51:06

标签: matlab image-processing

我目前正在研究MATLAB中平均图像的功能。但我觉得以下几行可能更简单,只是我不知道如何。

    centroidImage(:,:,1) = double(centroidImage(:,:,1)) ./ alphaImage;
    centroidImage(:,:,2) = double(centroidImage(:,:,2)) ./ alphaImage;
    centroidImage(:,:,3) = double(centroidImage(:,:,3)) ./ alphaImage;

如果我把它写成:

,我会收到错误
    centroidImage = double(centroidImage) ./ alphaImage;

因为尺寸不匹配(alphaImage是[y x]而centroidImage是[y x 3])。是否有一种更简单,更有效的方法来迭代centroidImage变量的维度,而不必一个一个地明确说明它们?

2 个答案:

答案 0 :(得分:4)

您可以使用bsxfun

centroidImage = bsxfun(@rdivide,centroidImage,alphaImage);

答案 1 :(得分:1)

您还可以在alphaImage上使用repmat

centroidImage = double(centroidImage) ./ repmat(alphaImage,[1 1 3]);