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