Guest User

Untitled

a guest
Jan 5th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.73 KB | None | 0 0
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5.  
  6. package Bildeanalyse;
  7.  
  8. import java.util.ArrayList;
  9. import java.math.*;
  10.  
  11. /**
  12. *
  13. * @author Eirik
  14. */
  15. public class ObjectCenter {
  16. public static int[] arealAndcenter(int[][] img){
  17. //Bildets bredde og høyde
  18. int width = img.length;
  19. int height = img[0].length;
  20.  
  21.  
  22. double avstandNede;
  23. double avstandOppe;
  24. double avstandHøgre;
  25. double avstandVenstre;
  26.  
  27. //Oppretter en liste som inneholder objektets breddeposisjon
  28. ArrayList<Integer> listBredde1 = new ArrayList<Integer>();
  29. ArrayList<Integer> listHøgde1 = new ArrayList<Integer>();
  30. ArrayList<Integer> listBredde2 = new ArrayList<Integer>();
  31. ArrayList<Integer> listHøgde2 = new ArrayList<Integer>();
  32. ArrayList<Integer> listBredde3 = new ArrayList<Integer>();
  33. ArrayList<Integer> listHøgde3 = new ArrayList<Integer>();
  34. ArrayList<Integer> listBredde4 = new ArrayList<Integer>();
  35. ArrayList<Integer> listHøgde4 = new ArrayList<Integer>();
  36. for (int i = 0; i < width; i++) {
  37. for (int j = 0; j < height; j++) {
  38. if(img[i][j]==1){
  39. listBredde1.add(i);
  40. listHøgde1.add(j);
  41. }
  42. else if(img[i][j] == 2)
  43. {
  44. listBredde2.add(i);
  45. listHøgde2.add(j);
  46. }
  47. else if(img[i][j] == 3)
  48. {
  49. listBredde3.add(i);
  50. listHøgde3.add(j);
  51. }
  52. else if(img[i][j] == 4)
  53. {
  54. listBredde4.add(i);
  55. listHøgde4.add(j);
  56. }
  57. }
  58. }
  59.  
  60.  
  61. //Et array opprettes slik at både areal og senter kan returneres
  62. int[] array = new int[2];
  63. //sjekker om det ligger et objekt i bildet, ellers returneres verdien 0
  64. if(!listBredde1.isEmpty() && !listHøgde1.isEmpty() && !listBredde2.isEmpty() && !listHøgde2.isEmpty() && !listBredde3.isEmpty() && !listHøgde3.isEmpty() && !listBredde4.isEmpty() && !listHøgde4.isEmpty()){
  65. //Arealet blir Arraylistens størrelse
  66. int areal1 = listBredde1.size();
  67. int areal2 = listBredde2.size();
  68. int areal3 = listBredde3.size();
  69. int areal4 = listBredde4.size();
  70.  
  71. //Senter finnes ved å dele objektets mål i bredden på to
  72. int centerx1 = (listBredde1.get(areal1-1)+listBredde1.get(0))/2;
  73. int centery1 = (listHøgde1.get(areal1-1)+listHøgde1.get(0))/2;
  74.  
  75. int centerx2 = (listBredde2.get(areal2-1)+listBredde2.get(0))/2;
  76. int centery2 = (listHøgde2.get(areal2-1)+listHøgde2.get(0))/2;
  77.  
  78. int centerx3 = (listBredde3.get(areal3-1)+listBredde3.get(0))/2;
  79. int centery3 = (listHøgde3.get(areal3-1)+listHøgde3.get(0))/2;
  80.  
  81. int centerx4 = (listBredde4.get(areal4-1)+listBredde4.get(0))/2;
  82. int centery4 = (listHøgde4.get(areal4-1)+listHøgde4.get(0))/2;
  83.  
  84. avstandVenstre = Math.sqrt(Math.pow((centerx2 - centerx1), 2) + Math.pow((centery2 - centery1),2));
  85. avstandHøgre = Math.sqrt(Math.pow((centerx4 - centerx3), 2) + Math.pow((centery3 - centery4),2));
  86.  
  87. if (centery1 <= centery2)
  88. {
  89. // double høgdeVenstre = Math.sqrt(Math.pow((centerx2 - centerx1), 2) + Math.pow((centery2 - centery1),2));
  90. // double høgdeHøgre = Math.sqrt(Math.pow((centerx4 - centerx3), 2) + Math.pow((centery3 - centery4),2));
  91.  
  92. if (centery3 <= centery4)
  93. {
  94. avstandOppe = Math.sqrt(Math.pow((centerx3 - centerx1), 2) + Math.pow((centery3 - centery1),2));
  95. avstandNede = Math.sqrt(Math.pow((centerx4 - centerx2), 2) + Math.pow((centery4 - centery2),2));
  96. }
  97. else
  98. {
  99. avstandOppe = Math.sqrt(Math.pow((centerx4 - centerx1), 2) + Math.pow((centery4 - centery1),2));
  100. avstandNede = Math.sqrt(Math.pow((centerx3 - centerx2), 2) + Math.pow((centery3 - centery2),2));
  101. }
  102. }
  103. else
  104. {
  105. // double høgdeVenstre = Math.sqrt(Math.pow((centerx1 - centerx2), 2) + Math.pow((centery1 - centery2),2));
  106. // double høgdeHøgre = Math.sqrt(Math.pow((centerx4 - centerx3), 2) + Math.pow((centery3 - centery4),2));
  107.  
  108. if (centery3 <= centery4)
  109. {
  110. avstandOppe = Math.sqrt(Math.pow((centerx3 - centerx2), 2) + Math.pow((centery3 - centery2),2));
  111. avstandNede = Math.sqrt(Math.pow((centerx4 - centerx1), 2) + Math.pow((centery4 - centery1),2));
  112. }
  113. else
  114. {
  115. avstandOppe = Math.sqrt(Math.pow((centerx4 - centerx2), 2) + Math.pow((centery4 - centery2),2));
  116. avstandNede = Math.sqrt(Math.pow((centerx3 - centerx1), 2) + Math.pow((centery3 - centery1),2));
  117. }
  118. }
  119.  
  120. //Areal og senter legges i array
  121. // array[0]=areal1;
  122. // array[1]=centerx1;
  123. // array[2]=centery1;
  124.  
  125.  
  126.  
  127. // System.out.println("Pos1: " +centerx1 + centery1);
  128. // System.out.println("Pos2: " +centerx2 + centery2);
  129. // System.out.println("Pos3: " +centerx3 + centery3);
  130. // System.out.println("Pos4: " +centerx4 + centery4);
  131.  
  132. System.out.println("Avstand venstre: " + avstandVenstre);
  133. System.out.println("Avstand høgre: " + avstandHøgre);
  134. System.out.println("Avstand oppe: " + avstandOppe);
  135. System.out.println("Avstand nede: " + avstandNede);
  136.  
  137.  
  138.  
  139. double a = (-16.444444444441*(Math.pow(avstandHøgre, 3)) + 109.19047619046*(Math.pow(avstandHøgre, 2)) + (-243.29365079362*avstandHøgre) + 206.99999999999);
  140. // høgdeHøgre av femtegradsformel;
  141. double b = (avstandNede + avstandOppe)/2;
  142. double c = (-16.444444444441*(Math.pow(avstandVenstre, 3)) + 109.19047619046*(Math.pow(avstandVenstre, 2)) + (-243.29365079362*avstandVenstre) + 206.99999999999);
  143.  
  144. double vinkelA = Math.acos((Math.pow(-a, 2) + Math.pow(b, 2) + Math.pow(c, 2))/2*b*c);
  145. System.out.println("Vinkel: " + vinkelA);
  146.  
  147.  
  148. }
  149. //Returnerer array med areal og senter verdier
  150. return array;
  151. }
  152.  
  153. }
Add Comment
Please, Sign In to add comment