Как исправить ошибки сканирования, такие как вращение? - PullRequest
3 голосов
/ 01 января 2012

Я пытаюсь отсканировать несколько снимков (личные изображения размером 3х4 см), а затем разделить их на отдельные изображения.первый шаг о сканировании сделан, но о втором шаге (обнаружение и разделение краев) у меня есть некоторые проблемы.
1- Обычно, когда они сканируют изображения, некоторые изображения поворачиваются на несколько градусов, и это мешает мне иметь прямые края.
2- Как мне убрать большие шумы?(Представьте, что когда они сканируют эти картинки, они кладут за ними бумагу. Иногда бумага делает некоторые края на отсканированном изображении ... как я могу понять, что это не тот край, который я ищу?)

Вот пример изображения:
sample image

1 Ответ

3 голосов
/ 01 января 2012

Образцы изображений на скане имеют прямоугольную форму и все они примерно одинакового размера.Существуют различные методы поиска прямоугольников в изображении (даже при совершенно произвольном повороте), но я начну с более фундаментальных методов.

  1. Для нахождения линий визображение, даже когда фон шумный.Из подгонки линии Хафа вы можете найти точки пересечения и, возможно, сравнить эти точки пересечения с точками, найденными при обнаружении углов (см. Ниже 3).
  2. У краевых точек на линиях градиенты перпендикулярны этим линиям.При поиске краевых точек вы можете отдавать предпочтение краевым точкам, которые примерно равны расстоянию L или расстоянию W от других краевых точек с градиентами в параллельном направлении, где L и W - известная длина и ширина ваших изображений.
  3. Детекторы углов могут помочь идентифицировать углы ваших маленьких прямоугольных изображений.Вы знаете длину и ширину изображений, которые должны помочь вам принять / отклонить углы.
  4. Если вы хотите получить фантазию (что я не рекомендую), тогда простой метод нормализованной взаимной корреляции может обнаружитьвсе экземпляры «шаблонного» подизображения на большом изображении.Техника немного грубая, но она работает хорошо, если нет большого вращения.Поскольку подизображения имеют четко определенные границы известной формы и (предположительно) постоянного размера, было бы проще просто найти края, а не пытаться сопоставить содержимое изображения.

После того как выопределили местоположение и ориентацию каждого прямоугольного подизображения, затем простое вращательное преобразование + интерполяция может генерировать версию «правой стороной вверх» каждого изображения.Со сканерами у вас не будет проблем с искажением перспективы, но если в какой-то момент в будущем вы будете делать снимки изображений (?) Под углом, то аффинное преобразование может отобразить искаженные трапециевидные изображения в прямоугольные изображения.

Преобразование Хафа http://en.wikipedia.org/wiki/Hough_transform

Обнаружение углов http://en.wikipedia.org/wiki/Corner_detection

Простое обнаружение кромок, которое должно работать достаточно хорошо для вашего приложения, см. В разделе «Другие методы первого порядка» встатья Edge Detection в Википедии.Техника проста для понимания и проста в реализации.http://en.wikipedia.org/wiki/Edge_detection

Удачи и еще раз с Новым годом!

...