views:

470

answers:

3

Is there a way in Java or OpenCv ; preferably Java, that i can have an HSV histogram give RGB image.

I tried exploring JAI but it creates histogram for RGB image. Thanks Harshit

+1  A: 

Here is the pseudocode for a simple RGB to HSV converter. It will give a H of UNDEFINED if the color is a shade of gray, otherwise H is between 0 and 6.

x = min(R, G, B);
V = max(R, G, B);
if (V == x) {
  H = UNDEFINED
  S = 0
}
else {
  if( R == x ) {
    f = G - B;
    i = 3;
  } else if( G == x ) {
    f = B - R;
    i = 5;
  } else {
    f = R - G;
    i = 1;
  }
  H = i - f /(V - x);
  S = (V - x)/V;
}

Now you can either convert all your pixels and bin them to construct your HSV histogram, or you can convert each bin of your RGB histogram to an HSV bin.

Philippe Beaudoin
+1  A: 

firs use cv::cvtColor to convert RGB to HSV then use cv::calcHist to compute the histogram

Yogi
A: 

You can use the "JavaCV" library to access OpenCV functions directly from Java:

http://code.google.com/p/javacv/

Then you can use my code for RGB to HSV that is better than OpenCV's cvConvert function: http://www.shervinemami.co.cc/colorConversion.html

Cheers,

Shervin Emami.

Shervin Emami