У меня есть вектор сигналов R, G и B из видео вместе с временем захвата кадра, и каждый размер вектора, такой как R
, равен 1 x 100 double
.Я хочу генерировать оттенок из этих векторов сигналов RGB, которые у меня есть.Я нахожу формулу для нее из Википедии, и она просто выглядит следующим образом:
RGB.mat: ниже приведен пример R, G, B, t.Каждый является вектором 1x800 double, который я включил только в 5:
R = 12.7 15.7 15.9 15.8 15.7
G= 12.7 12.7 12.7 12.5 12.4
B = 16.4 16.1 16.1 16.0 15.9
t = 0.03 0.06 0.10 0.13 0.16
, поэтому я очень новичок в Matlab, и я попробовал себя, и полный код:
%% load R and G and B data
load('RGB.mat')
subplot(3,1,1)
plot(t,R,'r')
subplot(3,1,2)
plot(t,G,'g')
subplot(3,1,3)
plot(t,B,'b')
T1 = max([R; G; B]);
T2 = min([R; G; B]);
T3 = T1 -T2
% get hue
%R, G, B are row vectors
ncols = length([R, G, B]);
hprime = zeros(1, ncols);
for H = 1:ncols
if T3(H) == 0
hprime(H) = 0;
elseif T1(H) == R(H)
hprime(H) = mod((G(H)-B(H))/T3(H), 6);
elseif T1(H) == G(H)
hprime(H) = ((B(H)-R(H))/T3(H))+2;
elseif T1(H) == B(H)
hprime(H) = ((R(H)-G(H))/T3(H))+4;
else
error('undefined hue at index %d', H);
end
end
Я нашел похожий пост, который мог бы ответить на мои вопросы, например 1 , но на другом языке, чем Matlab.Было бы здорово, если бы вы могли предоставить свою помощь с кодом, чтобы я также мог запустить его на моей стороне.