有没有什么好方法可以分配一些除for-loop
以外的相同颜色的蒙版像素?
%% pick a color
cl = uisetcolor; %1-by-3 vector
im = ones(3, 3, 3) / 2; % gray image
mask = rand(3, 3);
mask_idx = mask > 0.5; % create a mask
%% Something like this
im(mask_idx, :) = cl'; % assignment the pixels to color `cl`
答案 0 :(得分:1)
你可以这样做,使用repmat()
:
%% pick a color
cl = uisetcolor; %1-by-3 vector
im = ones(3, 3, 3)/2; % gray image
mask = rand(3, 3);
mask_idx = mask > 0.5; % create a mask
cl_rep = repmat(cl,[sum(mask_idx(:)) 1]);
im(repmat(mask_idx,[1 1 3])) = cl_rep(:);
我所做的是重复三次遮罩以获得图像的所有三层。为了能够将其与颜色矢量cl
相匹配,还必须重复它。重复的次数与要更改的像素数sum(mask_idx(:))
相同。