Example #1
0
cv::Mat Histogram1D::stretch(const cv::Mat &image, int minValue){
	cv::MatND hist = getHistogram(image);
	int imin = 0;
	for( ; imin < m_histSize[0]; imin++){
		//std::cout << hist.at<float>(imin) << std::endl;
		if( hist.at<float>(imin) > minValue )
			break;
	}
	int imax = m_histSize[0] - 1;
	for( ; imax >= 0; imax-- ){
		if(hist.at<float>(imax) > minValue )
			break;
	}

	int dim(256);
	cv::Mat lookup(1, 
					&dim, 
					CV_8U
					);
	for(int i = 0; i < 256; i++){
		if( i < imin ) lookup.at<uchar>(i) = 0;
		else if ( i > imax ) lookup.at<uchar>(i) = 255;
		else lookup.at<uchar>(i) = static_cast<uchar>(
											255.0*(i - imin)/ (imax-imin) + 0.5);

	}
	cv::Mat result;
	result = applyLookUp(image, lookup);
	return result;
}
 cv::Mat Processor::invertColors(const cv::Mat& image){
	 int dim(256);
	 cv::Mat lut( 1 , &dim , CV_8U);
	 for ( int i = 0 ; i < 256 ; i++ )
		 lut.at<uchar>(i) = 255 - i;

	 return applyLookUp(image , lut);
 }
//--------------------------------------------------------------------------------------------------
//
cv::Mat
Histogram1D::stretch( const cv::Mat& image, int32_t minValue )
{
	// Compute histogram first
	cv::MatND hist = getHistogram( image );

	// find left extremity of the histogram
	int imin = 0;

	for( ; imin < histSize_[0]; imin++ )
	{
		std::cout << hist.at< float >( imin ) << std::endl;

		if( hist.at< float >( imin ) > minValue )
		{
			break;
		}
	}

	// find right extremity of the histogram
	int imax = histSize_[0] - 1;
	for( ; imax >= 0; imax-- )
	{
		if( hist.at< float >( imax ) > minValue )
		{
			break;
		}
	}

	// Create lookup table
	int dims[1] = { 256 };
	cv::MatND lookup( 1, dims, CV_8U );

	for( int i = 0; i < 256; ++i )
	{
		if( i < imin )
		{
			lookup.at< uchar >( i ) = 0;
		}
		else if( i > imax )
		{
			lookup.at< uchar >( i ) = 255;
		}
		else
		{
			lookup.at< uchar >( i ) = static_cast<uchar>( 255.0 * (i - imin) /
			                                              (imax - imin) + 0.5 );
		}
	}

	// Apply lookup table
	cv::Mat result;
	result = applyLookUp( image, lookup );

	return result;
}