I16 Answer


void streakMaximum( image img )
{
  int r, c, pixA, pixB, pixC, pixD, max, avg ;

  for ( r = 0; r<img.nrows; r++ )
    for ( c = 0; c<img.ncols-3; c++ )
    {
      pixA = getPixel( img, r, c );
      pixB = getPixel( img, r, c+1 );
      pixC = getPixel( img, r, c+2 );
      pixD = getPixel( img, r, c+3 );

      if ( pixA > pixB && pixA > pixC && pixA > pixD ) max = pixA;
      if ( pixB > pixC && pixB > pixD ) max = pixB;
      if ( pixC > pixD  ) max = pixC; else max = pixD;

      setPixel( img, r, c, (unsigned char)max );
    }
}

Comments: Notice how the maximum is computed in just a few statements. There is no need to perform a sort.


back