original_string: public function analyse()
      {
          $result = [];
          $w = $this->w = imagesx($this->oImg);
          $h = $this->h = imagesy($this->oImg);
  
          $this->od = new \SplFixedArray ($h * $w * 3);
          $this->aSample = new \SplFixedArray ($h * $w);
          for ($y = 0; $y < $h; $y++)
          {
              for ($x = 0; $x < $w; $x++)
              {
                  $p = ($y) * $this->w * 3 + ($x) * 3;
                  $aRgb = $this->getRgbColorAt($x, $y);
                  $this->od [$p + 1] = $this->edgeDetect($x, $y, $w, $h);
                  $this->od [$p] = $this->skinDetect($aRgb [0], $aRgb [1], $aRgb [2], $this->sample($x, $y));
                  $this->od [$p + 2] = $this->saturationDetect($aRgb [0], $aRgb [1], $aRgb [2], $this->sample($x, $y));
              }
          }
  
          $scoreOutput = $this->downSample($this->options ['scoreDownSample']);
          $topScore = -INF;
          $topCrop = null;
          $crops = $this->generateCrops();
  
          foreach ($crops as &$crop)
          {
              $crop ['score'] = $this->score($scoreOutput, $crop);
              if ($crop ['score'] ['total'] > $topScore)
              {
                  $topCrop = $crop;
                  $topScore = $crop ['score'] ['total'];
              }
          }
  
          $result ['topCrop'] = $topCrop;
  
          if ($this->options ['debug'] && $topCrop)
          {
              $result ['crops'] = $crops;
              $result ['debugOutput'] = $scoreOutput;
              $result ['debugOptions'] = $this->options;
              $result ['debugTopCrop'] = array_merge([], $result ['topCrop']);
          }
  
          return $result;
      }
code: public function analyse()
      {
          $result = [];
          $w = $this->w = imagesx($this->oImg);
          $h = $this->h = imagesy($this->oImg);
  
          $this->od = new \SplFixedArray ($h * $w * 3);
          $this->aSample = new \SplFixedArray ($h * $w);
          for ($y = 0; $y < $h; $y++)
          {
              for ($x = 0; $x < $w; $x++)
              {
                  $p = ($y) * $this->w * 3 + ($x) * 3;
                  $aRgb = $this->getRgbColorAt($x, $y);
                  $this->od [$p + 1] = $this->edgeDetect($x, $y, $w, $h);
                  $this->od [$p] = $this->skinDetect($aRgb [0], $aRgb [1], $aRgb [2], $this->sample($x, $y));
                  $this->od [$p + 2] = $this->saturationDetect($aRgb [0], $aRgb [1], $aRgb [2], $this->sample($x, $y));
              }
          }
  
          $scoreOutput = $this->downSample($this->options ['scoreDownSample']);
          $topScore = -INF;
          $topCrop = null;
          $crops = $this->generateCrops();
  
          foreach ($crops as &$crop)
          {
              $crop ['score'] = $this->score($scoreOutput, $crop);
              if ($crop ['score'] ['total'] > $topScore)
              {
                  $topCrop = $crop;
                  $topScore = $crop ['score'] ['total'];
              }
          }
  
          $result ['topCrop'] = $topCrop;
  
          if ($this->options ['debug'] && $topCrop)
          {
              $result ['crops'] = $crops;
              $result ['debugOutput'] = $scoreOutput;
              $result ['debugOptions'] = $this->options;
              $result ['debugTopCrop'] = array_merge([], $result ['topCrop']);
          }
  
          return $result;
      }
code_tokens: public function analyse ( ) { $ result = [ ] ; $ w = $ this -> w = imagesx ( $ this -> oImg ) ; $ h = $ this -> h = imagesy ( $ this -> oImg ) ; $ this -> od = new \ SplFixedArray ( $ h * $ w * 3 ) ; $ this -> aSample = new \ SplFixedArray ( $ h * $ w ) ; for ( $ y = 0 ; $ y < $ h ; $ y ++ ) { for ( $ x = 0 ; $ x < $ w ; $ x ++ ) { $ p = ( $ y ) * $ this -> w * 3 + ( $ x ) * 3 ; $ aRgb = $ this -> getRgbColorAt ( $ x , $ y ) ; $ this -> od [ $ p + 1 ] = $ this -> edgeDetect ( $ x , $ y , $ w , $ h ) ; $ this -> od [ $ p ] = $ this -> skinDetect ( $ aRgb [ 0 ] , $ aRgb [ 1 ] , $ aRgb [ 2 ] , $ this -> sample ( $ x , $ y ) ) ; $ this -> od [ $ p + 2 ] = $ this -> saturationDetect ( $ aRgb [ 0 ] , $ aRgb [ 1 ] , $ aRgb [ 2 ] , $ this -> sample ( $ x , $ y ) ) ; } } $ scoreOutput = $ this -> downSample ( $ this -> options [ 'scoreDownSample' ] ) ; $ topScore = - INF ; $ topCrop = null ; $ crops = $ this -> generateCrops ( ) ; foreach ( $ crops as & $ crop ) { $ crop [ 'score' ] = $ this -> score ( $ scoreOutput , $ crop ) ; if ( $ crop [ 'score' ] [ 'total' ] > $ topScore ) { $ topCrop = $ crop ; $ topScore = $ crop [ 'score' ] [ 'total' ] ; } } $ result [ 'topCrop' ] = $ topCrop ; if ( $ this -> options [ 'debug' ] && $ topCrop ) { $ result [ 'crops' ] = $ crops ; $ result [ 'debugOutput' ] = $ scoreOutput ; $ result [ 'debugOptions' ] = $ this -> options ; $ result [ 'debugTopCrop' ] = array_merge ( [ ] , $ result [ 'topCrop' ] ) ; } return $ result ; }
docstring: Analyse the image, find out the optimal crop scheme
  
  @return array
docstring_tokens: Analyse the image find out the optimal crop scheme