您的位置:首页 > 编程语言 > Java开发

利用空间距离比较两张图片颜色的相似度

2017-02-25 10:24 246 查看
在图像处理中,图像模式一般有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 = ImageIO.read(file);
} catch (Exception e) {
e.printStackTrace();
}
int width = bi.getWidth();
int height = bi.getHeight();
int minx = bi.getMinX();
int miny = bi.getMinY();
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 = bi.getRGB(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) (Math.pow((red1-avgr), 2)+Math.pow((green1-avgg), 2)+Math.pow((blue1-avgb), 2));
spacelength = Math.sqrt(space);
}
public static void sop(Object obj)// 输出
{
System.out.println(obj);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java 空间距离 rgb