Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

imbinarize

Binarizar una imagen 2D en escala de grises o un volumen 3D por medio del método del valor umbral

Descripción

ejemplo

BW = imbinarize(I) crea una imagen binaria a partir de una imagen 2D o 3D en escala de grises I de la siguiente manera: reemplazando todos los valores que se encuentran por encima de un umbral globalmente determinado por 1 y reemplazando todos los demás valores por 0. Por defecto, imbinarize utiliza el método de Otsu, que selecciona un valor umbral que minimiza la varianza interclase de los píxeles blancos y negros pasados por el umbral [1]. imbinarize utiliza un histograma de 256 bins para calcular el umbral de Otsu. Para utilizar un histograma diferente, consulte otsuthresh.

ejemplo

BW = imbinarize(I,method) crea una imagen binaria a partir de la imagen I utilizando el método del valor umbral que especifica method: "global" o "adaptive".

BW = imbinarize(I,T) crea una imagen binaria a partir de la imagen I utilizando el valor umbral T. T puede ser un umbral global para toda la imagen, especificado como valor de luminancia escalar, o un umbral localmente adaptativo, especificado como matriz de valores de luminancia.

ejemplo

BW = imbinarize(I,"adaptive",Name=Value) crea una imagen binaria a partir de la imagen I utilizando argumentos nombre-valor para controlar las características del umbral adaptativo.

Ejemplos

contraer todo

Lea una imagen en escala de grises en el área de trabajo.

I = imread('coins.png');

Convierta la imagen a una imagen binaria.

BW = imbinarize(I);

Muestre la imagen original junto con su versión binaria.

figure
imshowpair(I,BW,'montage')

Figure contains an axes object. The axes object contains an object of type image.

Lea una imagen en escala de grises en el área de trabajo.

I = imread('rice.png');

Convierta la imagen en escala de grises en una imagen binaria.

BW = imbinarize(I, 'adaptive');

Muestre la imagen original junto con su versión binaria.

figure
imshowpair(I,BW,'montage')

Figure contains an axes object. The axes object contains an object of type image.

Lea una imagen en escala de grises en el área de trabajo y muéstrela en pantalla.

I = imread('printedtext.png');
figure
imshow(I)
title('Original Image')

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

Convierta la imagen en una imagen binaria utilizando umbral adaptativo. Utilice el parámetro ForegroundPolarity para indicar que el primer plano es más oscuro que el fondo.

BW = imbinarize(I,'adaptive','ForegroundPolarity','dark','Sensitivity',0.4);

Muestre en pantalla la versión binaria de la imagen.

figure
imshow(BW)
title('Binary Version of Image')

Figure contains an axes object. The axes object with title Binary Version of Image contains an object of type image.

Cargue los datos 3D de intensidad de escala de grises en el área de trabajo.

load mristack;
V = mristack;

Visualice el volumen 3D.

figure
slice(double(V),size(V,2)/2,size(V,1)/2,size(V,3)/2)
colormap gray 
shading interp

Figure contains an axes object. The axes object contains 3 objects of type surface.

Convierta el volumen de intensidad en un volumen 3D binario.

J = imbinarize(V);

Visualice el volumen 3D binario.

figure
slice(double(J),size(J,2)/2,size(J,1)/2,size(J,3)/2)
colormap gray 
shading interp

Figure contains an axes object. The axes object contains 3 objects of type surface.

Argumentos de entrada

contraer todo

Imagen de entrada, especificada como imagen 2D en escala de grises o volumen 3D en escala de grises. imbinarize requiere que los valores de los píxeles del tipo double y single se encuentren en el intervalo [0, 1]. Puede utilizar la función rescale para ajustar los valores de los píxeles al intervalo requerido.

Nota

imbinarize interpreta una imagen RGB como imagen volumétrica en escala de grises y no binariza cada canal por separado. Para producir una imagen binaria a partir de una imagen RGB, primero convierta la imagen a una imagen en escala de grises utilizando im2gray.

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Método utilizado para binarizar la imagen, especificado con uno de los siguientes valores.

Valores

Significado

"global"

Calcula el umbral global de la imagen utilizando el método de Otsu. Para obtener más información sobre el método de Otsu, consulte graythresh.

"adaptive"

Calcula el umbral localmente adaptativo de la imagen seleccionado utilizando estadísticas locales de primer orden alrededor de cada píxel. Para obtener más detalles, consulte adaptthresh. Si la imagen contiene valores Inf o NaN, el comportamiento de imbinarize con el método "adaptive" se encuentra indefinido. La propagación de valores Inf o NaN puede no estar localizada alrededor del entorno de píxeles Inf y NaN.

Tipos de datos: char | string

Valor umbral de luminancia, especificado como número escalar o arreglo numérico con valores en el intervalo [0, 1].

  • Si T es un escalar numérico, imbinarize interpreta T como un umbral global para toda la imagen. Utilice graythresh o otsuthresh para calcular el umbral global para toda la imagen.

  • Si T es un arreglo numérico, imbinarize interpreta T como un umbral local adaptativo. Utilice adaptthresh para calcular un umbral local adaptativo.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Argumentos de par nombre-valor

Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos de nombre-valor deben aparecer después de otros argumentos. Sin embargo, el orden de los pares no importa.

Ejemplo: BW = imbinarize(I,"adaptive",Sensitivity=0.4); especifica el factor de sensibilidad como 0.4.

En las versiones anteriores a la R2021a, use comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: BW = imbinarize(I,"adaptive","Sensitivity",0.4); especifica el factor de sensibilidad como 0.4.

Factor de sensibilidad del umbral adaptativo, especificado como número en el intervalo [0, 1]. Una sensibilidad elevada lleva a que más píxeles se consideren como primer plano al utilizar el umbral, con el riesgo de incluir algunos de los píxeles del fondo.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Determina qué píxeles se consideran píxeles de primer plano con el método del umbral adaptativo, especificado como uno de los siguientes valores.

Valor

Significado

"bright"

El primer plano es más claro que el fondo.

"dark"

El primer plano es más oscuro que el fondo

Tipos de datos: char | string

Argumentos de salida

contraer todo

Imagen binaria de salida, devuelta como matriz lógica o arreglo lógico del mismo tamaño que I.

Tipos de datos: logical

Sugerencias

  • Para producir una imagen binaria a partir de una imagen indexada, primero convierta la imagen a una imagen en escala de grises utilizando ind2gray.

Algoritmos

El método "adaptive" binariza la imagen utilizando un umbral local adaptativo. imbinarize calcula un umbral para cada píxel utilizando la intensidad local media del entorno del píxel. Esta técnica también se denomina método de Bradley [2]. El método "adaptive" también utiliza un entorno de aproximadamente 1/8 del tamaño de la imagen (calculado como 2*floor(size(I)/16)+1). Para utilizar una estadística local de primer orden diferente o un tamaño de entorno diferente, consulte adaptthresh.

Referencias

[1] Otsu, N., "A Threshold Selection Method from Gray-Level Histograms." IEEE Transactions on Systems, Man, and Cybernetics. Vol. 9, No. 1, 1979, pp. 62–66.

[2] Bradley, D., G. Roth, "Adapting Thresholding Using the Integral Image," Journal of Graphics Tools. Vol. 12, No. 2, 2007, pp.13–21.

Capacidades ampliadas

Historial de versiones

Introducido en R2016a