我的问题很简单。我有一个rgb图像和一个逻辑矩阵。我想将逻辑矩阵的相应元素中的像素设置为(150,160,170)。
例如:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
r= 1 1 1 1 1 g= 1 1 1 1 1 b=1 1 1 1 1 logical_mat =1 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
我想要结果
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
r= 150 1 1 1 1 g= 160 1 1 1 1 b=170 1 1 1 1
150 150 1 1 1 160 160 1 1 1 170 170 1 1 1
150 150 150 1 1 160 160 160 1 1 170 170 170 1 1
我已尝试过逻辑索引,如果将像素设置为相同的颜色很容易
lm = repmat(logical_mat,[1 1 3]);
rgb(lm) = 150;
但我不知道如何按渠道设置价值渠道。
提前致谢。
答案 0 :(得分:0)
您已经在创建正确的逻辑矩阵:
lm = repmat(logical_mat,[1 1 3]);
您需要创建相同大小的3通道颜色矩阵。
cm = repmat(cat(3,150,160,170), size(lm,1), size(lm,2))
然后,使用lm
:
rgb(lm) = cm(lm);