본문 바로가기

JSP환경에서 OpenCV없는 컬러영상처리

RGB-->HSV, HSV-->RGB

//RGB-->HSV 
public float[] rgb2hsv(float r, float g, float b) {

	
	float max1 = Math.max(r,g);
	float max2 = Math.max(g,b);
	float max = Math.max(max1,max2);
	
	float min1 = Math.min(r,g);
	float min2 = Math.min(g,b);
	float min = Math.min(min1, min2);
	
	float d = max - min; //Delta RGB value
 
	float h=0, s;
	float v = max / 255;
	
	if (max==0)
		 s = 0;
	else
		 s = d/max;
	   
	
	if(max==min){
		h = 0;
		}

	else if(max==r){
		h = (g - b) + d * (g < b ? 6: 0); h /= 6 * d;
	}
	else if(max==g){
		h = (b - r) + d * 2; h /= 6 * d;
	}
	else{
		h = (r - g) + d * 4; h /= 6 * d;
	}
	
								 
	hsv[0] = (float)(h);
	hsv[1] = (float)(s);
	hsv[2] = (float)(v);
	
	return hsv;
	}

//HSV-->RGB
public float[] hsv2rgb(float h, float s, float v)
{
	float r=0, g=0, b=0, f, p, q, t;
	 
	 h=h*360; s=s*100; v=v*100;
	 
     h = Math.max(0, Math.min(360, h));
     s = Math.max(0, Math.min(100, s));
     v = Math.max(0, Math.min(100, v));
        
     	
     h /= 360;   s /= 100;     v /= 100;

     int i = (int) Math.floor(h * 6);
     f = h * 6 - i;
     p = v * (1 - s);
     q = v * (1 - f * s);
     t = v * (1 - (1 - f) * s);
          

     if(i%6==0){
    	 r = v; g = t; b = p;
     }     
     else if(i%6==1){
    	 r = q; g = v; b = p;
     }
     else if(i%6==2){
    	 r = p; g = v; b = t;
     }
     else if(i%6==3){
    	 r = p; g = q; b = v;
     }
     else if(i%6==4){
    	 r = t; g = p; b = v;
     }
     else if(i%6==5){
    	 r = v; g = p; b = q;
     }
     


    
  	rgb[0] = (float) r*255;
  	rgb[1] = (float) g*255;
  	rgb[2] = (float) b*255;


	
    return rgb;
}

'JSP환경에서 OpenCV없는 컬러영상처리' 카테고리의 다른 글

히스토그램처리  (0) 2022.09.29
화소영역처리  (0) 2022.09.29
기하학처리  (0) 2022.09.29
화소점처리  (0) 2022.09.29
JSP에서 이미지 받아오기  (0) 2022.09.29