Быстрые кроссплатформенные библиотеки обработки изображений C/C++
Какие есть кроссплатформенные и высокопроизводительные библиотеки изображений для обработки изображений (изменение размера и поиск гистограмм цвета / оттенка). Нет необходимости в графическом интерфейсе. Это для C/C++.
До сих пор я смотрел в
- OpenCV
- GIL как часть Boost
- DevIL
- CImg
Мои вопросы
- Как производительность тех, что я перечислил выше?
- Какие еще библиотеки
Ваш вклад высоко ценится.
11 ответов
OpenCV имеет довольно хорошую производительность. Этого должно быть достаточно для большинства случаев.
Для повышения производительности вы также можете использовать OpenCV вместе с Intel IPP, который, однако, является несвободным коммерческим продуктом. Если OpenCV обнаружит, что IPP установлен, он будет использовать его там, где это возможно.
В качестве третьего варианта вы можете использовать IPP напрямую. IPP была разработана с высокой производительностью (на архитектурах Intel) в качестве цели. Он оптимизирован для использования инструкций Intel SIMD.
Не забудьте взглянуть на CxImage - я профессионально использовал его в глобально развернутых графических приложениях для мобильных телефонов, где он отлично работал и полон функций. Проверьте это!
Я не думаю, что видел что-то лучше по функциям и производительности, чем HALCON от MVTec. Он предоставляет всевозможные алгоритмы компьютерного зрения и обработки изображений, а также множество примеров из реальной жизни. Библиотека использует многопоточность, насколько это возможно для алгоритмов, и GPU, когда она доступна. Он очень кроссплатформенный и предоставляет фантастическую среду IDE, которая позволит вам экспортировать ваш прототип кода (алгоритма) на многие языки, включая C, C++, C# и другие.
Одна из лучших функций этой библиотеки - то, как они обрабатывают объекты области. Это просто невероятно умно и эффективно как для хранения, так и для обработки маски. К сожалению, у OpenCV есть чему поучиться.
Основная проблема с этим пакетом - цена (глупо высокая), но если вы работаете над проектом, в котором вам не нужно развертывать лицензии времени выполнения (например, SaaS), то это путь, не смотрите дальше, если вам требуется серьезный обработка изображений и компьютерное зрение.
Я поддерживаю vips- бесплатную кроссплатформенную научную библиотеку C/C++ для обработки изображений. Это быстро и хорошо работает на очень больших изображениях.
Я выполнил очень простой тест: загрузил TGB размером 5000 x 5000 пикселей, обрезал по 100 пикселей с каждого края, уменьшил на 10%, увеличил резкость и снова сохранил. По крайней мере, в этом тривиальном тесте vips работает более чем в три раза быстрее, чем все, что я пробовал.
Существует простая и бесплатная кроссплатформенная библиотека обработки изображений с открытым исходным кодом Simd. Как следует из его описания:
Он предоставляет множество полезных высокопроизводительных алгоритмов для обработки изображений, таких как: преобразование формата пикселей, масштабирование и фильтрация изображений, извлечение статистической информации из изображений, обнаружение движения.
Алгоритмы оптимизированы с использованием различных расширений ЦП SIMD: SSE, SSE2, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 и AVX-512 для x86/x64, VMX(Altivec) и VSX(Power7) для PowerPC, НЕОН для АРМ.
Вы можете посмотреть на IM. Он построен на нескольких платформах и имеет поддержку (модульных) форматов файлов изображений, различных представлений изображений и широкого спектра преобразований и операторов. Также доступен инструмент с графическим интерфейсом IMLab для демонстрации операторов обработки изображений на основе библиотеки IM.
Это также:
- Framewave на основе AMD Performance Library, которая обеспечивает функции обработки сигналов и изображений
- GraphicsMagick - многопоточная производная от ImageMagick
ExactImage - быстрая C++ библиотека для обработки изображений. В отличие от многих других библиотечных инфраструктур, он позволяет работать в нескольких цветовых пространствах и битовой глубине, что приводит к снижению требований к памяти и вычислениям.
Мы использовали Accusoft довольно долго, но по очень конкретным причинам мы перешли на LeadTools, который существует только для окон. Accusoft имеет очень понятный и гораздо более четкий интерфейс, чем leadtools. Обе библиотеки очень надежны, и обе утверждают, что читают более или менее все существующие типы файлов. Оба также имеют довольно отзывчивую поддержку.