Машинное зрение в Python - PullRequest
19 голосов
/ 20 мая 2009

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

Насколько я знаю, единственной бесплатной библиотекой для Python, которая поддерживает машинное зрение, является PyCV (которая является оболочкой для OpenCV , очевидно), но я не могу найти какую-либо соответствующие учебные пособия.

Мои основные задачи - получить изображение из FireWire. Сегментируйте изображение в разных регионах. А затем выполните статистику по каждой области, чтобы определить площадь пикселей и центр масс.

Ранее я использовал Matlab Image Processing Tootlbox без проблем. Я хотел бы найти эквивалент в Python: graythresh , regionprops и gray2ind .

Спасибо!

Ответы [ 7 ]

13 голосов
/ 30 мая 2009

OpenCV, вероятно, ваш лучший выбор для библиотеки; у вас есть выбор обертки для них. Я посмотрел на оболочку SWIG, которая поставляется со стандартной установкой OpenCV, но в итоге использовала ctypes-opencv , потому что управление памятью казалось более чистым.

Они оба очень тонкие обертки вокруг кода C, поэтому любые ссылки на C, которые вы можете найти, будут применимы к Python.

OpenCV огромен и не особо хорошо документирован, но в каталоге примеров есть несколько достойных примеров, которые вы можете использовать, чтобы начать. Доступная для поиска ссылка на API OpenCV: здесь .

Вы не упомянули, искали ли вы онлайн или печатные источники, но у меня есть книга O'Reilly , и она довольно хорошая (примеры на C, но легко переводимая).

Функция FindContours немного похожа на regionprops; он получит список подключенных компонентов, которые вы затем сможете проверить, чтобы получить их информацию.

Для порогового значения вы можете попробовать Порог . Я был уверен, что вы можете передать ему флаг, чтобы использовать метод Оцу, но, похоже, он не указан в документации.

Я не сталкивался с конкретными функциями, соответствующими gray2ind, но они могут быть там.

7 голосов
/ 30 мая 2009

документация: несколько лет назад я довольно часто использовал OpenCV для Python. OpenCV тщательно документирован, поставляется со многими примерами, и даже есть книга . Оболочки Python, которые я использовал, были достаточно тонкими, так что требовалась совсем небольшая документация, относящаяся к обертке (это типично для многих других упакованных библиотек). Я полагаю, что несколько минут, глядя на пример, например, модульные тесты PyCV, - это все, что вам нужно, а затем вы можете сосредоточиться на документации OpenCV, которая соответствует вашим потребностям.

анализ: Что касается того, есть ли лучшая библиотека, чем OpenCV, я несколько устарел в том, что OpenCV отлично подходит, если вы хотите делать довольно сложные вещи (например, отслеживание объектов), но это, возможно, излишне для ваших нужд. Звучит так, будто scipy ndimage в сочетании с некоторыми простыми манипуляциями с массивами может быть достаточно.

приобретение: варианты приобретения, о которых я знаю, - это OpenCV, Motmot или использование ctypes для прямого взаимодействия с драйверами. Из них я никогда не использовал Motmot, потому что у меня были проблемы с его установкой. Другие методы, которые я нашел, довольно просты, хотя я не помню деталей (это хорошо, так как это означает, что это было легко).

4 голосов
/ 12 сентября 2010

Я создал сайт на эту тему: pythonvision.org . Он имеет несколько учебных пособий, & C и некоторые ссылки на программное обеспечение. Там есть больше ссылок и учебных пособий.

2 голосов
/ 20 мая 2009

Тебе, наверное, хорошо послужит SciPy . Вот вводное руководство для SciPy. Это имеет много общего с Matlab. Особенно включенный пакет matplotlib, который явно создан для эмуляции функций построения графиков Matlab. Я не верю, что у SciPy есть эквиваленты для упомянутых вами функций. Есть некоторые вещи, которые похожи. Например, threshold - это очень простая версия Graythresh. Он не реализует метод "Оцу", он просто делает простой порог, но это может быть достаточно близко.

Мне жаль, что я не знаю ни одного учебника, который бы ближе к описанной вами задаче. Но если вы привыкли к Matlab и хотите сделать это на Python, SciPy является хорошей отправной точкой.

0 голосов
/ 06 июня 2012

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

[КНИГА]: Программирование Computer Vision с помощью Python

На данный момент вы можете бесплатно скачать окончательный вариант с сайта книги в формате pdf :

http://programmingcomputervision.com/

Из введения:

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

Что нужно знать

  • Базовый опыт программирования. Вы должны знать, как использовать редактор и запустить сценарии, как структурировать код, а также основные типы данных. Помогает знакомство с Python или другими языками стилей сценариев, такими как Ruby или Matlab.
  • Основная математика. В полной мере использовать примеры, если вы знаете о матрицы, векторы, умножение матриц, стандартные математические функции и такие понятия, как производные и градиенты. Некоторые из более продвинутых Математические примеры можно легко пропустить.

Что вы выучите

  • Практическое программирование с изображениями с использованием Python.
  • Методы компьютерного зрения, стоящие за широким спектром реальных приложений.
  • Многие фундаментальные алгоритмы и способы их реализации и применения самостоятельно.
0 голосов
/ 30 мая 2009

Я получил изображение с камеры FW, используя .NET и IronPython. На CPython я бы заглянул в библиотеку ctypes, если вы не найдете никакой поддержки библиотеки для захвата.

0 голосов
/ 20 мая 2009

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

...