сегментные цифры в изображении - Matlab - PullRequest
6 голосов
/ 05 апреля 2011

У меня есть изображение номерного знака в черно-белом цвете.

Вот как это выглядит:

enter image description here

Теперь я хочу покрасить фонкаждая цифра, для дальнейшей работы по вырезанию чисел из таблички.

вот так:

enter image description here

любая помощь будет принята с благодарностью.

Ответы [ 2 ]

7 голосов
/ 05 апреля 2011

Один простой способ сгенерировать ваши блоки - это сумма вашего изображения вниз по каждому столбцу и поиск, где сумма падает ниже некоторого порога (то есть, где белые пиксели падают ниже заданного числа в этом столбце).Это даст вам индексы столбцов для того, где ящики должны быть.Ширина этих полей может быть слишком узкой (т. Е. Небольшие части чисел могут выступать по бокам), поэтому вы можете расширить края с помощью свертки вектора индекса с небольшим вектором единиц и поискарезультирующие значения, которые больше нуля.Вот пример использования вашего изображения выше:

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

Примечание: Вышеуказанный порог учитывает вероятность того, что черно-белое изображениеможет иметь тип double (со значениями 0 или 1), логический (также со значениями 0 или 1) или 8-разрядное целое число без знака (со значениями 0 или 255).Все, что вам нужно сделать, это установить N на количество белых пикселей, чтобы использовать его в качестве порога для идентификации столбца, который содержит часть числа.

0 голосов
/ 05 апреля 2011

Предполагая, что у вас есть рамка вокруг букв, что дает вам общий угол

Свернуть изображение в 1d (может помочь сначала повернуть его, чтобы ограничивающая рамка была горизонтальной)

Затем найдите пробелы между буквами в этой 1-й подписи, указывающей вам позиции цифр. Помогает, если вы знаете количество цифр и формат табличек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...