adaptive - ¿Cómo usar el Umbral de OTSU en opencv?
threshold image opencv c++ (3)
Estaba usando un umbral fijo, pero resulta que no es tan bueno para mí. Entonces, alguien me contó sobre el umbral de otsu. ¿Cómo puedo usarlo en mi código? Lo leí y no entiendo muy bien. ¿Podría alguien explicarme cómo usarlo en OpenCV el umbral de otsu?
Aquí está mi código ahora:
#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;
}
Con esto tengo que cambiar el umbral a cualquier imagen que quiero convertir a binario. Encontré esto:
cvThreshold(scr, dst, 128, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
¿Está bien? No entiendo muy bien y por eso, no sabía cómo podría adaptarme a mi código.
En Android es una línea.
Imgproc.threshold(matGrayIn, matOtsuOut, 0, 255, Imgproc.THRESH_OTSU | Imgproc.THRESH_BINARY);
En Python es simple
import cv2
a = imread(''img.jpg'',0) #pass 0 to convert into gray level
ret,thr = cv2.threshold(a, 0, 255, cv2.THRESH_OTSU)
cv2.imshow(''win1'', thr)
cv2.waitKey(0)
cv2.destroyAllWindows()
La siguiente línea realiza la operación de umbral de otsu:
cv::threshold(im_gray, img_bw, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
-
im_gray
es una imagen fuente de 8 bits, -
img_bw
es un resultado, - 0 significa nivel de umbral que en realidad se omite porque utilizamos el indicador CV_THRESH_OTSU,
- 255 es un valor que se asignará a píxeles respectivamente en el resultado (es decir, a todos los píxeles cuyo valor en la fuente es mayor que el nivel de umbral calculado)
-
CV_THRESH_BINARY | CV_THRESH_OTSU
CV_THRESH_BINARY | CV_THRESH_OTSU
es un indicador obligatorio para realizar la umbralización de Otsu. Porque, de hecho, nos gustaría realizar el umbral binario, entonces usamosCV_THRESH_BINARY
(puede usar cualquiera de los 5 indicadores que ofrece opencv) combinado conCV_THRESH_OTSU
Enlace a la documentación: http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html#threshold