Какой самый быстрый алгоритм цветового квантования для Android?

Я использую алгоритм квантования NeuQuant ( https://code.google.com/p/android-gif-project/source/browse/trunk/GIFproject1/src/com/ui/NeuQuant.java?r=5) для уменьшите JPEG до 256-цветного изображения, но оно будет очень медленным (~1 секунда для изображения 320x240, ~3 секунды для 640x480). Даже с несколькими потоками я не могу довести время обработки до достойного уровня (в идеале - 100 мс на диапазон изображений).

Кто-нибудь знает более быстрый алгоритм уменьшения цветовой палитры изображения до 256 цветов?

2 ответа

Извлечение 256 цветов - это своего рода крайний случай, но вы должны взглянуть на Median Cut Quantification. Вот реализация: ссылка на github
Другой вариант - октри.
Вы должны действительно испытать оба решения и искать пути их улучшения.

Кроме того, запуск алгоритма через RenderScript может значительно ускорить его.

Быстрый парный алгоритм на основе ближайшего соседа, создающий высококачественные 256-цветные 8-битные PNG-изображения, минимизирующие потери цвета для фотографий с красными губами и поддерживающие 256 или менее цветов с прозрачностью. Временная сложность метода составляет O(N log N).

Демо-проект для Android написан на Java, используя нажатие кнопки, чтобы напрямую преобразовать образец изображения в 256 цветов. ссылка на github

скриншот демо-приложения

Другие вопросы по тегам