Удаление лишних пикселей / строк с номерного знака
Я использую детектор функций HOG на основе классификации SVM. Я могу успешно извлечь номерной знак, но извлеченный номерной знак содержит несколько ненужных пикселей / строк помимо номера лицензии. Мой конвейер обработки изображений выглядит следующим образом:
- Применение детектора HOG на изображении в градациях серого
- Обрезка обнаруженного региона
- Изменение размера обрезанного изображения
Применение адаптивного порога для выделения номеров пластин и фона фильтрации с использованием следующего кода OpenCV
cvAdaptiveThreshold(cropped_plate, thresholded_plate, 255,CV_ADAPTIVE_THRESH_GAUSSIAN_C, CV_THRESH_BINARY_INV,11, 9);
Удаление перекоса пластины
Из-за этой ненужной информации программное обеспечение Tesseract-OCR сбивается с толку, чтобы правильно распознавать числа. Извлеченные изображения номерных знаков выглядят следующим образом.
Как я могу отфильтровать эти ненужные пиксели / линии на изображениях? Любая помощь будет оценена.
2 ответа
Вы хотите удалить все нетекстовые объекты на изображении. Для этого я предлагаю отсортировать капли по области их ограничительной рамки (maxy - miny)*(maxx - minx). Провести статистический анализ; Вы знаете, что ищете объекты аналогичного размера. Как только вы определили приблизительный размер символа, сделайте большую ограничивающую рамку, которая оценивает весь текст. Держите в нем маленькие капли, поэтому для вашей картинки знак тире будет сохранен.
Вы можете, вероятно, многого добиться, отфильтровывая контуры. Попробуйте найти контуры, которые имеют определенное соотношение ширины и высоты, определенное количество белых пикселей с countNonZero()
и т.д. Если это не помогает, вы всегда можете попытаться реализовать алгоритм обнаружения текста, такой как алгоритм сглаживания длины выполнения (RLSA).