为图像中的多个像素赋值

  • 本文关键字:像素 赋值 图像 matlab
  • 更新时间 :
  • 英文 :


是否可以为图像的整个切片分配单个像素值?例如,我有:

img = zeros(100, 200, 3, 'uint8');

我想将值[200, 134, 12]分配给图像的上半部分。我能做到

img(1:50, :, 1) = 200;
img(1:50, :, 2) = 134;
img(1:50, :, 3) = 12;

但是,如果可能的话,我想使用广播来完成任务。由于尺寸不匹配,以下选项不起作用:

img(1:50, :, :) = [200, 134, 12]
img(1:50, :, :) = [[200, 134, 12]]
img(1:50, :, :) = reshape([200, 134, 12], 1, 1, 3)

在这种情况下,我可以在 MATLAB 中应用广播吗?如果是这样,如何?

赋值运算符未列为可用于隐式扩展的运算符之一。但是,您可以将图像的上半部分设置为零,并使用plus运算符进行广播:

img(1:50, :, :) = 0;
img(1:50, :, :) = img(1:50, :, :) + reshape([200, 134, 12], 1, 1, 3);

让我的评论成为答案:

我想你可以img(1:50, :, :) = repmat(reshape([200, 134, 12], 1, 1, 3),50,200),但我不确定它是否比 3 行更清晰,并且可能会使用更多的处理能力和内存(在这个规模上并不重要(

最新更新