比较图片相似度、RGB色值格式并且查询出相似度

要做一个关于图片搜索并且显示的功能,所以把代码记录下来,准备以后可以参考

//判断色值的出现次数,并且储存
	private static HashMap GetRGBMap(BufferedImage bufferedImage)
	{
		HashMap map=new HashMap();
		for(int x=0;x即是相似程度
	public static float CompareImage(BufferedImage bufferedImage1, BufferedImage bufferedImage2) 
	{
		HashMap RGBMap1=GetRGBMap(bufferedImage1);
		HashMap RGBMap2=GetRGBMap(bufferedImage2);
		//相似度
		float Similarity=0;    //第一张与第二张相似程度
		
		//将两个hashMap视作特征向量进行归一化
		RGBMap1=VectorNormalizing(RGBMap1);
		RGBMap2=VectorNormalizing(RGBMap2);
		
		//向量点积得到相似度
		for(Object i:RGBMap1.keySet())
		{
			double Value2;
			if(RGBMap2.get(i)==null)
			{
			  Value2=0;
			  
			}else
			{
			  Value2 = (double) RGBMap2.get(i);
			  double Value1=(double) RGBMap1.get(i);
			  Similarity+=Value1*Value2;

			}
		}
		return Similarity*100;
	}

	/*计算相似程度并且输出相似度*/
	public static String ImageSerach(String Imagepath_one,String Imagepath_two)
	{
		float sum = 0;
		try {
			BufferedImage image1 = ImageIO.read(new FileInputStream(Imagepath_one));
			BufferedImage image2 = ImageIO.read(new FileInputStream(Imagepath_two));
			HashMap hm1 = GetRGBMap(image1);
			HashMap one = VectorNormalizing(hm1);
			sum = CompareImage(image1,image2);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return "\n--------------RGB比较:\n["+Imagepath_two+"] \n["+Imagepath_one+"] \n 比较结果:"+sum;
		
	}

 

比较图像以及结果:

比较图片相似度、RGB色值格式并且查询出相似度_第1张图片

你可能感兴趣的:(比较图片相似度、RGB色值格式并且查询出相似度)