Nano Hash - криптовалюты, майнинг, программирование

Как сделать перспективное преобразование изображения, в котором отсутствуют углы, с помощью opencv java

Я пытаюсь создать сканер документов с помощью openCV. Я пытаюсь автоматически обрезать загруженное изображение. У меня есть несколько случаев использования, когда на границе есть разрыв, когда документ находится вне рамки (захваченное изображение).

Бывшее изображение

Исходное изображение

Ниже показано хитрое определение края данного изображения.

Изображение Canny Edge

Здесь отсутствуют границы, и из-за этого findContours не возвращает мне правильные результаты. Как я могу обрабатывать такие изображения.

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

Также некоторые документы могут иметь только 2 или 3 стороны, снятые с помощью камеры, и как мы можем обрезать другие области, которые не требуются.

Пример изображения:

введите здесь описание изображения

Есть ли какая-то особая техника для работы с такими документами? Пожалуйста, предложите несколько идей.


  • Не могли бы вы показать свой код? 29.06.2020
  • @xszym Вот код gist.github.com/sureshbabuinfo/f398a758dbbec64eee2d7c8221b0c970 29.06.2020
  • @xszym У вас была возможность посмотреть код? 30.06.2020
  • Надеюсь, мой ответ вам чем-то поможет :) 30.06.2020
  • Вы можете попробовать определить границы линий, используя преобразование Hough Line. Это не даст вам углов, но даст линии, которые вы можете экстраполировать, чтобы найти углы. Когда у вас есть линии для всех четырех углов, вычислите их пересечения. Должно быть 4 пересечения, и это ваши углы. Передайте эту информацию в Perspective Rectifier. 03.07.2020

Ответы:


1

Ваша проблема необычная. Один из способов решения этой проблемы, который приходит мне на ум, заключается в следующем:

  1. Добавьте белые рамки вокруг изображения. https://docs.opencv.org/3.4/dc/da3/tutorial_copyMakeBorder.html

  2. Найдите линии по краям

http://www.robindavid.fr/opencv-tutorial/chapter5-line-edge-and-contours-detection.html

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_houghlines/py_houghlines.html

  1. Сделать вероятностные HoughLines

  2. Обрежьте изображение по этим линиям. Это наверняка сработает для изображения, подобного первому. Для изображения, подобного второму, вы можете использовать перпендикулярные и параллельные линии.

Конечно, ваш алгоритм должен быть довольно сложным, чтобы работать хорошо. Самый простой способ — сфотографировать весь документ, если это возможно.

Удачи!

30.06.2020
  • Благодарю за ваш ответ. Я уже пробовал рамку, как вы упомянули, и это сработало для первого изображения. Проблема в том, что загруженное изображение может иметь все четыре края документа, а может и нет. Поэтому я должен обрабатывать все варианты использования по-другому. Я просто хочу знать, есть ли какой-либо общий метод, чтобы справиться с этим. 30.06.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..