Новый метод ресайза: программа С3С Image Size

Всего 811 сообщ. | Показаны 341 - 360
Re[megapolis]:
не готов сказать по времени. У меня написан экшн для шопа, включающий кроме ресайза частотное разложение, шумоподавление и т.д. экшн включает два резайза с раскладыванием результатов по папочкам. Отработка всего экшена для 1000 кадров это примерно часа 4. ( 4 ядра последнего поколения, 16 гигов оперативы, 2 SSD). После конвертации из RAW я запускаю на ночь и иду спать. Изображения jpg. Конечно, время играет важную роль. И обработка одного изображения даже с результатом видимо превосходящим автоматический аналог - это исчезающе малая по употребляемости задача. Ну и там в этом случае будет tiff (не знаю скажется ли это на работе алгоритмов). Ну и в любом случае - хотелось бы использовать привычные действия в обоих случаях.
Re[c3c]:
полистайте немного тему, тут было много сравнений на реальных примерах, причем как на снимакх с цифры так и на сканах пленки.
Re[shijan]:
я предлагаю взять всем для дальнейших исследований что то единое, но жизненное. А так - я таких тем перечитал и переписал вагон. И эту тоже конечно. Жаль сейчас времени нет участвовать в отвлеченно научных изысканиях..

Практически получается так: когда применяешь практически метод (программу) ресайза которая в теории самая лучшая (ну или вроде как более подходящая) - может оказаться что конечный результат будет неожиданным. Потому что - математическая безупречность - это не всегда то - что нужно.
Re[ally_a]:
[quot]я предлагаю взять всем для дальнейших исследований что то единое, но жизненное[/quot]
Наверное, лучший вариант — это мира с цветочками, ниточками, ресницами и волосами :). Пожалуйста сделайте такую фотографию. Мира нужна обязательно, чтобы было видно, как разные частоты реагируют на математическую обработку. Одних цветочков недостаточно.
[quot]Практически получается так: когда применяешь практически метод (программу) ресайза которая в теории самая лучшая (ну или вроде как более подходящая) - может оказаться что конечный результат будет неожиданным. Потому что - математическая безупречность - это не всегда то - что нужно. [/quot]
Алгоритмам интерполяции абсолютно всё равно, что они там интерполируют. Бездушные вещи, однако. К сожалению, математической безупречности в этом вопросе нет, есть различные варианты приближения. Поэтому понимание крайне необходимо всем, в том числе и практикам, далёким от математики. А вот когда бикубиком называют что попало, то это только вводит всех в заблуждение.
Re[megapolis]:
Отвечу тут. Смотрите - вот типичная задача по изменению размера изображения - я опишу свой рабочий процесс (далеко не универсальный и не идеальный)с пояснениями, которые, возможно, расскажут о типичных потребностях юзеров:

1. Конвертация из RAW (я использую С1) - на выходе например 1000 файлов jpg разного размера и ориентации. В С1 отключены шумодав и повышение резкости - потому что спецплагины справляются с этим лучше.

2. Работа Photoshop:
- написан скрипт который запускает акции раздельно для портретной и ландшафтной ориентации.
- Шумоподавление (плагин)
- частотное разложение.
- обработка кожи (плагин)
- Тонирование или раздельная работа с цветом(плагин)
- сохранение в нужную папку
- Изменение размера до А4 + повышение резкости, сохранение в нужную папку.
- назад в истории действий
- изменение размера до 1200х800 (под веб).
- повышение резкости, (рамочки/подписи если нужно)
- сохранение в нужную папку.

Все.
Ресайз под А4 приводит все кадры после кадрирования в конвертере под один размер (под печать) и убирает попиксельные косяки. Настройки повышения резкости под печать и под веб разные. Размер ресайза по длинной стороне задается соответственно раздельно для портретной и ландшафтной ориентации.

Действия изменения размера находятся в середине экшена, то есть = все средства для изменения размера должны управляться фотошопом. Это так потому - что само по себе изменение размера хоть и очень важная, но не единственная задача постобработки. И иметь вместо одной программы (фотошопа) несколько разных прог под разные задачи - заломно.

По рабочему процессу видно - что там много чего нужного и полезного сведено вместе и поручено автоматике.

ИМХО те - кто работает с одним изображением дотошно и индивидуально - легко справятся со всеми косяками ресайза средствами фотошопа. Например одно время я накладывал друг на друга две картинки уменьшенные бикубиком и билинейно с настроенными параметрами смешения слоев и т.д. Есть много хитростей. Но, хочется что бы именно шоп делал это автоматически, корректно и с настраиваемыми параметрами.

Да, - изменение размера почти всегда вниз. И (как и сделано сейчас в этой проге) если исходный размер уже меньше - его не нужно трогать.
Re[ally_a]:
Господа! Для дальнейшего развития программы нужен материал для тестирования, подготовленный понимающими людьми (зацените комплимент :)).

Поэтому обращаюсь к заинтересованным, в особенности к критикам, с просьбой предоставить примеры снимков. Тех снимков, на которых по вашему мнению С3С Image Size проигрывает конкурентам или просто дает недостаточную резкость, микроконтраст и т.д. Лучше, если это будут реальные снимки, не мишени.

Требуется:
1) Оригинальный снимок исходного размера. Подойдет jpeg с не слишком сильным сжатием.
2) Результат ресайза C3C Image Size (jpeg) с указанием, какой алгоритм применен (их сейчас два).
3) Результат ресайза конкурирующими программами (jpeg) до такого же размера с указанием какой программой и с какими параметрами выполнен ресайз.
4) Ваш сравнительный анализ двух вариантов.

Постить, наверное, можно сюда или мылом на plug-ins собака mail.ru.
Re[c3c]:
Вы не там ищете :)
Возьмите ImageJ (бикубический алгоритм совместно с методом наименьших квадратов) и эта программа даже без встроенного учёта гамма-коррекции даст результат, который лучше любого другого алгоритма. Я проверял много раз на реальных фотографиях и всегда было именно так, причём для самых разных алгоритмов.

Есть другой важный момент: что именно сравнивать и как определять результат. Тема не новая, поэтому эта методика известна давно. Во-первых, нужно определиться с алгоритмами. Не нужно прятаться за эвфемизмами типа «С3С №2» (напоминает «Столовое игристое №3»), нужно определить в явном виде ядро интерполяции, чтобы понимать, какие именно методы сравниваются. Обычно это довольно простая формула, которая определяет методику вычислений, и в С3С она несложная.

На примере Фотошопа этот момент виден особенно отчётливо. У Фотошопа есть 4 варианта кубической интерполяции и это полный нонсенс. В теории доказано, что кубическая функция, которая даёт минимальную ошибку интерполяции существует лишь одна. Все остальные дают бОльшую ошибку, так что использование других бикубиков изначально лишено смысла. Но объяснение этому факту вполне можно найти. По всей видимости, к бикубику Фотошопа добавлено что-то ещё, и, скорее всего, это шарп. Но при этом не указаны его параметры, что просто вводит в заблуждение. Не исключено, что это и не шарп вовсе, но это наверняка явное дополнение, не имеющее отношения к бикубику. Очень важно называть алгоритмы своими именами, тогда станет понятно, что и с чем сравнивают. Иначе это кот в мешке.

Измерение качества — важнейший момент в таких исследованиях. Поскольку процедура ресайза необратимая, то непонятно, что и с чем можно сравнивать. Впечатления от результатов ресайза важны, но их пока нечем измерить. Тем не менее, есть очень простая методика измерений: нужно сделать ресайз туда и обратно, а затем сравнить с исходным изображением (вычислить одну из метрик PSNR, MSE, SSIM). Понятно, что задачи уменьшения и увеличения размера различаются по смыслу и по используемым подходам, но на сегодняшний день это один из лучших методов объективной оценки.

Алгоритм интерполяции представляет собой некоторую модель для вычислений промежуточных значений, поэтому применение его в обе стороны демонстрирует адекватность модели, но не является абсолютно точным решением задачи измерения качества. Можно обратный ресайз делать каким-либо фиксированным алгоритмом (одинаковым для всех тестов), это повысит достоверность измерений. Я проверил такой подход на разных примерах и всегда результат измерений совпадал с моей субъективной оценкой. Такая методика позволяет измерять качество для любых изображений и любых алгоритмов, причём очень быстро.
Re[c3c]:
а вот интересно - есть плагин, а можно ли к нему в свою очередь сделать API (вместо страшного Adobe'ского) чтобы просто добавлять туда свою математику ресайзов по желанию ? вопрос автору конечно же.
Re[megapolis]:
Я внимательно и с интересом читаю Ваши посты. И, как вижу, Вам не чужды точные науки. Поэтому давайте будем точны в формулировках.

Цитата:
от: megapolis
Вы не там ищете :)


Мне кажется :), точнее было бы сформулировать так: "Вам показалось, что я ищу не там, где, как Вам кажется, было бы правильно искать" :)

А дальше так. Вы считаете аксиомой, что ресайз - это интерполяция. Это не аксиома. Сенсель матрицы - не точка. И снятое с него значение - не величина сигнала в точке, а результат интегрирования (тройного) по площади и времени. Поэтому остальные рассуждения хоть и не бессмысленны, но очень небесспорны.

Цитата:
от: megapolis
Возьмите ImageJ

Дельный совет. Только у меня нет ресурса, чтобы "взять" все сколько-нибудь интересные программы, подобрать к ним тестовые снимки, отресайзить, предъявить результаты референтной группе, обработать результаты и т.д. Поэтому я и обратился к тем, кто уже проделал такие сравнения, с просьбой предоставить мне эти материалы.

Если Вам интересно, могу ответить подробней и по некоторым частностям из Вашего поста, но, честно сказать, длинно писать не люблю, а коротко вряд ли получится. С уважением.

Re[deejjjaaaa]:
Цитата:

от:deejjjaaaa
а вот интересно - есть плагин, а можно ли к нему в свою очередь сделать API (вместо страшного Adobe'ского) чтобы просто добавлять туда свою математику ресайзов по желанию ? вопрос автору конечно же.

Подробнее


Можно конечно. Только не нужно. Мне - точно.
Re[c3c]:
[quot]Вы считаете аксиомой, что ресайз - это интерполяция. Это не аксиома. Сенсель матрицы - не точка. И снятое с него значение - не величина сигнала в точке, а результат интегрирования (тройного) по площади и времени. Поэтому остальные рассуждения хоть и не бессмысленны, но очень небесспорны. [/quot]
Очень интересно. Особенно про то, как можно учесть это тройное интегрирование в методике ресайза. Конечно, пиксел не является точкой, но насколько мне известно, получить распределение сигнала по его поверхности пока не представляется возможным. Или у Вас есть другая информация? Если ресайз не является интерполяцией, то тогда чем он является? В чём именно слабые места рассуждений?
[quot]Дельный совет. Только у меня нет ресурса, чтобы "взять" все сколько-нибудь интересные программы, подобрать к ним тестовые снимки, отресайзить, предъявить результаты референтной группе, обработать результаты и т.д. Поэтому я и обратился к тем, кто уже проделал такие сравнения, с просьбой предоставить мне эти материалы.
[/quot]
Не нужно брать все. Тем более, что в подавляющем большинстве программ ресайза одни и те же алгоритмы с несущественными добавками. Возьмите ImageJ в качестве самого лучшего, ну и Фотошоп впридачу. Это краткое резюме по моим исследованиям этого вопроса. И обязательно нужно реализовать способ измерения качества ресайза, чтобы иметь численный критерий для оценки получаемых результатов.
[quot]Если Вам интересно, могу ответить подробней и по некоторым частностям из Вашего поста, но, честно сказать, длинно писать не люблю, а коротко вряд ли получится.[/quot]
Спасибо, это очень интересно. Пожалуйста напишите.
Re[deejjjaaaa]:
Мне очень интересно, каким должен быть идеальный плагин для ресайза. Пожалуйста добавьте недостающее или вычеркните лишнее:
1. Определение масштаба: изменение в определённое количество раз (число с плавающей точкой) или приведение к заданному размеру
2. Единицы измерения: пикселы, проценты, миллиметры
3. Список алгоритмов: BOX, билинейный, бикубический, б-сплайн, разные варианты Ланцоша, Гаусс и др.
4. Параметры каждого алгоритма: размер ядра интерполяции, внутренний коэффициент масштабирования для Ланцоша
5. Возможность включения/отключения гамма-коррекции
6. Опция вычисления качества для выбранного алгоритма с текущими настройками

Также интересно, насколько нужна функция увеличения размера при ресайзе?

Для уменьшения/увеличения в степень двойки можно получить очень высокое качество ресайза (даже лучше, чем у ImageJ). Насколько такой частный случай может быть интересен?
Re[megapolis]:
[quot] получить распределение сигнала по его поверхности пока не представляется возможным.[/quot]
Ага. А сводя дело к интерполяции, как раз и делают вид, что возможно.
[quot]Если ресайз не является интерполяцией, то тогда чем он является?[/quot]
"А вдруг они не золотые?" - с сомнением спросил любимый сын лейтенанта Шмидта, ... "А какие же они, по-вашему?!"

По поводу остального. Вы все время подменяете исходную задачу моделью, которая ограничена. Например, при разговоре про единственно возможную и единственно правильную кубическую интерполяцию, забывается что она единственно возможная и единственно правильная только при заранее принятых допущениях. В частности предполагается, что функция гладкая. О точности интерполяции в реальных обстоятельствах говорить вообще бессмысленно, поскольку истинное значение интерполируемой функции в промежуточных точках неизвестно, если не накладывать заранее ограничений на класс функций.

Второе. Попытка установить единственно правильный критерий лучшего ресайза тоже странна. Почему, спрашивается, таким критерием должен быть результат обратной операции? Разве что обоснованием может быть корреляция результатов такого теста и субъективного впечатления.

Желание выполнять сравнения, основываясь на знании внутреннего устройства программы, не кажется убедительным. Честнее использовать модель черного ящика, я считаю.

Re[megapolis]:
Цитата:
от: megapolis
Мне очень интересно, каким должен быть идеальный плагин для ресайза.

Эта схоластика не интересна совершенно.

Вообще, мне кажется, тут уже порядочно троллингом отдает. Может, и не умышленным. Вы навязываете свою повестку и хотите, чтобы я ее осуществлял. У меня своя повестка. Обещать подробный анализ ваших предложений больше не буду. Извините.

С уважением
Re[megapolis]:
[quot]По поводу остального. Вы все время подменяете исходную задачу моделью, которая ограничена. Например, при разговоре про единственно возможную и единственно правильную кубическую интерполяцию, забывается что она единственно возможная и единственно правильная только при заранее принятых допущениях. В частности предполагается, что функция гладкая. О точности интерполяции в реальных обстоятельствах говорить вообще бессмысленно, поскольку истинное значение интерполируемой функции в промежуточных точках неизвестно, если не накладывать заранее ограничений на класс функций. [/quot]
Действительно, в основе любого решения задачи лежит модель и опыт работы в конкретной области знаний. У меня такой опыт есть и представить негладкую функцию для распределения заряда на матрице камеры теоретически можно, а практически я такую ситуацию никогда не встречал. Может быть, Вы видели? Или в Вашем софте есть негладкие функции? Мне кажется, что их там нет.
[quot]Второе. Попытка установить единственно правильный критерий лучшего ресайза тоже странна. Почему, спрашивается, таким критерием должен быть результат обратной операции? Разве что обоснованием может быть корреляция результатов такого теста и субъективного впечатления.
[/quot]Вы неправильно поняли. Это была попытка сделать лучше. Только и всего. Только попытка. Это не единственно правильный критерий, а единственный найденный. Я встречал и другие варианты, но они были хуже.
[quot]Желание выполнять сравнения, основываясь на знании внутреннего устройства программы, не кажется убедительным. Честнее использовать модель черного ящика, я считаю. [/quot] И каков же принцип сравнения у Вашего чёрного ящика? Нравится или не нравится? Тут вопрос не в честности, а в количественном критерии.
[quot]Эта схоластика не интересна совершенно.
Вообще, мне кажется, тут уже порядочно троллингом отдает. Может, и не умышленным. Вы навязываете свою повестку и хотите, чтобы я ее осуществлял. У меня своя повестка. Обещать подробный анализ ваших предложений больше не буду. Извините. [/quot] Этот вопрос был адресован не Вам, а человеку, у которого есть мысли по поводу того, что можно добавить в такой плагин. А что касается вопроса, то мне это действительно интересно. По всей видимости, я не обладаю Вашими знаниями и опытом, чтобы понять, что это схоластика, но я учусь. Благодарю Вас за ответы.
Re[megapolis]:
[quot] негладкую функцию для распределения заряда на матрице камеры теоретически можно, а практически я такую ситуацию никогда не встречал[/quot]
По-моему, гладкую представить трудно. Вот один сенсель, рядом с ним другой. Но не вся площадь сенселя занята собственно сенсором. Вот и разрыв функции на матрице. Хотя я имел в виду даже не матрицу, а исходную сцену. Там все совсем не гладко: края, контуры... И описание кубическими полиномами подобного не вполне адекватно. Недаром есть какие-то успехи с использованием фракталов в этом деле, хотя в подробностях не ориентируюсь.
[quot]Нравится или не нравится?[/quot]
Абсолютно! Мне, как человеку техническому, подобный субъективизм не очень близок, но приходится признавать, что в обсуждаемой области - это важнейший, если не сказать единственный, критерий. Алгоритм, используемый сейчас в программе, представляется физически очень корректным. И я не вижу там никаких изъянов в этом смысле. Но потребителю (и мне в том числе) иногда хочется порезче. Усиление резкости, как известно, достигается некоторым искусственным образом и получается, что искусственные приемы тоже имеют право на существование.
Re[c3c]:
мне кажется что недостаток есть не в резкости а в более заметном алайсинге в мелких деталях. это хорошо видно как на тестовых картинках так и на примере фотографии фасада дома на страничке плагина, там где решетка кондиционера. или например я выкладыал сравнения сканов пленки там видна разница на белых контрастных царапинах...
Re[c3c]:
[quot]По-моему, гладкую представить трудно. Вот один сенсель, рядом с ним другой. Но не вся площадь сенселя занята собственно сенсором. Вот и разрыв функции на матрице. Хотя я имел в виду даже не матрицу, а исходную сцену. Там все совсем не гладко: края, контуры... И описание кубическими полиномами подобного не вполне адекватно. Недаром есть какие-то успехи с использованием фракталов в этом деле, хотя в подробностях не ориентируюсь. [/quot]
Вопрос очень интересный. Можно стоить и более захватывающие теории о невозможности описания реальных картинок непрерывными функциями, но практика говорит прямо об обратном. Даже если предположить, что где-то и когда-то существовала изначально не непрерывная функция интенсивности (на исходной сцене), то дальше ей должно было крупно не повезти, потому что все шаги по регистрации и обработке данных должны были планомерно уничтожать всевозможные разрывы:
1. У каждой камеры есть объектив, который неидеален, потому первая стадия размытия происходит на нём. Фокальная плоскость тоже выставлена с определённой точностью.
2. Пиксели на матрице расположены не вплотную друг к другу и между ними есть промежутки, но есть такое явление как паразитное перетекание заряда между ними (pixel crosstalk), что приводит к некоторому усреднению данных на соседних пикселях, а это ослабляет резкие границы на изображении. Есть и другие механизмы аналогичного влияния соседних пикселов друг на друга.
3. Строго говоря, сырых данных (RAW) не существует, потому что первичная аппаратная обработка начинается на самом пикселе и продолжается на электронике матрицы, а потом и камеры. Эти методы тоже не усиливают разрывы.
4. Конечная разрядность также накладывает дополнительные ограничения на масштаб и на максимальную величину разрывов.
5. Далее есть предварительная обработка (предварительная фильтрация, базовое подавление шума, коррекция по полю и т. д.).
6. Теперь нужно получить цветное изображение из исходных данных. После баланса белого выполняется процедура демозаики (дебайер), которая также основывается на довольно сложной нелинейной фильтрации исходных данных, что опять приводит к сглаживанию.
7. Цветокоррекция тоже не усиливает разрывы.
8. Под конец джипег всё ещё раз слегка размывает, причём это отлично видно даже на синтетических изображениях с изначально резкой границей.

И вот теперь нам нужно делать ресайз такой картинке. С моей точки зрения, ввиду указанных выше аргументов, способ описания сигнала непрерывными функциями имеет основания. А Вы хоть и возражаете против такого подхода, но другого варианта не предлагаете. Так в чём позитивный смысл Ваших возражений?

Про успехи фракталов этом деле я не слышал, но информацию поищу. А математика в лучшем с моей точки зрения алгоритме ImageJ очень неслабая и моделей с разрывными функциями я никогда не встречал. По всей видимости, Вы тоже не встречали. Жаль.
[quot]Мне, как человеку техническому, подобный субъективизм не очень близок, но приходится признавать, что в обсуждаемой области - это важнейший, если не сказать единственный, критерий. Алгоритм, используемый сейчас в программе, представляется физически очень корректным. И я не вижу там никаких изъянов в этом смысле. Но потребителю (и мне в том числе) иногда хочется порезче. Усиление резкости, как известно, достигается некоторым искусственным образом и получается, что искусственные приемы тоже имеют право на существование.
[/quot]
«Физически очень корректный алгоритм» в Вашем исполнении — это простейшее усреднение по соседним пикселям с одинаковыми весами для данных, к которым применили обратную гамму. И как это согласуется с идеями о разрывности изначальных данных? Очень интересно, где в этом усреднении прячется «усиление микроконтраста»?

Как я это понимаю — нигде оно не прячется. Такими словами теперь называется обычное усреднение гамма-корректированных данных. При этом математику заменили на впечатления и все обсуждения теперь находятся в плоскости впечатлений. Вариант беспроигрышный. Но и выиграть так нельзя. Маркетинг не может быть заменой качественному алгоритму. Хотя, маркетинг может. Он очень многое может...

P.S. Всё высказанное ИМХО. Просьба не стрелять. Пианист играет как умеет :)
Re[megapolis]:
[quot]Вопрос очень [/quot]
Как всегда, очень интересно.
[quot] в лучшем с моей точки зрения алгоритме ImageJ[/quot]
Хорошо, что стали добавлять "с моей точки зрения".
[quot]в Вашем исполнении — это простейшее усреднение по соседним пикселям с одинаковыми весами для данных[/quot]
Мне нравятся результаты Вашего reverse engineering, но надо еще копать, пока результат не стопроцентный.
[quot] Так в чём позитивный смысл Ваших возражений? [/quot]
Рассказывать о планах никто не обещал. :)
[quot]Очень интересно, где в этом усреднении прячется «усиление микроконтраста»? [/quot]
Врать не надо! Где написано про «усиление микроконтраста»?
Re[c3c]:
[quot]Мне нравятся результаты Вашего reverse engineering, но надо еще копать, пока результат не стопроцентный.[/quot]
Вы сильно льстите, когда говорите, что это «reverse engineering». Я просто взял стандартные алгоритмы из учебника, добавил гамму и сравнил результаты с теми, что есть на сайте. Если не говорить про «выравнивание контраста», то всё совпало на 100% и дальше копать неинтересно. Я думал, что у Вас там ого-го, а всё оказалось гораздо скромнее. Моя работа даже на диплом не потянет. Так, лабораторная для студентов.

Не вижу смысла исследовать, что там у Вас сделано с контрастом, потому что уровень обоснования результатов и уровень математики уже понятен.
[quot]В этом алгоритме вообще никаких параметров нет. То есть совсем. Просто это - единственно правильный алгоритм. [/quot]
Такие высказывания оставляют крайне неприятный осадок, вот и захотелось посмотреть, что же там на самом деле. Посмотрел. Результаты разочаровали.
[quot]Где написано про «усиление микроконтраста»?[/quot]
Не кипятитесь. Это опечатка. На Вашем сайте написано про «сохранение микроконтраста», но с каких это пор усреднение с одинаковыми весами сохраняет микроконтраст? Увы, но это не так.
Вы не авторизованы

Пожалуйста, авторизуйтесь, чтоб иметь доступ к полному функционалу сайта