Como usar o OTSU Threshold in opencv?

Eu estava usando um limite fixo, mas acontece que não é tão bom para mim. Então, alguém me contou sobre o limiar do otsu. Como posso usá-lo no meu código? Eu li sobre isso e não entendo muito bem. Alguém poderia me explicar como usá-lo no OpenCV o limiar otsu?

Aqui está o meu código agora:

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main ( int argc, char **argv )
{
   Mat im_gray = imread("img3.jpg",CV_LOAD_IMAGE_GRAYSCALE);

   Mat im_rgb  = imread("img3.jpg");
   cvtColor(im_rgb,im_gray,CV_RGB2GRAY);

   Mat img_bw = im_gray > 115;

   imwrite("img_bw3.jpg", img_bw);

   return 0;
}  

Com isso eu tenho que mudar o limite para qualquer imagem que eu queira converter em binário. Eu achei isto:

cvThreshold(scr, dst, 128, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);

Isso esta certo? Eu não entendo muito bem e, por causa disso, não sabia como me adaptar ao meu código.

questionAnswers(3)

yourAnswerToTheQuestion