Una forma simple de generar sus cuadros es a sum su imagen en cada columna y buscar donde la suma cae por debajo de algún umbral (es decir, donde los píxeles blancos caen debajo de un número dado en esa columna). Esto le dará índices de columna para dónde deberían estar las casillas. El ancho de estos cuadros puede ser demasiado estrecho (es decir, pequeñas partes de los números pueden sobresalir por los lados), por lo que puede dilatar los bordes convolving el vector de índice con un pequeño vector de unos y buscar los valores resultantes que son mayores que cero. He aquí un ejemplo el uso de su imagen de arriba:
rawImage = imread('license_plate.jpg'); %# Load the image
maxValue = double(max(rawImage(:))); %# Find the maximum pixel value
N = 35; %# Threshold number of white pixels
boxIndex = sum(rawImage) < N*maxValue; %# Find columns with fewer white pixels
boxImage = rawImage; %# Initialize the box image
boxImage(:,boxIndex) = 0; %# Set the indexed columns to 0 (black)
dilatedIndex = conv(double(boxIndex),ones(1,5),'same') > 0; %# Dilate the index
dilatedImage = rawImage; %# Initialize the dilated box image
dilatedImage(:,dilatedIndex) = 0; %# Set the indexed columns to 0 (black)
%# Display the results:
subplot(3,1,1);
imshow(rawImage);
title('Raw image');
subplot(3,1,2);
imshow(boxImage);
title('Boxes placed over numbers');
subplot(3,1,3);
imshow(dilatedImage);
title('Dilated boxes placed over numbers');
![enter image description here](https://i.stack.imgur.com/hY4bl.png)
Nota: El umbral hecho anterior da cuenta de la posibilidad de que la imagen en blanco y negro puede ser de tipo doble (con valores de cualquiera 0 o 1), lógico (también con valores de 0 o 1) o un entero de 8 bits sin signo (con valores de 0 o 255). Todo lo que tiene que hacer es establecer N
en la cantidad de píxeles blancos para usar como umbral para identificar una columna que contiene parte de un número.
¿Sugerir un título cambiar - "dígitos de un segmento en una imagen"? –