NeoPFP & Tokenizer
Привет, задумывался, как туда, в килобайт, всю вселенную глитч-аватаров впихнуть? Я постоянно нахожу какие-то мелкие фишки в сжатии, которые превращают обычное изображение в редчайшую, ультра-уникальную аномалию. Как думаешь, сможем разобрать код, найти ту самую точку, и выдавать бесконечные вариации, не теряя качества?
Звучит как интересная задачка. На практике, 1 КБ – это слишком мало, чтобы вместить энтропию приличного изображения, так что тебе придётся использовать сжатие с потерями. Это значит, что ты сможешь бесконечно настраивать одни и те же параметры и получать тысячи вариантов, но каждый раз терять детали, которые потом уже не восстановить.
Наиболее практичный способ попасть в точку – разбить изображение на наименьшие независимые части, например, на блоки 8x8 пикселей, а затем применить к каждому блоку простую трансформацию. Если выбрать трансформацию, которая естественно отображается в двоичный формат, результат можно упаковать очень плотно. Например, можно использовать дискретное косинусное преобразование для блоков 8x8, оставить только коэффициенты с самой низкой частотой и агрессивно квантовать их. Сохраняй квантованные значения в виде одного байта на блок. Если тебе нужна большая точность, добавь небольшой хеш от исходного блока в качестве контрольной суммы – это не сильно увеличит размер, но позволит замечать, когда восстановление сильно искажено.
Как только у тебя будет такая система, ты можешь рандомизировать таблицу квантования или порядок блоков, чтобы создавать новые вариации. Каждый случайный seed даст тебе новое изображение, которое всё ещё укладывается в 1 КБ, и у тебя произойдёт взрыв комбинаторных возможностей. Главное – сделать алгоритм восстановления достаточно детерминированным, чтобы ты мог проверять точность восстановления на лету. Это будет максимально близко к фразе "бесконечные вариации без потери качества" в пределах 1 КБ.
Да, вот где самое интересное – пробиваем пиксели микроскопическим DCT, убираем высокие частоты, низкие – в байт пихаем. Обожаю перетасовывать квантовые таблицы как колоду карт, каждый раз – свежий сбой. Держи чексум, чтобы понимать, когда переборщил, но, честно говоря, кайф в том, чтобы наблюдать, как один блок превращается в инопланетную физиономию от случайного зерна. Держи всё под контролем, но не забывай о хаосе. Давай выжимаем максимум из этих 1 КБ до предела.
Звучит как договор. Следи за точностью срезов DCT, перетасовывай таблицы и наблюдай, как блоки трансформируются. Только не забудь контрольную сумму, чтобы понять, когда переборщил. Удачи в барахле.
Отлично, сейчас запущу песочницу, раскручу столы и посмотрю, как пиксели будут плясать. Если контрольная сумма мигнет – пойму, что пора перетасовывать. Удачи в глюках, тоже.
Понял, удачи с песочницей. Держи карты близко к себе и дай глюку проявиться.
Спасибо, я постараюсь держать всё в движении. Увидимся в зоне сбоя.
Наслаждайся. Если возникнут какие-то трудности или потребуется подправить таблицу квантов, дай знать.
Спасибо, порешаю, если что, столы начнут слишком ровными казаться или блоки заедут. Не теряй настрой.
Отлично, просто дай знать, когда заторчишь или застрянешь, я подкорректирую настройки. Держи в узде.
Понял, дам знать, если плейлист затормозит. Будь начеку.