La umbralización es el método más simple de segmentación de imágenes y la forma más común de convertir una imagen en escala de grises en una imagen binaria.
En el umbral, seleccionamos un valor de umbral y luego todo el valor de nivel de gris que está por debajo del valor de umbral seleccionado se clasifica como 0 (negro, es decir, fondo) y todo el nivel de gris que es igual o mayor que el valor de umbral se clasifica como 1 (blanco, es decir, primer plano).
Aquí g(x, y) representa el píxel de la imagen de umbral en (x, y) y f(x, y) representa el píxel de la imagen en escala de grises en (x, y).
Algoritmo:
- Lea la imagen de destino en el entorno MATLAB.
- Conviértalo en una imagen en escala de grises si la imagen leída es una imagen RGB.
- Calcular un valor de umbral, T
- Cree una nueva array de imágenes (digamos ‘binario’) con el mismo número de filas y columnas que la array de imágenes original, que contenga todos los elementos como 0 (cero).
- Asigne 1 a binario (i, j), si el píxel de nivel de gris en (i, j) es mayor o igual que el valor de umbral, T; de lo contrario, asigne 0 a binario (i, j).
Haga lo mismo para todos los píxeles de nivel de gris.
A continuación se muestra la implementación del algoritmo anterior:
MATLAB
% Following MATLAB function will take a grayscale % or an RGB image as input and will return a % binary image as output function [binary] = convert2binary(img) [x, y, z]=size(img); % if Read Image is an RGB Image then convert % it to a Gray Scale Image For an RGB image % the value of z will be 3 and for a Grayscale % Image the value of z will be 1 if z==3 img=rgb2gray(img); end % change the class of image % array from 'unit8' to 'double' img=double(img); % Calculate sum of all the gray level % pixel's value of the GrayScale Image sum=0; for i=1:x for j=1:y sum=sum+img(i, j); end end % Calculate Threshold value by dividing the % calculated sum by total number of pixels % total number of pixels = rows*columns (i.e x*y) threshold=sum/(x*y); % Create a image array having same number % of rows and column as Original image % with all elements as 0 (Zero). binary=zeros(x, y); % iterate over all the pixels of Grayscale % Image and Assign 1 to binary(i, j), if gray % level value is >= threshold value % else assign 0 to binary(i, j) . for i=1:x for j=1:y if img(i, j) >= threshold binary(i, j) = 1; else binary(i, j)=0; end end end end % driver function % Read the target Image img=imread('apple.png'); % Call convert2binary() function to convert % Image to binary using thresholding binary_image=convert2binary(img); % Display result imshow(binary_image);
Aporte:
Producción:
Ventajas de la umbralización:
- Este método es fácil de entender y simple de implementar.
- Convierte una imagen en escala de grises en una imagen binaria.
- La imagen binaria resultante es fácil de analizar.
Desventajas de la umbralización:
- Solo consideramos la intensidad de la imagen para el proceso de umbralización, pero no consideramos ninguna relación entre los píxeles. Por lo tanto, es posible que los píxeles identificados por el proceso de umbralización no sean continuos.
- Durante el proceso de umbralización, podemos incluir fácilmente los píxeles extraños que no forman parte de la región deseada y podemos perder fácilmente los píxeles que forman parte de la región deseada.
- También es muy sensible al ruido en la imagen. El resultado del proceso de umbralización empeora a medida que empeora el ruido.