static public void inner4(GrayF32 intensity , GrayS8 direction , GrayF32 output )
	{
		final int w = intensity.width;
		final int h = intensity.height-1;

		BoofConcurrency.loopFor(1,h,y->{
			int indexI = intensity.startIndex + y*intensity.stride+1;
			int indexD = direction.startIndex + y*direction.stride+1;
			int indexO = output.startIndex + y*output.stride+1;

			int end = indexI + w - 2;
			for( ; indexI < end; indexI++ , indexD++, indexO++ ) {
				int dir = direction.data[indexD];
				int dx,dy;
				
				if( dir == 0 ) {
					dx = 1; dy = 0;
				} else if( dir == 1 ) {
					dx = 1; dy = 1;
				} else if( dir == 2 ) {
					dx = 0; dy = 1;
				} else {
					dx = 1; dy = -1;
				}

				float middle = intensity.data[indexI];

				// suppress the value if either of its neighboring values are more than or equal to it
				if( intensity.data[indexI-dx-dy*intensity.stride] > middle || intensity.data[indexI+dx+dy*intensity.stride] > middle ) {
					output.data[indexO] = 0;
				} else {
					output.data[indexO] = middle;
				}
			}
		});
	}
static public void inner4 ( GrayF32 intensity , GrayS8 direction , GrayF32 output ) { final int w = intensity . width ; final int h = intensity . height - 1 ; BoofConcurrency . loopFor ( 1 , h , y -> { int indexI = intensity . startIndex + y * intensity . stride + 1 ; int indexD = direction . startIndex + y * direction . stride + 1 ; int indexO = output . startIndex + y * output . stride + 1 ; int end = indexI + w - 2 ; for ( ; indexI < end ; indexI ++ , indexD ++ , indexO ++ ) { int dir = direction . data [ indexD ] ; int dx , dy ; if ( dir == 0 ) { dx = 1 ; dy = 0 ; } else if ( dir == 1 ) { dx = 1 ; dy = 1 ; } else if ( dir == 2 ) { dx = 0 ; dy = 1 ; } else { dx = 1 ; dy = - 1 ; } float middle = intensity . data [ indexI ] ; if ( intensity . data [ indexI - dx - dy * intensity . stride ] > middle || intensity . data [ indexI + dx + dy * intensity . stride ] > middle ) { output . data [ indexO ] = 0 ; } else { output . data [ indexO ] = middle ; } } } ) ; }
Only processes the inner image.  Ignoring the border.