假设我有像素的线性索引,我想'着色'。
如果我想将所有这些像素设置为我的灰度图像序列中的某个特定值,我可以这样做:
gryscl_imSeq(LinearPixIndx) = 0.7;
编辑:其中'LinearPixIndx'是一个p元素向量,包含图像序列中像素的线性索引。
但是,如果我想介绍一些颜色,我首先需要将我的灰度图像序列转换为m x n x 3 x p
矩阵,我可以这样做:
RGBvideo = reshape(repmat(reshape(gryscl_imSeq,[],size(gryscl_imSeq,3)),3,1),...
[size(gryscl_imSeq,1) size(gryscl_imSeq,2) 3 size(gryscl_imSeq,3)]);
如果有人能告诉我如何将我的灰度线性像素索引转换为RGBvideo的相应索引,我将非常感激。
或者,如果有更好的方法可以解决我想做的事情,我将非常感谢任何建议。
先谢谢,
<磷>氮答案 0 :(得分:1)
问题不是很清楚,但我想我明白你想要什么。这是一种方法。
首先,我认为从灰度转换为RGB有一种更优雅的方式:
% determine image sequence dimensions
[m, n, N] = size(gryscl_imSeq);
% expand to RGB
rgb_imSeq = reshape(gryscl_imSeq, [m, n, 1, N]);
rgb_imSeq = repmat(rgb_imSeq, [1, 1, 3, 1]);
之后,为了能够将线性索引应用于所有颜色通道和所有帧,您需要通过重新整形显式线性化像素索引。然后你可以为像素着色,然后转换回形式宽度x高度x颜色通道x帧:
% linearize image dimensions
rgb_imSeq = reshape(rgb_imSeq, [m * n, 3, N]);
% color pixels
rgb_imSeq(LinearPixIndx, :, :) = repmat([1 0 0], [numel(LinearPixIndx), 1, N]);
% original shape
rgb_imSeq = reshape(rgb_imSeq, [m, n, 3, N]);
此处[1 0 0]
是您要使用的颜色的RGB表示形式,在本例中为红色。