2

我的问题很简单。我有一个 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;

但我不知道如何逐个渠道设置价值渠道。

提前致谢。

4

1 回答 1

0

You're already creating the right logical matrix:

lm = repmat(logical_mat,[1 1 3]);

You need to create a 3-channel color matrix the same size.

cm = repmat(cat(3,150,160,170), size(lm,1), size(lm,2))

Then, index into the color matrix with lm:

rgb(lm) = cm(lm);
于 2013-12-12T23:40:43.443 回答