Мне было интересно, какой язык лучше всего подходит для обработки изображений? Я знаю, что у MATLAB есть хорошая библиотека и сообщество пользователей. Я не проверил это, это там для python.
Какой самый эффективный язык для этого?
источник
Мне было интересно, какой язык лучше всего подходит для обработки изображений? Я знаю, что у MATLAB есть хорошая библиотека и сообщество пользователей. Я не проверил это, это там для python.
Какой самый эффективный язык для этого?
Это касается не только языка программирования, но и используемой вами библиотеки. Я могу думать о следующем:
MATLAB - возможности обработки изображений вполне нормальны, но для более сложной обработки в реальном времени вам понадобятся некоторые вещи низкого уровня. Кроме того, он не предлагает очень хорошую мобильность.
Mathematica - хорош для создания прототипов и быстрой визуализации, но это все по моему скромному мнению.
OpenCV - я думаю, что это самая популярная библиотека в IP-сообществе. Большие возможности ( вычисления на GPU, модуль машинного обучения, GUI - что еще нужно? ), Быстрые и все еще находящиеся в разработке (поэтому незначительные ошибки удаляются очень быстро). Что касается сообщества - оно большое! В основном для программирования на C / C ++, но также и для Python (вероятно, вам подходит).
JAI - Java Advanced Imaging - только если вам нравится Java. Лично мне это не нравится.
ImageMagick - вы можете использовать его со многими языками программирования, проверьте API .
CxImage - хорошо, если вы хотите создать что-то лучше, чем MS Paint и с некоторыми функциями Photoshop.
CImg - очевидно, будет использоваться с C ++, но OpenCV все же лучше.
PIL - специфичная для Python библиотека с большим количеством функций. Если вам это нравится, то вы можете присмотреться.
SimpleCV - в основном это привязка к OpenCV Python с некоторыми изменениями. Очень прост в использовании и достаточно эффективен.
scikit-image - тоже библиотека Python, но на мой взгляд хуже, чем SimpleCV (хотя мой друг не согласился бы с этим). Одним из преимуществ является то, что они включили экстрактор функций DAISY - весьма полезно, если вам нужны плотные функции.
GIL - часть Boost , но менее функциональная, чем OpenCV. Хотя, если вам нравится и использует Boost, то для некоторых основных функций все должно быть в порядке.
ResIL - продолжение проекта DevIL . Основным преимуществом является работа со многими форматами файлов, включая некоторые игровые файлы.
РОЗОВЫЙ - изначально написан на C ++. Я недавно попробовал это, и было очень приятно работать. Отличная интеграция с Python и быстрая встроенная C. Кроме того, у них есть много хороших алгоритмов.
Очевидно, есть еще много библиотек обработки изображений, но это те, с которыми я общался. Так что если вы хотите начать с чего-то, то выберите OpenCV (желательно с C ++ framework) - вы не пожалеете! С другой стороны, если ваши навыки программирования не очень сильны, вы можете подумать об использовании библиотек на основе Python - их очень легко изучить и настроить.
MATLAB - лучший язык для обучения обработке изображений. (это мое мнение)
Он прост в изучении, не зависит от аппаратного обеспечения, более гибок, чем любой скомпилированный язык, возможно, более эффективен, чем языки сценариев (благодаря встроенным библиотекам, оптимизированным для обработки сигналов на машинном уровне), имеет хорошую академическую и техническую поддержку.
C / C ++ - лучший язык для создания автономных приложений обработки изображений. Под вашим набором IDE вы можете создавать собственный код, который является наиболее эффективным. А IDE для C ++ предоставляют лучшие возможности отладки на уровне машины.
Некоторые скриптовые языки также используются. Они действительно гибкие, переносимые, даже значительно эффективные, однако на низких уровнях отладка может быть непростой.
Кроме того, новые возможности обработки графических процессоров CUDA, OpenCL и т. Д. Значительно увеличивают производительность вычислений. (Однако их сложнее освоить, так как вы должны знать о базовой аппаратной архитектуре конвейера GPU, чтобы использовать любое повышение эффективности)
Если вы хотите развернуть свои собственные алгоритмы или код, то включите OpenCL, так как многие ядра обработки изображений «смущающе параллельны».
Или, на Big Iron, Fortran по-прежнему опережает большинство других языков по числовой векторной производительности.