图片 HOG 相关性

图片 HOG  相关性

问题:

Key: Faces_0001.jpg: Value: 1:1:1:0:0:0:0:0:0:1

Key: Faces_0002.jpg: Value: 0:0:0:1:3:4:0:0:0:0
Key: Faces_0003.jpg: Value: 0:0:0:0:0:0:2:3:1:0
Key: Faces_0004.jpg: Value: 1:1:0:1:0:0:0:0:0:0
Key: Faces_0005.jpg: Value: 0:0:0:2:2:0:1:0:0:0
Key: Faces_0006.jpg: Value: 0:1:0:2:0:0:1:0:0:0


假如就10个HOG,10个特征词典的比率,如何来求取这几张图的相关性,输出Faces_0001.jpg-Faces_0004.jpg   Faces_0001.jpg-Faces_0006.jpg  
相关性【并按照图片Faces_0001.jpg的特征比率比如第一个直方图的比率为0.25.第二个直方图0.25,第三个0.25,第十个0.25但是和图片Faces_0004.jpg有两个相似就是0.5  

 与Faces_0006.jpg就只占0.25,就按大小排序从Faces_0004.jpg  Faces_0006.jpg....来输出】

实现第一步:

[java]  view plain copy
  1. import java.io.BufferedReader;  
  2. import java.io.FileReader;  
  3. import java.text.DecimalFormat;  
  4. import java.util.ArrayList;  
  5. import java.util.TreeMap;  
  6. public class connecttion_of_Accuracy {  
  7.     /* 
  8.      * ********** 实现关系(对应):一个属性:图片1-所占比率 - -图片2-所占比率*********** 
  9.      */  
  10.     public static String normalization(String[] a, int m) {  
  11.         String b;  
  12.         int sum = 0;  
  13.         for (int j = 3; j < a.length; j++) {  
  14.             // 一定记住j不能为0,因为其前面几个值是字符串  
  15.             sum += Integer.parseInt(a[j]);  
  16.   
  17.         }  
  18.         // System.out.println(sum);  
  19.         int k = Integer.parseInt(a[m]);  
  20.         DecimalFormat df2 = new DecimalFormat("0.00000");  
  21.         b = df2.format((double) k / sum);  
  22.         return b;  
  23.     }  
  24.   
  25.     public static void main(String[] args) throws Exception {  
  26.         String a = "0";  
  27.         BufferedReader reader = new BufferedReader(new FileReader(  
  28.                 "D:\\0325.txt"));// 待求精度的分类结果  
  29.         String line = reader.readLine();  
  30.         while (line != null) {  
  31.             String[] list = null;  
  32.             String t1 = line.replace(" """);  
  33.             list = t1.split(":");  
  34.             // float accuracy1= 0;  
  35.             TreeMap<String, Integer> map = new TreeMap<String, Integer>();  
  36.   
  37.             for (int i = 3; i < list.length; i++) {  
  38.                 if (!list[i].equals(a)) {  
  39.   
  40.                     BufferedReader reader1 = new BufferedReader(new FileReader(  
  41.                             "D:\\0325.txt"));  
  42.                     String line1 = reader1.readLine();  
  43.                     while (line1 != null) {  
  44.                         ArrayList al = new ArrayList();  
  45.                         String[] list2 = null;  
  46.                         String t2 = line1.replace(" """);  
  47.                         list2 = t2.split(":");  
  48.                         // 下一行赋值给list2;  
  49.   
  50.                         if (!list2[1].equals(list[1])) {  
  51.   
  52.                             if (!list2[i].equals(a)) {  
  53.                                 System.out.println(list[1] + " - "  
  54.                                         + normalization(list, i) + " - "  
  55.                                         + list2[1] + " - "  
  56.                                         + normalization(list2, i));  
  57.                                 // int k = Integer.parseInt(list[i]);  
  58.                                 // System.out.println(k);  
  59.                                 // System.out.println(normalization(list,i));  
  60.   
  61.                             }  
  62.                         }  
  63.                         line1 = reader1.readLine();  
  64.                     }  
  65.                     reader1.close();  
  66.                 }  
  67.   
  68.             }  
  69.             line = reader.readLine();  
  70.         }  
  71.         reader.close();  
  72.     }  
  73.   
  74. }  

输出结果:

[java]  view plain copy
  1. Faces_0001.jpg - 0.25000 - Faces_0004.jpg - 0.33333  
  2. Faces_0001.jpg - 0.25000 - Faces_0004.jpg - 0.33333  
  3. Faces_0001.jpg - 0.25000 - Faces_0006.jpg - 0.25000  
  4. Faces_0002.jpg - 0.12500 - Faces_0004.jpg - 0.33333  
  5. Faces_0002.jpg - 0.12500 - Faces_0005.jpg - 0.40000  
  6. Faces_0002.jpg - 0.12500 - Faces_0006.jpg - 0.50000  
  7. Faces_0002.jpg - 0.37500 - Faces_0005.jpg - 0.40000  
  8. Faces_0003.jpg - 0.33333 - Faces_0005.jpg - 0.20000  
  9. Faces_0003.jpg - 0.33333 - Faces_0006.jpg - 0.25000  
  10. Faces_0004.jpg - 0.33333 - Faces_0001.jpg - 0.25000  
  11. Faces_0004.jpg - 0.33333 - Faces_0001.jpg - 0.25000  
  12. Faces_0004.jpg - 0.33333 - Faces_0006.jpg - 0.25000  
  13. Faces_0004.jpg - 0.33333 - Faces_0002.jpg - 0.12500  
  14. Faces_0004.jpg - 0.33333 - Faces_0005.jpg - 0.40000  
  15. Faces_0004.jpg - 0.33333 - Faces_0006.jpg - 0.50000  
  16. Faces_0005.jpg - 0.40000 - Faces_0002.jpg - 0.12500  
  17. Faces_0005.jpg - 0.40000 - Faces_0004.jpg - 0.33333  
  18. Faces_0005.jpg - 0.40000 - Faces_0006.jpg - 0.50000  
  19. Faces_0005.jpg - 0.40000 - Faces_0002.jpg - 0.37500  
  20. Faces_0005.jpg - 0.20000 - Faces_0003.jpg - 0.33333  
  21. Faces_0005.jpg - 0.20000 - Faces_0006.jpg - 0.25000  
  22. Faces_0006.jpg - 0.25000 - Faces_0001.jpg - 0.25000  
  23. Faces_0006.jpg - 0.25000 - Faces_0004.jpg - 0.33333  
  24. Faces_0006.jpg - 0.50000 - Faces_0002.jpg - 0.12500  
  25. Faces_0006.jpg - 0.50000 - Faces_0004.jpg - 0.33333  
  26. Faces_0006.jpg - 0.50000 - Faces_0005.jpg - 0.40000  
  27. Faces_0006.jpg - 0.25000 - Faces_0003.jpg - 0.33333  
  28. Faces_0006.jpg - 0.25000 - Faces_0005.jpg - 0.20000  

进一步结果:

*****************************实现关系:图片几个属性之和:图片1- 图片2-     图片1-所占的所有比率之和***********************
***********************************************图片2- 图片1-     图片2-所占的所有比率之和**********************

[java]  view plain copy
  1. import java.io.BufferedReader;  
  2. import java.io.FileReader;  
  3. import java.text.DecimalFormat;  
  4. import java.util.ArrayList;  
  5. import java.util.Map.Entry;  
  6. import java.util.Set;  
  7. import java.util.TreeMap;  
  8. public class connecttion_of_Accuracy {  
  9.     /* 
  10. *****************************实现关系:图片几个属性之和:图片1- 图片2-     图片1-所占的所有比率之和*********************** 
  11. ***********************************************图片2- 图片1-     图片2-所占的所有比率之和********************** 
  12.  
  13.      */  
  14.     public static String normalization(String[] a, int m) {  
  15.         String b;  
  16.         int sum = 0;  
  17.         for (int j = 3; j < a.length; j++) {  
  18.             // 一定记住j不能为0,因为其前面几个值是字符串  
  19.             sum += Integer.parseInt(a[j]);  
  20.   
  21.         }  
  22.         // System.out.println(sum);  
  23.         int k = Integer.parseInt(a[m]);  
  24.         DecimalFormat df2 = new DecimalFormat("0.00000");  
  25.         b = df2.format((double) k / sum);  
  26.         return b;  
  27.     }  
  28.   
  29.     public static void main(String[] args) throws Exception {  
  30.         String a = "0";  
  31.         BufferedReader reader = new BufferedReader(new FileReader(  
  32.                 "D:\\0325.txt"));// 待求精度的分类结果  
  33.         String line = reader.readLine();  
  34.         while (line != null) {  
  35.             String[] list = null;  
  36.             String t1 = line.replace(" """);  
  37.             list = t1.split(":");  
  38.             // float accuracy1= 0;  
  39.             TreeMap<String, Double> map = new TreeMap<String, Double>();  
  40.   
  41.             for (int i = 3; i < list.length; i++) {  
  42.                 if (!list[i].equals(a)) {  
  43.                     // 數字不為0  
  44.                     BufferedReader reader1 = new BufferedReader(new FileReader(  
  45.                             "D:\\0325.txt"));  
  46.                     String line1 = reader1.readLine();  
  47.                     while (line1 != null) {  
  48.                         ArrayList al = new ArrayList();  
  49.                         String[] list2 = null;  
  50.                         String t2 = line1.replace(" """);  
  51.                         list2 = t2.split(":");  
  52.                         // 下一行赋值给list2;  
  53.   
  54.                         if (!list2[1].equals(list[1])) {  
  55.   
  56.                             if (!list2[i].equals(a)) {  
  57.                                 System.out.println(list[1] + " - "  
  58.                                         + normalization(list, i) + " - "  
  59.                                         + list2[1] + " - "  
  60.                                         + normalization(list2, i));  
  61.                                 // int k = Integer.parseInt(list[i]);  
  62.                                 // System.out.println(k);  
  63.                                 // System.out.println(normalization(list,i));  
  64.                                 if (map.containsKey(list[1] + "-" + list2[1])) {  
  65.                                     Double value = (Double) map.get(list[1]  
  66.                                             + "-" + list2[1]);// 谨记这个是double类型的东西  
  67.                                     map.put(list[1] + "-" + list2[1],  
  68.                                             value  
  69.                                                     + Double.parseDouble(normalization(  
  70.                                                             list, i)));  
  71.                                     // 以前加入过这个字符串 则加上这个规格化的东西  
  72.                                 } else  
  73.                                     // 没 加过这个字符串 则加进去  
  74.                                     // map.put(a[i],  
  75.                                     // Integer.parseInt(normalization(a,i)));  
  76.                                     map.put(list[1] + "-" + list2[1],  
  77.                                             Double.parseDouble(normalization(  
  78.                                                     list, i)));  
  79.   
  80.                             }  
  81.                         }  
  82.                         line1 = reader1.readLine();  
  83.                     }  
  84.                     reader1.close();  
  85.                 }  
  86.   
  87.             }  
  88.             Set<Entry<String, Double>> entrySet = map.entrySet();  
  89.             ArrayList list2 = new ArrayList();  
  90.             for (Entry<String, Double> entry : entrySet) {  
  91.                 System.out.println(entry.getKey() + "\t" + entry.getValue());  
  92.                 // 全部字符串以<1,name>格式输出,并未进行统计;  
  93.                 list2.add(entry.getValue());  
  94.             }  
  95.   
  96.             line = reader.readLine(); // 讀取下一行  
  97.         }  
  98.         reader.close();  
  99.     }  
  100.   
  101. }  

结果:

[html]  view plain copy
  1. Faces_0001.jpg-Faces_0004.jpg   0.5  
  2. Faces_0001.jpg-Faces_0006.jpg   0.25  
  3. Faces_0002.jpg-Faces_0004.jpg   0.125  
  4. Faces_0002.jpg-Faces_0005.jpg   0.5  
  5. Faces_0002.jpg-Faces_0006.jpg   0.125  
  6. Faces_0003.jpg-Faces_0005.jpg   0.33333  
  7. Faces_0003.jpg-Faces_0006.jpg   0.33333  
  8. Faces_0004.jpg-Faces_0001.jpg   0.66666  
  9. Faces_0004.jpg-Faces_0002.jpg   0.33333  
  10. Faces_0004.jpg-Faces_0005.jpg   0.33333  
  11. Faces_0004.jpg-Faces_0006.jpg   0.66666  
  12. Faces_0005.jpg-Faces_0002.jpg   0.8  
  13. Faces_0005.jpg-Faces_0003.jpg   0.2  
  14. Faces_0005.jpg-Faces_0004.jpg   0.4  
  15. Faces_0005.jpg-Faces_0006.jpg   0.6000000000000001  
  16. Faces_0006.jpg-Faces_0001.jpg   0.25  
  17. Faces_0006.jpg-Faces_0002.jpg   0.5  
  18. Faces_0006.jpg-Faces_0003.jpg   0.25  
  19. Faces_0006.jpg-Faces_0004.jpg   0.75  
  20. Faces_0006.jpg-Faces_0005.jpg   0.75  

你可能感兴趣的:(图片,HOG)