How to code this formula?

3 vues (au cours des 30 derniers jours)
Alvin Alvin
Alvin Alvin le 5 Déc 2019
Commenté : Walter Roberson le 5 Déc 2019
code.PNG
Please help me to convert from HSV to RGB with this equation
  8 commentaires
Alvin Alvin
Alvin Alvin le 5 Déc 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 le 5 Déc 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 ?

Connectez-vous pour commenter.

Réponses (1)

Andrei Bobrov
Andrei Bobrov le 5 Déc 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

Catégories

En savoir plus sur Modify Image Colors dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by