New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
model quality? #4
Comments
-slice 100 is like jpeg 70-90%. -slice 130 is close to lossless when transcoding from jpeg. With default djvulibre coefficients jpeg images I tested may look blurry. So I don't know which coefficients will be better |
@plzombie say:
А вот здесь ты не путай. В PDF-ках JPEG в районе "At this writing the default JPEG quality level of 75" и ниже при DPI 150. А качество выше подпадает в категорию Ежели совсем не нравится PS: К тому же я верхнюю границу открываю. Делай хоть PS2: Так то по логике надо брать логарифмическую шкалу вида PS3: Прошёлся по имеющимся djvu-шкам. Все как один |
Hi @plzombie . Я тут заметил, что ежели использовать логарифмическую модель: n = (n < 0) ? 0 : n;
keys->quality = (float)n;
float lq = log10(1.0f + keys->quality * 0.09f);
vector<int> nf, nb;
nb.push_back((int)(lq * 76.0f + 0.5f) + 5);
nb.push_back((int)(lq * 84.0f + 0.5f) + 5);
nb.push_back((int)(lq * 95.0f + 0.5f) + 5);
keys->slices_bg = nb;
nf.push_back((int)(lq * 95.0f + 0.5f) + 5);
keys->slices_fg = nf; то качество, которое "хочешь" ты будет соответствовать |
@plzombie say:
Слегка перебор. Дефолтное качество не для фоток. Для фоток качество должно быть явно выше дефолтного. И в этом плане твоё искусственное ограничение шкалы quality сверху мне совсем не нравится. Ничуть не меньше, чем линейность самой твоей шкалы. Что мешает для фоток устанавливать @plzombie say:
Ну как сказать. Картинка в 600 DPI сжимается гораздо хуже, чем картинка в 100 DPI (общий размер), но выглядит гораздо лучше, даже ежели quality ниже. :) |
Я -quality 100 рассматриваю не как дефолтное значение, а как "отличное" качество. А по умолчанию можно и -quality 75 сделать. -bgs 3 -fgs 2 же тоже совершенно не подходит для -dpi 200 например
Это уже скорее особенности c44/cjb2. Ну и если изображение сначала сделать чб потом даунскейлить в 6 раз, естественно результат будет лучше, чем если наоборот |
@plzombie say:
Так и стоит. @plzombie say:
Где то в описании DjVu жирными буквами написано "не менее 300". Так всё-таки, что делать со шкалой? Ты меня ни разу не убедил. Исскуственность 130 глаза режет. Предлагаю ещё раз пользовать нелинейную шкалу (sqrt, log10) с 100 в качестве дефолта (ака как у всех), а к всем "особо ценным" материалам применять значения более 100 или пресеты без ограничений сверху. PS: В depress ты в качестве дефолта можешь пользовать quality > 100. Главное, чтобы шкала была одинаковой. PS2: Логарифмицеская шкала выдаёт:
|
@plzombie say:
Я бы не советовал сегментацию и IW4 (downsample) для фоток. DjVu позволяет использовать JPG в качестве цветной компоненты. Подробности смотри в djvujpgpack (режим lossless). Плюс к этому фотоальбомы я лично клепаю либо в jpeg2pdf, либо 7z: ZIP {images + description.txt} rename to CBZ (перед упаковкой рекомендую пройтись jpeg-recompress). |
Сегментацию для фоток, понятное дело, не имеет смысла. |
@plzombie say:
Процент от чего? От 130? А 130 - это что? Вот хде вопрос. Потестил я шкалку, а заодно поковырял свои djvu-шки и пришёл к следущим выводам:
Следовательно: n = (n < 0) ? 0 : n;
keys->quality = (float)n * 0.01f;
float lq = log10(1.0f + keys->quality * 9.0f);
vector<int> nf, nb;
nb.push_back((int)(lq * 57.0f + 0.5f) + 17);
nb.push_back((int)(lq * 66.0f + 0.5f) + 18);
nb.push_back((int)(lq * 69.0f + 0.5f) + 19);
nb.push_back((int)(lq * 77.0f + 0.5f) + 20);
keys->slices_bg = nb;
nf.push_back((int)(lq * 80.0f + 0.5f) + 20);
keys->slices_fg = nf;
PS: Давай не "колхозить". Давай шкалу сделаем "как у всех", а вот дефолты и пресеты понапихаем свои. Здесь даже вопрос документации присутствует. Я вот запросто напишу, что общепринятое значение |
@plzombie . Надо к чему то приходить. Меня категорически не устраивает твоя шкала. Тебя чем то не устраивает моя. Предлагай тогда хоть что то более вменяемое. Будем посмотреть. Но так как щаз оставлять точно не следует. PS: Предлагаемый вариант как минимум должен иметь возмость сделать "как у всех". |
Что ты подразумеваешь под "как у всех"? Если стандартные параметры в djvulibre, то у меня это -quality 69 |
@plzombie say:
@zvezdochiot say:
И "это" никак не влияет на откровенную негодность линейной шкалы! PS: Я щаз вожусь с |
Это djvu solo такие параметры выдаёт? |
@plzombie say:
Нет. DjVuSolo не умеет FG44. @plzombie say:
@zvezdochiot say:
"Это" категорически не нравится моим глазам. И мне не нравится искусственный верхний предел. @plzombie say:
Уверен? Только вот именно он является частью PDF: CCITT Fax Group{3,4}, JBIG2. |
По мне, там явно есть прогресс между 0, 15, 25, 40, 50, 60, 70...
Ну ок. То что в tiff запихнули zip(deflate), jpeg и jbig не отменяет того факта, что люди предпочитают png(deflate), jpeg и... где там используется jbig |
Ну можно для quality < 70 как раз использовать степенную функцию. Но выше -slices 130 я не вижу смысла делать. И никто тебя не заставляет у себя в программе делать верхний предел |
@plzombie say:
Что у тебя со зрением? Или самовнущение? Тогда сравни с mfbdjvu в нынешнем состоянии шкалы. @plzombie say:
Мне ненужен png(deflate)! Он не подходит для MFB! Мне нужен CCITT Fax Group4, JBIG2. (И кстати, в PDF нифига не PNG, а его извращённая страшным образом производная). @plzombie say:
Значит ты против того, чтобы наши шкалы совпадали? Или что ты сказал? А чего тогдя я здесь распинаюсь? |
@plzombie say:
Всё познаётся в сравнении:
@plzombie say:
Вообще то разговор был за PDF. Ежели вернуть всё на места, то да. Tiff и JPEG встраиваются в PDF без перекодирования (в отличии от PNG). |
png - lossless. Все lossy алгоритмы для png основываются на том, что ты сначала применяешь квантование/постеризацию к исходному изображению |
@plzombie say:
Tiff тоже по большей части lossless. И? В PDF PNG находится в уродливом извращённом виде. Нах он там нужен? Почему? Потому что Adobe пользует "слегка" свой deflate. |
Hi @plzombie . Тестирование последней версии log_quality: Согласно более направленной на человеческое восприятие VIFP1 шкала очень даже лаконична. Но! Она же позволяет сдвинуть шкалу на дефолтное значение 75 вместо 100 (см. график) Логарифмическая шкала с дефолтом в 75: n = (n < 0) ? 0 : n;
keys->quality = (float)n * 0.01f;
float lq = log10(1.0f + keys->quality * 12.0f); // == 1.0 for quality 75
vector<int> nf, nb;
nb.push_back((int)(lq * 57.0f + 0.5f) + 17);
nb.push_back((int)(lq * 66.0f + 0.5f) + 18);
nb.push_back((int)(lq * 69.0f + 0.5f) + 19);
nb.push_back((int)(lq * 77.0f + 0.5f) + 20);
keys->slices_bg = nb;
nf.push_back((int)(lq * 80.0f + 0.5f) + 20);
keys->slices_fg = nf;
ls -l *.djvu
701768 mona.ppm.q025.djvu
722521 mona.ppm.q050.djvu
777396 mona.ppm.q075.djvu
892305 mona.ppm.q100.djvu
1039080 mona.ppm.q125.djvu |
Я визуально их почти не отличаю с конца второго ряда. Могу, допустим, в свою программу добавить выбор метрики для quality |
@plzombie say:
Не обязательно. Главное, чтобы они как то и в чём то пересекались. Особенно в ключевых точках. Какие slices выдаёт твоя метрика для quality 75 и 100? Ежели более-менее будут "похожи", то и пёс с ним. PS: Или найди на своей шкале значение наиболее похожее на мои quality 75. |
67-70 примерный аналог твоего 75 |
@plzombie say:
Всё гуд. Сборочку сделаешь? |
Ок, сейчас |
@zvezdochiot Посмотри здесь варнинги, связанные с неявным приведением типов plzombie/depress@05c6d45 Строки 351,359,613,621 - не совсем понятно, зачем ты к float приводишь, если обе переменные - int, и результат будет приведён к int |
@plzombie say:
Line 85 in a5d2a22
Твою ж мать. А ведь накопители должны быть в float (оберег для больших изображений). И ведь делал же вроде. Ну как так то? Хотя и long -и сойдут. Тогда действительно запарился и перенедокумекал. Уберу. Спасибо.
PS: Можешь так же писать в дискуссии. Они есть и для отдельных реп и общие для организации. |
Привет @plzombie . Сделаешь, как будет время, сборку https://github.com/ImageProcessing-ElectronicPublications/mfbdjvu/releases/tag/2.1 ? А то на ru-board смог сослаться только на 2.0. |
@zvezdochiot |
@plzombie |
Hi @plzombie .
New model BG/FG quality.
Old [0,100] {default = 75}:
mfbdjvu/src/mfbdjvu.cpp
Lines 155 to 163 in fb7f456
New [0,Inf] {default = 100};
sqrt
)!PS: I don't like the upper limit of the old model.
The text was updated successfully, but these errors were encountered: