Java применяет эффект мультипликатора

Я хочу создать фильтр изображения, который создаст эффект мультипликатора. Я пытаюсь что-то вроде этого -

cartoonizer

Пожалуйста, помогите с процедурой для достижения этого. Мне нужно, чтобы это было сделано на Java.

Если работающий код невозможен, по крайней мере, дайте мне некоторое представление о том, как обычно это делается. Поскольку сейчас это делают многие веб-сайты, я предполагаю, что это не должно быть слишком сложно.

То, что я пробовал до сих пор, это -

BufferedImage in = ImageIO.read(new File(basePath + "in11.jpg"));
BufferedImage out = new BufferedImage(in.getWidth(), in.getHeight(), BufferedImage.TYPE_INT_ARGB);

EdgeFilter edgeFilter = new EdgeFilter();
edgeFilter.filter(in, out);

GrayscaleFilter grayscaleFilter = new GrayscaleFilter();
grayscaleFilter.filter(out, out);

InvertFilter invertFilter = new InvertFilter();
invertFilter.filter(out, out);

Но это код для создания эффекта эскиза (я использую фильтры JHLabs по этой link< /а> ). Выход такой -

выходной эскиз

Теперь мое предположение заключается в том, что если я смогу реализовать фильтр, который уменьшит количество цветов в моем изображении, а затем, если я наложу его на изображение эскиза, я могу получить желаемый эффект. Но я не знаю, как реализовать это.


person Krishnendu    schedule 29.11.2014    source источник


Ответы (1)


  • перекрасить объект, используя палитру с небольшим количеством цвета (метод k-средних подходит, чтобы определить, какие цвета использовать, но вы должны определить количество цветов)
  • необязательно: используйте морфологические операции для фильтрации шума (расширение + эрозия)
  • найти края (Канни и т. д.)
  • упростить ребра, используя любой из алгоритмов упрощения контура

Другой способ — использовать фильтр двустороннего сглаживания на его крайних параметрах (очень сильно сглаживает): см. пример и код.

OpenCV lib подходит для этого, он также поддерживает Java, или вы можете использовать JavaCV в качестве прокси-сервера Java-openCV.

person Vit    schedule 30.11.2014
comment
Привет Вит, спасибо за ответ. но не могли бы вы объяснить подробнее. я не могу получить все из них ясно. - person Krishnendu; 01.12.2014
comment
Подробное объяснение займет страницы, но оно того не стоит, так как везде хорошо описано. Термины: кластеризация k-средних, морфология, обнаружение границ Кэнни, упрощение контуров. Например, после уменьшения палитры на pyimagesearch .com/2014/07/07/ вы можете найти упрощенные контуры, используя docs.opencv.org/modules/imgproc/doc/. - person Vit; 01.12.2014
comment
Привет Вит, спасибо. Я попробую. не могли бы вы посоветовать мне книгу или учебник по обработке изображений для новичков. я чувствую, что должен знать эти термины в мелких деталях. это может помочь мне в других моих проектах. - person Krishnendu; 02.12.2014
comment
Я никогда не читаю книги, только статьи и документы. Попробуйте это docs.opencv.org/doc/tutorials/tutorials.html - person Vit; 02.12.2014