2013-11-28 60 views
1

假設我有我想「顏色」的像素的線性索引。MATLAB:如何灰度圖像序列的像素「色」?

如果我想所有的像素設置爲我的灰度圖像序列某些特定的價值,我可以這樣做:

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

什麼是 「LinearPixIndx」,NX1陣?,N×M的? – Vuwox

+0

好的。彩色輸入是什麼意思? –

+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]); 

之後,爲了能夠將您的線性指標適用於所有的顏色通道和所有幀,你需要通過重塑來顯式線性化像素索引。然後,你可以顏色的像素,並變換回形式寬×高×顏色通道×幀:

% 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表示。