Реальные ИИ-пиксели
Хоть мне и удалось уговорить ИИ генерировать изображения примерно нужного пиксельного размера и стиля, и они выглядят как пиксельная графика, есть вторая огромная проблема: это вовсе не пиксельные изображения, которые можно взять, отредактировать, и задействовать в проекте.
О чём я говорю: ИИ выдаёт спрайт какого-нибудь размера, например, 16 на 24 пикселей, в форме картинки с разрешением типа 1024 на 1024. Фактическое разрешение спрайта внутри картинки неизвестно. При этом границы пикселей размыты, сами пиксели имеют неопределённый дробный размер, иногда они разного размера, имеют вкрапления не-пиксельных элементов. И цвета у них неоднородны, присутствует лёгкая сетка, их количество также неизвестно.
Из-за этих проблем нельзя просто уменьшить изображение и получить чёткие пиксели: неизвестно, до какого размера его уменьшать — разве что считать пиксели глазами — и после такого уменьшения в силу не целочисленного размера пикселей получается размытая каша и нечёткие края. Получается ситуация «висит груша. нельзя скушать»: пиксели видны, но они эфемерны. Нужно их как-то вытащить.
Результат простого уменьшения до посчитанного глазами размера, получились размытые детали и контуры:
Готовые ИИ-решения, обещающие генерацию пиксельной графики, решают вопрос довольно тупо: генерируют графику непонятного разрешения и содержания, а потом применяют к ней мозаичный фильтр и цветовую квантизацию, уменьшая разрешение и цветность до заданных. Результат выглядит довольно похоже на пиксельную графику, но не на такую, какую я генерировал выше.
Например, ранее эту операцию выполнял плагин Pixelization для AUTOMATIC111, и скорее всего подобные по сути, но более совершенные алгоритмы применяются и на специализированных сервисах создания для пиксельной ИИ-график, отличающиеся устранением «лишних» пикселей непонятных оттенков.
Другой вариант: попытаться с помощью алгоритмов найти пиксели в картинке высокого разрешения и составить новую, реально пиксельную картинку. Ведь мы же видим, что пиксели там есть — значит возможно их получить.
Но как это сделать? Представляя, как это должно работать, я просто попросил ИИ (DeepSeek) написать мне программу на Питоне, которая позволит делать такую конверсию, применяя разные настраиваемые алгоритмы, и просматривать результат с увеличением. Это заняло несколько часов, я постепенно уточнял требования и указывал на проблемы, и результат был получен, в том числе с неплохо работающим довольно сложным алгоритмом вычленения пикселей. Я его даже не придумывал, и вообще, не написал ни строчки кода. Честно говоря, я в шоке, что это работает.
После этого я ещё погуглил, и нашёл, что существуют другие готовые решения, которые пошли тем же путём. Например, Unfaker (работает в браузере). Как и моё ИИ-решение, он может спотыкаться на некоторых картинках. На простых он даёт отличный результат сразу из коробки, для сложных имеет множество хитроумных настроек. Моя же программа имеет преимущество в возможности свободного эксперимента, позволяя дописывать новые модули с алгоритмами специально под задачу.
Нейропиксели получены, новые горизонты открыты!
zip
pixelilfy_ai.zip369.16 Kb
Вайб-код своего (теперь даже не знаю, как это называть) решения прилагаю. Для работы программы нужно установить сам Python 3, а потом пакеты (набрать в cmd):
pip install tkinterdnd2 Pillow numpy scipy imagequant
ии
пиксели