Какой самый быстрый доступный алгоритм квантования цвета для 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 цветов?


person Cat    schedule 26.06.2014    source источник
comment
Что-нибудь новое по этому поводу?   -  person Dario    schedule 17.10.2014
comment
Я нашел более быстрый алгоритм (медианный разрез), но после обработки изображения выглядят ужасно. Так что я закончил многопоточность neuquant   -  person Cat    schedule 17.10.2014


Ответы (2)


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

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

person Teovald    schedule 06.06.2015

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

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

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

person Miller Cy Chan    schedule 15.10.2018