Returns the median of the pixel's values.
{
std::vector<unsigned char> unrolled;
for (int i = 0; i < ROI.cols; i++ )
for( int j = 0; j < ROI.rows; j++)
unrolled.push_back( ROI.at<unsigned char>(i, j) );
std::sort( unrolled.begin(), unrolled.end() );
if ( unrolled.size() % 2 != 0)
{
return ceil( unrolled.at( (unrolled.size() -1 ) / 2) );
}
else
{
double mean = unrolled.at( unrolled.size() / 2 ) + unrolled.at( (unrolled.size() / 2 ) - 1 );
mean /= 2;
return ceil(mean);
}
}