Торренты   
 
 


A3DTools - просмотр стерео через анаглифические очки с адаптивной коррекцией цвета и компенсацией гхоста

Какой вариант анаглифа считаете наиболее удачным?

Красно-голубой (red-cyan)   70%  70%  [ 61 ]
Зелено-малиновый (green-magenta)   9%  9%  [ 8 ]
Желто-синий (amber-blue)   20%  20%  [ 18 ]

Всего проголосовало : 87

A3DTools - это комплексное решение для просмотра стерео-контента через анаглифические очки любого типа: Red-Cyan, Green-Magenta, Amber-Blue(ColorCode). Обеспечивает просмотр фото в режиме слайд-шоу, просмотр видео в реальном времени, конвертирование видео в готовый анаглиф.
Основное преимущество программного пакета в уникальном алгоритме преобразования A3D-Anaglyph, обеспечивающем более качественную цветопередачу и существенно меньший уровень гхоста (двоения).
Программный пакет является бесплатным для некоммерческого использования.
Комментарии:

Пред.  1, 2, 3, 4, 5, 6 ... 17, 18, 19  След.






В общем, чтобы не строить догадки, мое преобразование выглядит так (вся работа идет в цветовом пространстве HSV, где H - оттенок исходного пикселя, S - насыщенность исходного пикселя, V - условно яркость исходного пикселя, соответственно, Hn,Sn,Vn - это компоненты цвета пикселя на выходе, все компоненты в диапазоне 0..1):
KSH=f(H)
KS:=1-(1-KSH)*V;
Sn=((1-KS)*(1-S)+KS)*S;
Hn=H
Vn=V
где:
KSH - коэффициент, определяющий снижение насыщенности цвета в зависимости от оттенка H (значения в диапазоне 0..1, при 1 - насыщенность не снижается вообще, при 0 - цвет превращается в оттенок серого), функция f(H) задается пользователем с помощью регуляторов для 12 базовых значений H, для всех других промежуточных значений H коэффициент рассчитывается с помощью линейной интерполяции;
KS - коэффициент, определяющий снижение насыщенности цвета в зависимости от яркости V и оттенка H (т.к. в формулу входит значение KSH, которое от Н зависит). Значения также из диапазона 0..1. Если яркость V=0, то каким бы не был KSH, KS ,будет равен 1, если V=1, то KS будет равен KSH. Таким образом, снижение насыщенности линейно зависит от яркости пикселя, чем больше яркость, тем больше насыщенность снижается;
Sn - новое значение насыщенности, зависящее от KS и насыщенности исходного цвета точки. Зависимость нелинейная, при малых значениях исходной насыщенности S, выходное значение Sn приблизительно равно исходному, при больших значениях исходной насыщенности S, выходное значение Sn снижается в соответствии с коэффициентом KS.
Значения V и H не изменяются.
 

boss-master
Чтобы красный в ред-циане был хотя бы чуть-чуть похож на красный и не мерцал путей два:
1) разбавлять серым (255,0,0) заменить на (230,20,20) - оттенок сохраняем, но насыщенность убиваем;
2) сдвигать оттенок на другой цвет, похожий на красный, например, (255,0,0) заменить на (255,40,0) или (255,0,40) - т.е. превращать красный в оранжевый или сиреневый.
И в том и в другом случае, чем больше компенсируем мерцание, тем больше убиваем насыщенность или искажаем оттенок соответственно.
Другое дело, что мы не учитываем особенности восприятия цвета мозгом. А особенности тут такие: если долго смотреть на серые оттенки с примесью красного, то мозг не воспринимает этой розоватости, а думает, что это чисто серый цвет - это адаптация к балансу белого. Именно по этой причине, моно-канал анаглифа (содержащий только 1 компоненту цвета из трех) воспринимается мозгом как серый (даже если он на самом деле красный) и эта часть спектра убивается полностью. Так, в red-cyan практически отсутствует красный, в green-magenta зеленый. Но этот минус можно использовать и как плюс: надо намеренно изменить оттенок исходного цвета так, чтобы при просмотре через анаглиф за счет работы мозга по адаптации к балансу белого, новый оттенок воспринимался как исходный. Однако возможности данного подхода тоже ограничены (мозги не могут сильное изменение оттенка скомпенсировать, а малое изменение не позволяет добиться нужного снижения мерцания) - короче везде сплошной компромисс.
P.S. Колоркодовские очи единственные из всех анаглифов не убивают моно-канал (синий там сохраняется). До конца сам не понял почему, но подозреваю, что есть 2 причины: 1) янтарный фильтр пропускает часть синего - это факт; 2) яркость синего канала в восприятии человеком всего 12% (по сравнению с 29% красного и 59% зеленого это существенное отличие). Но там другие проблемы: гхост в синем канале, низкая общая яркость синего канала - что можно конечно частично компенсировать, но только за счет предварительной обработки (если в других типах анаглифа можно стерео смотреть и так, просто разложив на каналы и смирившись с гхостом и потерей цвета, то в колоркоде это не прокатит, т.к. гхост будет жуткий и дисбаланс по яркости в глазах).
 

офтопик ... удалил
 

boss-master
А не пробовал (если через скрипт Ависинта) делать?:
Код:
ConvertToYV12(Interlaced=True).AssumeFrameBased
 

samfednik
попробовал - не помогает
 

 

boss-master
Я немного не понял, зачем здесь особенности преобразования в различные цветовые пространства обсуждать? Может имеет смысл отдельную тему для этого сделать? И как вам поможет наличие кода для преобразования? В анаглиф все равно из пространства RGB конвертировать надо.
Ладно, если вас все таки YV12 беспокоит, то:
- это разновидность YUV (один канал яркости и 2 канала цветоразностных) с той лишь разницей, что яркость сохраняется для каждой точки, а цветоразностные сигналы - по одному значению на квадратик из 4 точек. Отсюда и гхосты растут. Компенсировать это невозможно в принципе никак - так как один раз инфу проредив назад уже не восстановишь. Надо кодировать другим кодеком.
 

photoreal3d
смысл всего этого - конечный результат. Даже твой плагин не дает 30 кадров в сек => чтобы люди могли им воспользоваться - нужно кодировать, а при кодировке - лезут гхосты => половина или больше из работы плагина - коту под хвост.
все кодеки mpeg4 работают с yv12. (насколько я знаю)
 

boss-master
Я с тобой согласен, только вот я изначально под фото все делал, а там на лету все хорошо смотрится, сжимать нет нужды.
 

photoreal3d
для фото проблем нет - это так
 

boss-master
В общем, так:
- сносим все кодек-паки к чертям;
- сносим кодек ffdshow если он не снесся вместе с кодек-паками;
- качаем последнюю версию кодека ffdshow_rev4399_20120322_clsid и устанавливаем его;
- в дубе выбираем кодек ffdshow video codec;
- в настройках кодека выбираем encoder:FFV1, на вкладке generic выбираем colorspace:444P;
- кодируем.
И гхостов НЕТ!
P.S. не знаю как с размером файла на выходе будут дела, это посмотрите сами.
 

photoreal3d
пробовал и не только его - размер файла удручает :(
 

boss-master
Да уж(((( 7Gb против 100Mb с кодеком x264...
Есть вариант, не знаю на сколько правильный, но все же:
уже готовый результат кодируем в горизонтальную стереопару где левый ракурс R, а правый G+B (для ред-циана)
смотрим в стереоскопике выбрав режим color anaglyph
По крайней мере, поток всего в 2 раза увеличивается, жаль только другим плеером не посмотришь, да и на DVD-плеере не посмотришь (хотя поиск "хитрого" кодека тоже приведет к тому, что на плеере воспроизводиться не будет).
Добавлено:
попробовал добавить в конце скрипта:
B=..........
L=MergeRGB(B,BlankClip(B),BlankClip(B),"RGB24")
R=MergeRGB(BlankClip(B),B,B,"RGB24")
StackHorizontal(L,R)
закодировал в x264 и посмотрел в стереоскопике в режиме color anaglyph
ГХОСТОВ НЕТ - значит можно такое извращение использовать)
 

photoreal3d
слушай да ты МОЗГ... (типа анаглифная стереопара) ... вечером попробую и отпишусь
 

photoreal3d Да, конечно, под динамической обработкой я понимаю обработку каждого пикселя. У Вас же нелинейная обработка, не говорю, что это ущербно - просто другой вариант. В силу своей профессии линейность от нелинейности отличаю, как и статику от квазистатики и от натуральной динамики ) Ну это так, чтобы утвердиться в том, что мы друг друга понимаем, а не ради поумничать.
Кстати, я некорректно написал ранее, в колоркоде обрабатываются 2 матрицы, т.е. берется два значения пикселя R и G+B (хотя казалось бы должно обрабатываться RG+B) и значения заменяются на значения, забитые в матрице. Плюс еще есть "спешл" режим, т.е. еще две матрицы. Итого имеем 4 опупенные матрицы )
L=MergeRGB(B,BlankClip(B),BlankClip(B),"RGB24")
R=MergeRGB(BlankClip(B),B,B,"RGB24")
Все правильно, гхост возникает от того, что кодек "подгоняет" яркости каналов, это свойство использовалось в восстановлении стереопар из анаглифа, для этого кадры переводили в интерлейс и прогоняли через XViD.
Только чтобы чуть сэкономить машинное время лучше "B" перевести сразу в RGB24 в первой строчке, а потом уже делить на каналы.
 

Все правильно, гхост возникает от того, что кодек "подгоняет" яркости каналов,
Насколько я понял - кодек ничего не делает, он просто при необходимости переводит изображение в пространство yv12 (если оно в другом), которое и виновато в появлении гостей. Просто в силу обработки сразу 4 пикселей квадратом и выбора среднего значения цветности для всех 4. При попадании объектов на контрасте (темных на светлом) на границе получается неправильный средний цвет и поэтому получаются искажения.
вот RGB24

в вот оно же в YV12 (гости вэлкам)

и все это до запуска кодера, в ависинте
 

boss-master Вы путаете цветовую модель с форматом. YUV - это RGB, умноженное на некие коэффициенты. Назовите YV12 например BMF (Boss-master's format) ничего от этого не изменится.
Это как mp3 сравнивать с wav. YV12 - формат хранения, т.е. 2х2 пикселя усредняются по цвету, яркость остается на месте, т.к. на яркость человек и реагирует в первую очередь (а собаки и того только на нее), это было положено еще в основу формата mpeg. Сигнал от камеры мы получаем в RGB, затем конвертируем его с потерями в различные форматы, потом из этих форматов происходит повторная конвертация в RGB, чтобы загорелись все три субпикселя на мониторе, отсюда и перекрестные помехи в анаглифе.
Короче говоря, чтобы работать с яркостью проще написать свою функцию по этим формулам, хотя, м.б. в ависинте есть своя, но самому же интересней и контроллируемо. Но, если несжимать, то каждый кадр картинки будет весить столько, сколько байт в одном пикселе умноженное на количество этих пикселей (разрешение), с чем вы оба несколькими постами ранее и столкнулись.
 

Stroodder
Вы путаете цветовую модель с форматом.
ну не я ее так обозвал :)
Цветовая модель — термин, обозначающий абстрактную модель описания представления цветов в виде кортежей чисел, обычно из трёх или четырёх значений, называемых цветовыми компонентами или цветовыми координатами. Вместе с методом интерпретации этих данных (например, определение условий воспроизведения и/или просмотра — то есть задание способа реализации), множество цветов цветовой модели определяет цветовое пространство....
Распространённые цветовые модели
Цветовая модель sRGB (IEC 61966-2.1)[6], разновидность модели RGB, широко используется в компьютерной индустрии (на ней основаны широко распространённые форматы изображений JPEG и класс форматов видео MPEG).
CMYK — основная субтрактивная цветовая модель используемая в полиграфии.
В телевидении для стандарта PAL применяется цветовая модель YUV, для SÉCAM — модель YDbDr, а для NTSC — модель YIQ. Эти модели основаны на принципе, согласно которому основную информацию несёт яркость изображения — составляющая Y (важно — Y в этих моделях вычисляется совершенно по другому чем Y в модели XYZ), а две другие составляющие, отвечающие за цвет, менее важны.
Мастер-модель XYZ основана на замерах характеристик человеческого глаза (так называемого "Стандартного Колориметрического Наблюдателя"). XYZ — единственная цветовая модель, в которой любой цвет, ощущаемый человеком, представим только положительными значениями координат. Из модели XYZ выводятся все другие модели, путем соответствующих математических преобразований.
да и не в этом суть - это формальности.
а на счет яркости - может быть, но ТС еще меняет и насыщенность Saturation, а для этого нужна модель HSV или HSL.
PS: Кстати, проверил вариант анаглифной стереопары - все работает на ура. Думаю выход найден.
 

PS: Кстати, проверил вариант анаглифной стереопары - все работает на ура. Думаю выход найден.
Как говорится - you're welcome )) Но это все же садо-мазо, хотя, если без него никак, то, возможно, имеет право на жизнь.
 

жаль только другим плеером не посмотришь, да и на DVD-плеере не посмотришь
нет не жаль, т.к. все двд плееры обычно подключаются через аналоговые интерфейсы - что наглухо гробит даже самый качественный анаглиф. Единственное что жаль - анаглифную стереопару нельзя будет запустить через встроенные плееры LCD/LED TV.
Stroodder
да есть немного извращения, но отсутствие гостей того стоит. Еще немножко оттянем кончину анаглифа :-)
 

Страница 5 из 19

Пред.  1, 2, 3, 4, 5, 6 ... 17, 18, 19  След.