Difference between adaptive thresholding and normal thresholding in opencv

I have this gray video stream:

The histogram of this image:

The thresholded image by :

  threshold( image, image, 150, 255, CV_THRESH_BINARY );

i get :

Which i expect.

When i do adaptive thresholding with :

adaptiveThreshold(image, image,255,ADAPTIVE_THRESH_GAUSSIAN_C, CV_THRESH_BINARY,15,-5);

i get :

Which looks like edge detection and not thresholding. What i expected was black and white areas . So my question is, why does this look like edge detection and not thresholding.

thx in advance

Answers


Adaptive Threshold works like this:

The function transforms a grayscale image to a binary image according to the formulas:

    THRESH_BINARY

    THRESH_BINARY_INV

where T(x,y) is a threshold calculated individually for each pixel.

Threshold works differently:

The function applies fixed-level thresholding to a single-channel array.

So it sounds like adaptiveThreshold calculates a threshold pixel-by-pixel, whereas threshold calculates it for the whole image -- it measures the whole image by one ruler, whereas the other makes a new "ruler" for each pixel.


Need Your Help


About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.