Witam,

Zacznę od początku by było łatwiej zrozumieć:
mam skrypt który wykonuje różne operacje na obrazie binarnym (czarno-białym) jedną z operacji jakie muszę wykonać to zliczanie białych plam i do tego właśnie ma służyć poniższy skrypt ma on wykonać operacje na tablicy zawierającej współrzędne (x,y) białych pixeli na obrazie i pogrupować je. Ma on znaleźć zaczynając od pierwszej współrzędnej którą przekopiowuje do nowej tablei czy ma przylegających sąsiadów jeśli warunek zostanie spełniony to znaleziony pixel zostaje przypisany do tej nowej tablicy (w założeniu każda nowa tablica to nowa plama białych pixeli) znaleziony w ten sposób pixel jest usuwany z tablicy tak że zmniejszać się powinna zawartość głównej tablicy aż dojdzie do zera. Niestety przechodzi mi to tylko 1 raz i później się zapętla. I już nie wiem co z tym robić.

  1. <?php
  2.  
  3. function checkObj($x,$y) //sprawdza czy podane punkty maja przylegjacych sasiadow
  4. {
  5.  
  6. if ($valueO[0] == $x or $valueO[0] == $x-1 or $valueO[0] == $x+1) 
  7. {
  8. if ($valueO[1] == $y or $valueO[1] == $y-1 or $valueO[1] == $y+1)
  9.  {
  10.  $xy = true;
  11.  }
  12. }
  13.  
  14. if ($xy)
  15. {
  16. return true;
  17. }
  18. else
  19. {
  20. return false;
  21. }
  22.  
  23. } 
  24.  
  25.  
  26. $tablicaPol = Array(
  27. '0' => array('1', '1'),
  28. '1' => array('1', '2'),
  29. '2' => array('1', '3'),
  30. '3' => array('2', '1'),
  31. '4' => array('2', '2'),
  32. '5' => array('2', '3'),
  33. '6' => array('2', '5'),
  34. '7' => array('2', '6'),
  35. '8' => array('3', '5'),
  36. '9' => array('3', '6'),
  37. '10' => array('4', '1'),
  38. '11' => array('4', '2'),
  39. '12' => array('4', '3')
  40. );
  41.  
  42.  
  43.  
  44. $l = 0;
  45. $obiekt[] = array();
  46.  
  47. $ile1 = count($tablicaPol);
  48.  
  49.  
  50. while($ile1 >= 0){ //glowna petla która teoretycznie ma dzialac do puki nie zostanie calkowicie wyczy
    szczona
  51.  
  52.  foreach($tablicaPol as $key => $value) //petla ktra ma przejsc po glownej tablicy
  53. {  //W TYM MOMENCIE SIE ZAPETLA 
  54. if ($key == 0)
  55. {
  56. $val1 = array($value[0], $value[1]);
  57. array_push($obiekt[$l], $val1); //jeśli jest to pierwszy element w tablicy glownej to przezuc go do nowej tablicy 
    tak by był punktem startowym dla nowej
  58. unset($tablicaPol[$key]); // usuniecie pierwszego punktu z tablicy glowej
  59. }
  60.  
  61.  
  62. foreach ($obiekt[$l] as $keyO => $valueO) //petla po nowo utworzonej tablicy
  63. {
  64.  if (checkObj($value[0], $value[1])) //wywolanie funkcji checkObj majacej sprawdzić czy któryś z obiektow w nowej tabli
    cy jest przylegacym sasiadem do punku z pierwszej petli foreach
  65. {
  66.  $val2 = array($value[0], $value[1]);
  67.  array_push($obiekt[$l], $val2); // jeśli funkcja zwrocila true to teoretycznie znalazla pasujące punkty a wiec prz
    ezuca je do nowej tablicy
  68. unset($tablicaPol[$key]); //usowa znalezione punkty z glowej tablicy
  69.  
  70. }
  71.  
  72.  }
  73.  
  74. }
  75.  
  76.  $l++;  
  77.  
  78. }
  79.  
  80. $ile = count($obiekt);
  81.  
  82. print '<br /><br />znaleziono '. $ile.' obiektow';
  83. ?>


wdzięczny będę za wszelką pomoc