private unsafe void LabelColorPixel( byte* pixel, int labelPointer )
{
if ( ( tempLabels[labelPointer] == 0 ) && (
( pixel[RGB.R] > backgroundThresholdR ) ||
( pixel[RGB.G] > backgroundThresholdG ) ||
( pixel[RGB.B] > backgroundThresholdB ) ) )
{
tempLabels[labelPointer] = objectsCount;
LabelColorPixel( pixel + pixelSize, labelPointer + 1 ); // x + 1, y
LabelColorPixel( pixel + pixelSize + stride, labelPointer + 1 + 2 + imageWidth ); // x + 1, y + 1
LabelColorPixel( pixel + stride, labelPointer + 2 + imageWidth ); // x , y + 1
LabelColorPixel( pixel - pixelSize + stride, labelPointer - 1 + 2 + imageWidth ); // x - 1, y + 1
LabelColorPixel( pixel - pixelSize, labelPointer - 1 ); // x - 1, y
LabelColorPixel( pixel - pixelSize - stride, labelPointer - 1 - 2 - imageWidth ); // x - 1, y - 1
LabelColorPixel( pixel - stride, labelPointer - 2 - imageWidth ); // x , y - 1
LabelColorPixel( pixel + pixelSize - stride, labelPointer + 1 - 2 - imageWidth ); // x + 1, y - 1
}
}
}