Блок задач

8. Проекты-1

Сложность 7

Проект «Автоповорот изображения с текстом»

Реализовать автоматический поворот изображения с текстом.

Входные данные

Изображение с текстом. Например, скан чека, или скан страницы с текстом. Текст в сканере может быть повёрнут под некоторым произвольным углом.

Задача

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

В общем виде алгоритм поиска угла поворота опирается на построение построчной статистики яркости пикселей. То есть для каждой строки вычисляется средняя яркость пикселя.

Если текст выровнен горизонтально, то средняя яркость пикселя будет скачками меняться при переходе от некоторых строк к соседним (влияние междустрочного интервала). Если текст не выровнен горизонтально, то подобных скачков наблюдаться не будет. Этот критерий позволяет подбором найти требуемый угол поворота.

Выходные данные

Изображение с выровненным по горизонтали текстом.

Тестирование

Необходимо написать полноценный набор тестов, для всех используемых в проекте классов.

Вариант усложнения

Как развитие задачи, можно разбить исходное большое изображение на пересекающиеся блоки, например по 64x64 пикселя, и для каждого блока найти свой угол поворота. Исходя из этой информации возможно "подчеркнуть" строки и задать преобразование для "выправления" изогнутых строк.