LINUX.ORG.RU

Психовизуальный хеш для кожаного

 ,


0

2

Есть задача – снабдить строчку текста картинкой, но места под них нету. 100 байт, 200 край. Картинка нужна такая, чтобы кожаный только узнал что там изображено, никакого качества, но чтобы была цветная. ЖпегХР картинку 32х32 жмёт в 400 байт при качестве 5%, ниже уже просто блоки.

Может есть какой нибудь формат, где психовизуальную модель стероидами накачали? Чтобы смотреть на кучку пикселей и однозначно в них узнавать например Джеймса Бонда?

★★

Последнее исправление: hobbit (всего исправлений: 1)

Нужно свелоспедить свой векторный формат.

Скажем таблица картинок в нормальном разрешении а в 200байт просто номер позиции в таблице:-)

Или набирать картинку из примитивов - круг, квадрат и т.д. Для задания переходов цвета использовать градиенты.

AntonI ★★★★★
()
Ответ на: комментарий от CrX

Можно ещё на основе Z-кривой (октодерева) сваять свой упакованый растровый формат, как раз 4 бита на узел/лист - 16 цветов. Разрешение для 200байт должно быть выше чем 20х20 пикселей, 32х32 или даже 64х64 уже нормально.

В принципе за полдня на коленке легко делается, включая отладку.

AntonI ★★★★★
()
Ответ на: комментарий от greenman

Каждому кожаному нужен будет свой ИИ обьясняющий что нарисовано, профит!

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

AntonI ★★★★★
()
Ответ на: комментарий от CrX

Кстати, там первые 12 байт можно отрезать. В начале идёт «RIFF», затем 4 байта на размер файла (его можно высчитать же из собственно размера), и затем WEBP. Можно их отрезать, а потом обратно приделывать, когда нужны.

Давно я такого байтодрочерства не читал. Прямо как музыка для ушей после современного подхода(200Мб хелловорлд - пофиг) к разработке.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от anonymous

YUV422

вот, кстати, да, если использовать современные алгоритмы сжатия на нейросетях, которые сжимают с плотностью до 1 бита на байт, без потерь, то картинку 32x32, где всего 1024 пиксела, получится сжать в `(1024 + 512 + 512) / 8 = 256 байт. это lossless. если же взять YUV420, то получится уложиться в 192 байта.

а если lossy, то там до сотни раз можно сжатие получить.

но это в теории. на практике, конечно, чобы это реализовать, надо быть белларом, не меньше.

anonymous
()
Ответ на: комментарий от anonymous

современные алгоритмы сжатия на нейросетях

гуглится по «learned image compression».

вот, отличный алгоритм с готовыми моделями: https://github.com/JiangWeibeta/MLIC

в сравнении с другими алгоритмами, включая jpeg и bpg от беллара, на ультра низких bpp (bits per pixel): https://0x0.st/Xq0L.png

в публикации они почему-то не сравнивают свой алгоритм визуально с ещё одним очень крутым — ELIC, реализация которого тоже есть на гитхабе, на без готовых моделей.

если на один пиксел будет приходится 0.2 бита, то за 200 байт тс сможет передавать полноцветные картинки приемлемого качества размером 100x80 пикселов. в теории, опять же)

anonymous
()
Ответ на: комментарий от CrX

Но если там не пиксельное, а ресайз фоток, то такой вариант не пойдёт

можно нейронку подключить для ресайза пиксельного. Как финальную стилизацию делают всякими LoRA (кстати тут она и нужна), по идее можно взять/научить свою которая будет уменьшать количество цветов и вообще упрощать картинку

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 2)
Ответ на: комментарий от Nervous

Не уверен... Может у меня нос плохой конечно, но скорее память на запахи, но запахов я не так много запоминаю (представить себе картинку звук в голове как нефиг делать, представить запах можно, но гораздо труднее). Не больше пары десятков могу легко представить с которыми регулярно контактирую, например запах скошенной травы или сирени потому как и траву скошенную каждое лето встречаю и сирени кустов 10 у меня растёт. Хотя отличить один запах от другого могу без проблем.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

JPEG XL

a avif разве не лучше на низких bpp? да и с распространённостью у него, вроде бы получше.

где ты смотрел сравнения форматов? я весь интернет перерыл, ничего вразумительного не нашёл.

anonymous
()
Ответ на: комментарий от peregrine

в перспективе — возможно, но в данный момент в браузерах jxl не поддерживается, а хром и вовсе задеприкейтил формат.

Status: Won’t fix (Obsolete)

ну да ладно, формат-то на самом деле топовый, особенно если учесть скорость кодирования.

я пошарился по исходниками и нашёл факт, который может быть интересен @DumLemming’у. у avif заголовок файла, занимающий в лучшем случае около 300 байт (282) не сжимается компрессором и поэтому его можно отрезать, если у изображений будет один и тот же формат пикселей и разрешение.

(в jxl, к сожалению, жмётся всё, кроме первых двух магических байтов.)

вот, для примера, картинка 40x40 с джеймсом бондом, которая будет весить 201 байт, если отрезать от неё заголовок. оригинал в png.

скрипт для отрезания avif-заголовка: https://0x0.st/XbHC.py

convert any_image.ext -strip -resize 40x40\! -alpha off image.png
avifenc -s 0 --target-size 482 image.png image.avif
# или avifenc -s 0 -q ...
./avifx.py image.avif > image.avifx
./avifx.py -d image.avifx > image.avif
anonymous
()