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