//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 |