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

#android #performance #algorithm #color-palette #quantization

#Android #Производительность #алгоритм #цветовая палитра #квантование

Вопрос:

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

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

Комментарии:

1. Что-нибудь новое в этом?

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

Ответ №1:

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

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

Ответ №2:

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

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

скриншот демонстрационного приложения