我目前正在研究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
变量的维度,而不必一个一个地明确说明它们?
答案 0 :(得分:4)
您可以使用bsxfun
:
centroidImage = bsxfun(@rdivide,centroidImage,alphaImage);
答案 1 :(得分:1)
您还可以在alphaImage上使用repmat
:
centroidImage = double(centroidImage) ./ repmat(alphaImage,[1 1 3]);