How to code this formula?

1 view (last 30 days)
Alvin Alvin
Alvin Alvin on 5 Dec 2019
Commented: Walter Roberson on 5 Dec 2019
code.PNG
Please help me to convert from HSV to RGB with this equation
  8 Comments
Alvin Alvin
Alvin Alvin on 5 Dec 2019
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 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 ?

Sign in to comment.

Answers (1)

Andrei Bobrov
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

Tags

Community Treasure Hunt

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

Start Hunting!