matlab - 为图像中的多个像素赋值

标签 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 中应用广播吗?如果是,怎么办?

最佳答案

赋值运算符未列为可在 implicit expansion 中使用的运算符之一.但是,您可以将图像的上半部分设置为零并使用 plus 运算符进行广播:

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

关于matlab - 为图像中的多个像素赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58082448/

相关文章:

matlab - 如何为多个处理器设置 matlabpool?

matlab - 注释掉matlab函数中某行的一部分

matlab - 如何在多核上批量(多个作业)运行 simulink 模型?

python - 如何在 Simulink 的 MATLAB 函数中索引数组值?

windows - 在 Windows 上以编程方式中断 MATLAB

matlab - matlab中两个向量的协方差

matlab - 如何在 MATLAB 中绘制(冲浪)矢量化(矩阵形)方程?

matlab - 从数据集创建矩阵

matlab - 如何将数字结果转换为符号或字符串?

matlab - 为什么 Matlab 在评估数组时错误地返回 0,但在评估标量时正确返回 NaN?