如何在matlab中对多维矩阵应用逻辑索引

时间:2013-07-21 07:23:21

标签: matlab multidimensional-array matrix-indexing

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

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

提前致谢。

1 个答案:

答案 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);