Undefined function or variable

6 ビュー (過去 30 日間)
Josephine
Josephine 2013 年 12 月 7 日
回答済み: Wayne King 2013 年 12 月 7 日
hi i am trying to make my own rgb-to-hsv function. this is my code.
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
hue_one = mod((((G-B).*60)./(max(I,[],3)-min(I,[],3))),360);
hue_two = (((B - R).*60)./(max(I,[],3)-min(I,[],3))) + 120;
hue_three = (((R - G).*60)./(max(I,[],3)-min(I,[],3))) + 240;
if (R == G) & (R == B)
H = 0;
elseif (R >= G) & (R >= B)
H = hue_one;
elseif (G >= R) & (G >= B)
H = hue_two;
elseif (B >= R) & (B >= G)
H = hue_three;
end
V = max(I,[],3);
if V == 0
S = 0;
else
S = (max(I,[],3)-min(I,[],3))./max(I,[],3);
end
HSV(:,:,1) = H;
HSV(:,:,2) = S;
HSV(:,:,3) = V;
imshow(HSV)
values of S and V are loaded in the workspace without errors while the H returns an error.
Undefined function or variable 'H'.
Error in convertRGB (line 29)
HSV(:,:,1) = H;
i tried running my code line by line. after the if/elseif statements, there was no generated value of H. the variables hue_one, hue_two and hue_three also returned a matrix and can be found on the workspace pane. WHAT COULD HAVE BEEN THE PROBLEM OF THIS? THANK YOU.

回答 (2 件)

Kan-Hua
Kan-Hua 2013 年 12 月 7 日
I would suggest you add a "else" statement in your first "if" block. It may be that your RGB components of the image you loaded does not match any of the if-condiations in your block, and thus your H is not assigned to any value.
For example:
if (R == G) & (R == B)
H = 0;
elseif (R >= G) & (R >= B)
H = hue_one;
elseif (G >= R) & (G >= B)
H = hue_two;
elseif (B >= R) & (B >= G)
H = hue_three;
else
H=0; %or whatever
end
Hope this helps. :)

Wayne King
Wayne King 2013 年 12 月 7 日
What do you expect these comparisons to yield:
if (R == G) & (R == B)
H = 0;
elseif (R >= G) & (R >= B)
H = hue_one;
elseif (G >= R) & (G >= B)
H = hue_two;
elseif (B >= R) & (B >= G)
H = hue_three;
end
If these are false for any element of these matrices (very, very likely), then H is not assigned anything.

カテゴリ

Help Center および File ExchangeComputer Vision with Simulink についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by