How to code this formula?

6 次查看(过去 30 天)
Alvin Alvin
Alvin Alvin 2019-12-5
code.PNG
Please help me to convert from HSV to RGB with this equation
  8 个评论
Alvin Alvin
Alvin Alvin 2019-12-5
can't use logical indexing to code the R' G' B' in vectorized form and Can't use a for loop with if and elseif too
Walter Roberson
Walter Roberson 2019-12-5
Rp = zeros(size(H));
Gp = zeros(size(H));
Bp = zeros(size(H));
for K = 1 : numel(H)
if H(K) < 60
Rp(K) = C(K);
Gp(K) = X(K);
Bp(K) = 0;
elseif H(K) < 120
Rp(K) = X(K);
Gp(K) = C(K);
Bp(K) = 0;
elseif
and so on
end
end
What prevents you from using a for loop with if and elseif ?

请先登录,再进行评论。

回答(1 个)

Andrei Bobrov
Andrei Bobrov 2019-12-5
function rgb = HSVtoRGB(H,S,V)
n = numel(H);
C = V.*S;
X = C .* (1 - abs(mod(H/60,2) - 1));
A = [C, X, zeros(n,1)];
i = discretize(H,0:60:360);
j = perms(1:3);
j = j([6,4,2,1,3,5],:);
r = repmat((1:n)',1,3);
rgbs = A(sub2ind([n,3],r,j(i,:)));
rgb = 255*(rgbs + V - C);
end

类别

Help CenterFile Exchange 中查找有关 Modify Image Colors 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by