Как я могу обнаружить (и исправить) перекос в изображениях? - PullRequest
6 голосов
/ 03 июля 2010

У меня есть большая коллекция отсканированных изображений, и все они несколько искажены, вокруг них белая область.

Итак, эти изображения имеют прямоугольники цветов, окруженные большой белой областью. Проблема в том, что эти цветные прямоугольники не параллельны границе изображения.

Я уверен, что должен быть способ программно определять эти цветовые прямоугольники, чтобы я мог повернуть изображение (таким образом отодвинув его), а затем обрезать, чтобы осталась только интересная часть. Наверное, я не совсем уверен, как называется этот процесс, поэтому у меня возникают проблемы с поиском решения в Google.

Кто-нибудь знает о подходе, который заставил бы меня начать? Есть ли какие-нибудь библиотеки, на которые мне стоит посмотреть? Или название алгоритма, который поможет?

Я планирую использовать Java для этого проекта, но я еще не начал, поэтому я открыт для предложений библиотек на любом языке.

Ответы [ 3 ]

4 голосов
/ 03 июля 2010
  • определение границы
  • грубое преобразование (если все прямоугольники на изображении имеют одинаковый перекос)
  • обнаружение контура прямоугольника (контур подключенного компонента, затем прямоугольник, ограничивающий минимальную площадь)
3 голосов
/ 05 ноября 2016

Alyn - сторонний пакет для обнаружения и исправления перекоса изображений, содержащих текст. Он использует Canny Edge Detection и Hough Transform, чтобы найти перекос.

Чтобы обнаружить перекос, просто наберите

./skew_detect.py -i image.jpg

Чтобы исправить перекос, запустите

./deskew.py -i image.jpg  -o skew_corrected_image.jpg
1 голос
/ 31 октября 2013

Вы также можете попробовать scikit-image http://scikit -image.org / docs / dev / auto_examples / .

Это отличная библиотека для грубого преобразования, но также имеет другиеметоды, такие как преобразование Радона и геометрические преобразования для такого рода задач.

Это библиотека Python.

...