How to code this formula?
Show older comments

Please help me to convert from HSV to RGB with this equation
8 Comments
Walter Roberson
on 5 Dec 2019
Call rgb2hsv()
Alvin Alvin
on 5 Dec 2019
Walter Roberson
on 5 Dec 2019
Call hsv2rgb() then.
Walter Roberson
on 5 Dec 2019
Use logical indexing to code the R' G' B' in vectorized form. Or use a for loop with if and elseif
Alvin Alvin
on 5 Dec 2019
Walter Roberson
on 5 Dec 2019
Can't do that
Can't do what ?? Can't use hsv2rgb() ? Can't use logical indexing to code the R' G' B' in vectorized form? Can't use a for loop with if and elseif ?
Alvin Alvin
on 5 Dec 2019
Walter Roberson
on 5 Dec 2019
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 ?
Answers (1)
Andrei Bobrov
on 5 Dec 2019
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
Categories
Find more on Modify Image Colors in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
