Разделение и анализ изображения - PullRequest
3 голосов
/ 07 февраля 2012

Вот сценарий:
Я использую Visual Studio 2008 с .NET Framework 3.5. Я использую C#. И для базы данных я использую MySQL. У меня есть picturebox на form и 10-12 buttons (каждый со своей функцией манипулирования изображениями). При нажатии на одну из кнопок openfiledialog появляется окно, в котором пользователь может выбрать конкретный файл для предоставления программе. При нажатии другой кнопки программа должна выполнить действия, описанные ниже.

У меня есть изображение схемы. Предположим, это изображение, которое предоставляется программе. например,
Circuit image
Я собираюсь сделать следующее: программа должна гипотетически пометить схему следующим образом:
Labeling of the circuit
а затем он должен отделить изображение и сохранить информацию в базе данных.

Есть ли способ сделать это. В любом случае, можете сказать мне, как это сделать? Любая помощь или предложения, пожалуйста.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 07 февраля 2012

При обработке изображений проблема поиска «частей» схемы известна как маркировка подключенного компонента .Если вы используете C #, я считаю, что вы можете использовать EmguCV (оболочка для библиотеки OpenCV), чтобы решить первую часть проблемы.Для этого необходимо учитывать, что белые пиксели являются фоном, а черные пиксели - объектами.

Теперь, когда у вас есть отдельные следы, проблема сводится к поиску и маркировке белых точек.Опять же, вы можете решить эту проблему с помощью маркировки подключенных компонентов, но теперь объекты представлены белыми пикселями, а фон - черными.

0 голосов
/ 07 февраля 2012

По крайней мере для вашего примера, очень простой алгоритм будет работать.

  1. Найти черный пиксель из изображения
  2. Используя алгоритм заливки, найдите все пикселиподключен к нему, и отделить его.Это одна из ваших трасс.
  3. Работая с разделенной трассой, найдите белый пиксель и используйте алгоритм заливки, чтобы найти все пиксели, связанные с ним.Если вы бежите к краю изображения, это не дыра.Если вы этого не сделаете, это может быть дыра или петля в след.Используйте пороговое значение для размера отверстия, чтобы определить, является ли это оконечным отверстием или петлей.
  4. Пометьте отверстие и удалите его из рассмотрения.Повторяйте до тех пор, пока не останется больше необработанных белых пикселей.
  5. Удалите всю трассу из рассмотрения и перейдите к 1.
  6. Когда на шаге 1 не будет рассмотрено больше черных пикселей, выготово.

Вероятно, вы довольно далеко продвинулись бы с базовой библиотекой редактирования изображений, которая имеет функцию заливки, функцию разделения определенного цвета на новое изображение и функцию замены цветов (последние два тривиальны для реализации, и в Интернете доступно множество алгоритмов заполнения.Вы можете использовать разные цвета, чтобы пометить разные вещи, например, закрасить все, что "не учитывается", красным.Это также обеспечивает интересную визуализацию, если вы посмотрите на нее в режиме реального времени!

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