在图像处理中,图像模式一般有RGB模式和HSI模式。前者将色彩分为red、green、blue三种颜色,通过各个分量的值来比较颜色,但是需要注意的是,计算rgb分量需要算出一张图片的像素点,取平均得到rgb的平均值,这种颜色比较简单,但是不能真实地反映两张图像的颜色的相似性,因此,需要用空间距离来比较。
/*
* 利用空间距离比较rgb
* */
public void space(String Image){
float[] rgb = new float[3];
File file = new File(Image);
BufferedImage bi = null;
try {
bi = (file);
} catch (Exception e) {
();
}
int width = ();
int height = ();
int minx = ();
int miny = ();
int R = 0;
int red = 0;
int green = 0;
int blue = 0;
for (int i = minx; i < width; i++) {
for (int j = miny; j < height; j++) {
int pixel = (i, j);
rgb[0] = (pixel & 0xff0000) >> 16;
rgb[1] = (pixel & 0xff00) >> 8;
rgb[2] = (pixel & 0xff);
red += rgb[0];
green += rgb[1];
blue += rgb[2];
R = i * j;
}
}
float red1 = red / R;
float green1 = green / R;
float blue1 = blue / R;
double space = (float) (((red1-avgr), 2)+((green1-avgg), 2)+((blue1-avgb), 2));
spacelength = (space);
}
public static void sop(Object obj)// 输出
{
(obj);
}