Про то как облажалась тетя Соня. Или h264 под скальпелем.

Тема в разделе "Технический раздел", создана пользователем rean, 24 окт 2012.

Метки:
  1. #1 24 окт 2012 в 01:54 | Про то как облажалась тетя Соня. Или h264 под скальпелем.
    Последнее редактирование модератором: 25 окт 2012
    Обновление. Переписал статью с учетом изучения видео с десяток фотоаппаратов и видеокамер. Также убрал эмоциональный окрас, поскольку не всем нравится такая подача текста.

    Я снимаю видео на камерах Sony NEX еще со времен NEX-5. Сейчас у меня NEX-7. Все время меня не покидало ощущение того, где-то Sony лажает. От записанного видео оставалось ощущение неряшливости. Вроде все супер, 1080p, да и еще в 7-ке ввели 50p и повышенный битрейт. Но все-равно это ничего не изменило.

    Первым мое открытие было связано с тем, что тетя Соня шарпит видео. Но, радиусом таким, какой предназначен для фотопечати. Если не верите, загляните в настройки фотоаппарата, сколько у вас там стоит в шарпенинге? 0? Посмотрите получаемую картинку jpg под увеличением 100%. Видете толстые каемки по краям изображаемых объектов шириной примерно пикселя в 4? Вот это оно и есть - шарпинг.

    Значения оптимизированы под печать. Еще этот трикс, скорей всего, помогает тете Сони иметь скрытое преимущество перед конкурентами, когда какой-то «чайник» выкладывает ресайзенные фотографии в интернет. В итоге этот перешарп превращается в красивое отсутствие шарпа и итоговое четкое изображение. Если бы этого шарпа не было, фотографии в интернете смотрелись бы мыльными после ресайза. Физика сего процесса давно используется в фотообработке.

    Ну да ладно, решение оказалось простым - надо шарпинг убавить до минимального значения: -3. Это спасает наши jpeg-и, и в какой-то степени видео-картинку.

    Следующее мое открытие возникло тогда, когда я решил поканально в YUV отшумодавить свое видео, записанное в темных условиях. Для этого я в Avisynth разделил поканально общий поток видео отдельно по каналам Y,U,V, чтобы шумодавить каналы отдельно. Смысл сей затеи заключался в том, чтобы вручную настроить разный уровень обработки в отдельных каналах, тем самым достичь максимум возможного, вручную подбирая наилучшие параметры и лучшие алгоритмы отдельно по разным каналам. Вот тут меня и ждало самое главное открытие!

    Первый факт. В канале Y картинка вполне приемлемая. Чёткость в-принципе, хорошая, но есть небольшой Blur шириной примерно в половину пикселя. Зачем это сделано, станет ясно ниже.

    Второй факт. Смотрим U и V. И что видим? Что-то мутное и невнятное. Делаем «трикс». Ресайзим полученную картинку из YV12 (4:2:0) в YV24 (4:4:4) (Для справки: это делается просто увеличиванием разрешение цветовых каналов ровно в 2 раза. Это нормально, т.к. h264 видео кодирует именно в этом формате, т.е. с уменьшенным в два раза разрешением цветовых каналов. Это предусмотрено спецификаций h264 и изменить это нельзя). И внимательно смотрим, что же реально находится в U и V.

    Уберите подальше детей, чтобы они не слышали вашего мата. Вот кусочек канала V из видео, снятом Sony NEX-7 в режиме 1080p 50fps самого высокого битрейта на самой четкой из всех моих линз, с использованием штатива. Для наглядности я отшарпил картинку, чтобы убрать Blur, имеющийся в этих каналах, потому что без шарпа слабо понятно, что там такое есть.

    [​IMG]

    А вот увеличенный в три раза фрагмент. Для удобства просмотра я сделал это констрастней. Не забываем, что тут есть небольшой шарп, восстанавливающий исходную картинку, старательно заблюренную тетей Соней, чтобы вся гадость не лезла наружу. Поэтому не обращайте внимание на точечки - это из-за моего шарпа.

    [​IMG]

    Как вы думаете, сколько оттенков находится в исходном фрагменте? Ровно 60!

    Это вполне нормальная цифра, с учетом того, что в диапазоне цветокодирования YUV большая часть диапазона занята сверхнасыщенными цветами, которые редко встретишь в природе. Отсюда и истекает большая часть проблем цветокоррекции.

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

    Мое предположение заключается в том, что кодек от Sony стремится сразу же уменьшить итоговое разрешение цветности, теряя, по возможности, горизонтальное разрешение, но стремится удерживать вертикальное разрешение. Зачем такое сделано, трудно сказать, но из всех просмотренных мною видео от разных камер, такое специфично для Sony и еще этим страдает Nikon J1.

    Итого получается, что исходное разрешение картинки в цветоразностных каналах фактически уменьшается с исходного разрешения 1920x1080 не до 960x540, что необходимо для кодирования в h264 (4:2:0), но до разрешения 480x540, при этом пиксель превращается в кирпичеобразный 4x2, но чаще всего мы видим в изображении полоски размера 8x2, что соответствует разрешению кадра уже 240x540.

    А вот вам другая картиночка из этого-же канала V. Обратите внимание на то, как «гармонично» сочетается плечо человека с красивым видом на облачное небо. Каемку в 6 пикселей видите? Очень похоже на шарп, потому что ничего подобного я не вижу в канале Y.

    [​IMG]

    Из-за этого получаются «лесенки» в цветном изображении. Их проблема не от того, что при ресайзе кадра в 24 мегапикселя (NEX-7) получается ошибка округления, а как раз от того, что вот какой вот «шарп» имеем в цветовых каналах. Да и еще при этом наши пиксели там кирпичеобразные, 8x2. Получаем эффект XZ-Spectrum-а. Там цветное изображение составлялось из наложения черно-белых пикселей на квадрат 8x8 из двух цветов. В итоге, картинка выглядела очень неряшливо.

    Вопрос заключается в том, откуда такая грязь на краях в цветных каналах?

    Два варианта. Либо цветоразностные каналы исходно не 960x540, а 480x540 (кирпичеобразный пиксель), при этом они блюрятся и шарпятся. Либо, зачем-то делается их шарп. В любом случае, это гадость. Просмотрев видео от Nikon, Panasonic и Canon, я нигде не видел такой гадости. Даже на самых дешевых фотоаппаратах.

    Наложите в сознании получаемую кашу в UV в 480x540 с черно-белым каналом в 1920x1080, и увидите грубейшие нарушения попадания. Не забываем про шарп по-умолчанию из-за настроек фотоаппарата!

    На общего вида картинках это не так заметно, но если в кадре мы видим контрастные линии под углом, то и получаем то, что получаем. А от недостатка битрейта при этом еще, не дай бог, остаются куски цветности 8 на 8, а то и 8 на 80. Вы мне не верите? Вот вам кусочек облачного неба c 18 цветами на всё (изображение для удобства разглядывания сделано контрастней):

    [​IMG]

    А теперь на десерт объяснение того, почему тетя Соня тщательно блюрит все это. Да если это не блюрить, а выдавать вам как есть, получится вот это:

    [​IMG]

    Эта картинка получена путем восстановления исходного разрешения каналов YUV путем аккуратного убирания блюра тщательно подбором шарпинга. Конечно, чисто математически нельзя сделать обратное преобразование точным, но поверьте, этот результат достаточно эквивалентен тому, что имеет код прошивки перед тем, как отправить кусок памяти с изображением в чип кодировщика h264.

    Вот, кстати, как выглядит канал Y:

    [​IMG]

    Здесь все нормально, не правда ли? Только тут блюр виден невооруженным глазом. Муть видите на одежде? Мое исследование показало, что кроме Sony блюрит сильно еще Canon и Nikon. Только Panasonic имеет наичистейшую картинку в канале Y.

    Так зачем это делается? Да чтобы замазать цветовой муар. Ну вот так получилось, что не могут Sony, Nikon и Canon делать видео без муара. Почему? Понятия не имею, но вот Nikon и Canon такой гадости на краях в цветовых каналах не имеют, а у нас это во всей красе. И не кирпичат так они пиксели в цветности. Это что, заговор, чтобы мы покупили дорогущие видеокамеры, или элементарный баг?

    Мне кажется, что Sony облажалась с ее алгоритмами сжатия видео. Можно ли было все это сделать лучшим образом? Можно! У нас есть битрейт от AVCHD 2.0. Можно же было более рационально его расходывать на кодирование каналов цветности. Плюс, я не совсем понимаю, что за дрянь творится на контрастных краях в каналах цветоности.

    Получаем, что сейчас картинка в канале цветности у нас ниже плинтуса, примерно такого же качества, какое давали старинные кодировщики видео времен 1984 года, когда они впервые появились в Windows 3.1. Мы плохо замечаем это только потому, что наш глаз плохо чувствителен к цвету. А вот канал Y в видео очень хорошего качества, только вот не понимаю, зачем его блюрить!?

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

    А ведь мы еще не поговорили про колоршифт, про перегрев матрицы ровно через 7 минут после начала записи видео...

    За свою NEX-7 я заплатил 52 тысячи рублей, ожидая, что полученная картинка будет соответствовать цене. Но меня жестоко обманули, подсунув суррогат. Почему другие производители могут выдавать нормальную видеокартинку, а Sony нет? За что я платил почти два килобакса?!

    Тетя Соня, ответь мне пожалуйста на эти вот вопросы:

    - Куда ты деваешь битрейт 28 мбит?

    - Отчего у тебя пиксели в цветности не 2x2, а 2x8?

    - Почему у тебя такой странный скейлинг цветовых каналов, что видим странные полосчатые каемки в изображении?

    - Может быть ты шарпишь, а потом блюришь цветность? Зачем?

    - Почему твой кодировщик h264 так ужасно квадратит и так уж совсем малобитные цветовые каналы?

    Лично мне эта гадость, очень напоминающая маркетинговый развод, достала. Я больше не собираюсь покупать технику от Sony, увидев то, что NEX-7 делает из видео.

    Ладно бы, все остальные конкуренты делали так же, но вот вам для сравнения картинки с других фотоаппаратов:

    Canon 650D.Очень тяжелый режим - ветки дерева на фоне неба:

    [​IMG]

    Nikon D800. Тоже деревья:

    [​IMG]

    Panasonic GF3. Мыльное тут вообще-то все. И очень похоже на то, что получаем от NEX. Только не буду вам показывать, что у GF3 в канале Y - там примерно такая же картинка. Это я так, для примера мыльничную картинку показал, чтобы было чем гордиться - NEX-ы снимают видео лучше GF-3 за 10 тысяч рублей!! Ура, радуемся...

    [​IMG]

    Panasonic GH3 (праведливости ради, тут супер-битрейт):

    [​IMG]

    Но вот рисунок с видеокамеры Panasonic X800. Всего 24 мегабит. Ничего сумасшедшего, правда? Всего 24 мегабит, как и на соньках. Та же самая ситуация с нехваткой битрейта. Но полюбуйтесь, насколько чистая и гладкая картинка. А эта бытовая камера стоит как и NEX-7.

    [​IMG]

    А вот лажа от Тети Сони с зеркалки. А то некоторые NEX мыльницами считают. Кадр с достаточно свежей модели зеркалки Sony A57. Свежей я не нашел в интернете обзоров с выложенными MTS. Что видим? Те же яйца, только всмятку - те же кирпичи, та же потеря разрешения, те же самые грязные каемки:

    [​IMG]

    Вот тут выкладываю Avisynth скрипт, где вы сами можете все посмотреть, и убедиться, что все, что я пишу - это не мои выдумки, а, к сожалению, объективная гадость реальность...

    Так что каждый может увидеть то, что нам суют производители.



    Код:
    # Набор для препарирования h264 by Andrew Revvo
    # Сохранить как файл view_h264.avs
    
    # Опубликован тут: http://www.sonynex.ru/index.php?showtopic=6728
    
    # Здесь уже вписан шарп, чтобы можно было посмотреть всю гадость NEX.
    # Если шарп не нужен, закомментарьте .HighPassSharp, добавив перед этим решетку #
    # Вся обработка идет в YV24, что соответствует 4:4:4
    
    # Компоненты качать тут (версии сообщаю того, что у меня сейчас в работе, можно ставить посвежее):
    # avisynth 2.6 mt 2012.08.28.7z http://forum.doom9.org/showthread.php?t=148782
    # devil.dll: http://sourceforge.net/projects/avisynth2/files/AviSynth_Alpha_Releases/
    # DirectShowSource.dll: http://forum.doom9.org/showthread.php?p=1589100#post1589100
    # MaskTools 2.0 alpha 48 http://forum.doom9.org/showthread.php?t=98985
    
    # Кодек h264 для системы тут: ffdshow_rev4486_20120825_clsid.exe x86
    # http://ffdshow-tryout.sourceforge.net/download.php
    
    # Лучше смотреть в VirtualDub. Для этого открываем этот файлик там
    # Virtualdub 1.10.2 (experimental) x86 http://virtualdub.sourceforge.net/
    
    # Тут для вашего удобства, чтобы меньше было качать компонентов, я открываю видео
    # c помощью DirectShowSource. Но учитывайте, что эта функция глючит с h264 25p видео,
    # например, некоторые кадры могут быть дублированы, или могут появиться визуальные глюки,
    # т.к. не предназначена для многопоточной обработки. Рекомендую заменить на аналог dss2 из комплекта
    # Haali Media Splitter. Тот глючит гораздо реже и только если комп загружен на 100%.
    # его качать тут: MatroskaSplitter 03/03/2011 1.11.96.14 http://haali.su/mkv/
    # Для подключения раскомментарьте эту строку:
    # LoadPlugin("C:\Program Files (x86)\Haali\MatroskaSplitter\avss.dll")
    
    # ViewUVY - функция показывает три компонента видео на экране в виде трех вертикальных полос.
    # Для показа берется центральная треть кадра.
    # HistFrom - функция показывает гистограмму в правом нижнем углу, оптимизировано для просмотра из под VirtualDub.
    # HighPassSharp(c, r, n) - функция делает высокочастотный шарп, подобно популярным приемам для обработки в фотошопе.
    # тут r - радиус, n - количество повторений эффекта. Плюс этого шарпа в том, что он не дает каемок.
    
    LoadPlugin("C:\Soft\Video\bin\DirectShowSource.dll")
    LoadPlugin("C:\Soft\Video\bin\mt_masktools-26.dll")
    SetMTMode(3,4)
    
    function ViewUVY(clip u, clip v, clip y) {
    w = y.width()
    h = y.height()
    w3 = Floor(w/3)
    u3 = u.Crop(w3,0, w3,h)
    v3 = v.Crop(w3,0, w3,h)
    y3 = y.Crop(w3,0, w3,h)
    y.Overlay(u3, 0,0)
    Overlay(v3, w3,0)
    Overlay(y3, w3+w3,0)
    }
    function HistFrom(clip c, clip f) {
    w = c.width()
    h = c.height()
    c.Overlay(f.Histogram(mode="levels").Crop(w, 0, 256,226), w-256-4, h-226-130)
    }
    function HighPassSharp(clip c, float "r", int "n") {
    # High Pass sharp by Andrew Revvo, 2012
    # Requires: mt_masktools2
    r = default(r, 0.2)
    n = default(n, 4)
    cy = c.ConvertToY8() # speed
    blur = cy.Blur(r)
    hpm = mt_average(c, blur.Invert(), u=2,v=2)
    cy.Overlay(hpm, mode="softlight")
    (n==2) ? Overlay(hpm, mode="softlight") : last
    (n==3) ? Overlay(hpm, mode="softlight").Overlay(hpm, mode="softlight") : last
    (n==4) ? Overlay(hpm, mode="softlight").Overlay(hpm, mode="softlight").Overlay(hpm, mode="softlight") : last
    (n==5) ? Overlay(hpm, mode="softlight").Overlay(hpm, mode="softlight").Overlay(hpm, mode="softlight").Overlay(hpm, mode="softlight") : last
    ConvertToYV24()
    }
    
    # Ваш видео файлик вписывается тут:
    file = "00274.MTS"
    
    DirectShowSource(file)
    
    # Но лучше тут открыть видео файл так:
    # dss2(file, fps=50.0)
    # А для подключения звука используйте код:
    # AudioDub(DirectShowSource(file, video=false))
    
    SetMTMode(2)
    ConvertToYV24()
    src = last
    blank = BlankClip(clip=last, length=FrameCount(), pixel_type="YV24")
    y = MergeChroma(blank).HighPassSharp(0.3, 2)
    u = UToY().HighPassSharp(0.6, 4)
    v = VToY().HighPassSharp(0.6, 4)
    ViewUVY(u,v,y)
    HistFrom(src)
    
     
    19 пользователям это понравилось.
  2. Тут остается лишь мельчайшая надежда на появление когда-нибудь кастомных прошивок как на кенон. Но надеяться на это неизвестно сколько придется.. Но, тем не менее, тут вероятность выше чем в том, что сонька вас услышит и изменит свой гадский подход к покупателям. Проще переметнуться к конкурентам.

    Сонька не рассматривает покупателя (единицу) как личность с запросами, потребностями и пожеланиями (как это было когда-то). Нас рассматривают как массу, как овец, которых нужно стричь, пока они не перепрыгнули через забор на соседское поле. Иначе говоря, "масса" не знает, чего хочет и что им нужно, а они знают лучше нас, что нам нужно.
     
    2 пользователям это понравилось.
  3. Интересное расследование, но хотя я к видео довольно прохладно отношусь, после первых же проб на 5N сделал для себя вывод, что качество нексовых фотиков на 1080p оставляет желать лучшего. Просмотр примеров с панаса GH2 подтвердил, что до настоящего качества далековато.
     
    2 пользователям это понравилось.
  4. может таки бага? где-то кто-то тут делился ссылкой на статью где путем финтов ушами и использования "sunset mode" получали вменяемую палитру цвета в видео.
     
  5. Кстати это напомнило ZX Spectrum начала 80-х, где картинка создавалась на экране разрешением 256x192, а на него накдадывался слой с информацией о цвете 32x24, причем для каждой точки цветового слоя (занимавшей 8x8 на графическом экране) было доступно только два цвета (для включенного и выключенного пиксела).

    Всё новое — это хорошо забытое старое. :D
     
  6. #7 24 окт 2012 в 10:20 | Про то как облажалась тетя Соня. Или h264 под скальпелем.
    Последнее редактирование модератором: 24 окт 2012
    rean

    Ответ прост. Покупайте Видео камеры СОни

     
    12 пользователям это понравилось.
  7. Ну так то оно так, собственно никто и не обещал, что семерка будет рвать по видео всех подряд, просто человека тоже понять можно, купил дорогую камеру и так накололся. Тем более что есть конкуренты и у них таких проблем нет.
     
    2 пользователям это понравилось.
  8. Так мило, когда человек разбирающийся настолько в видео, покупает для своих серьёзных целей фотокамеру. Есть же VG-xxx. Облажалась не тётя Соня (кстати, тошно от псевдо-юмора и пафоса, коим насыщен пост), а вы. Сони своё получила, а вы - нет.
     
    13 пользователям это понравилось.
  9. Вспомнил, что в аннотациях к программе Final Cut, было предупреждение о кодаке H264. "Не использовать его для промежуточной обработки". Т.е. подразумевается что апосля делать что-то с видео бессмысленно.
     
  10. Я по дурацки делаю... В фотошопе просто насыщенность задираю корректирующим слоем и мне нравится если только не разглядывть стоп кадры.
     
  11. rean,

    Если Вы обладаете квалификацией позволяющей "анатомировать" процесс создания видео, имхо надо было заниматься этим ещё до покупки устройства. В сложившейся ситуации все претензии " к изображению в зеркале" оно создало себе иллюзию, которую само и разрушило.

    Реальная польза от вашего мнения, это предостережение от опрометчивых хотелок.
     
    6 пользователям это понравилось.
  12. Насколько я понял, человек апеллирует к официальным спецификациям камеры, которые несоответствуют действительности.

    Тут уж отмазки типа "сам дурак" не пройдут, тут прямой обман.
     
    7 пользователям это понравилось.
  13. Если владелец камеры в состоянии это объяснить и отстоять своё мнение, он может вернуть камеру продавцу и забрать деньги.
     
  14. #15 24 окт 2012 в 11:35 | Про то как облажалась тетя Соня. Или h264 под скальпелем.
    Последнее редактирование модератором: 24 окт 2012
    "подразумевается что апосля делать что-то с видео бессмысленно"

    Делать что-то с видео вообще бессмыслено. Нужно исходник сразу перегонять в секвенцию, и с ней работать.
     
    2 пользователям это понравилось.
  15. VG первых моделей выдавала в точности такую же картинку, как и NEX-5. Про остальные не знаю, уже не интересно. :)

    Можно, если использовать сжатие с битрейтом выше того, какое нужно будет в итоге. Или даже режим сжатия без потерь. Но смысла особого в этом нет. Сам формат h264 очень тяжелый для работы. Лучше использовать, например, Ut Codec. По поводу формата - сам формат то неплохой, но вот реальзация кодека может лажать даже при очень высоком битрейте.

    Именно для этого и пишу. Тема записи видео на бытовых фотоаппаратах сейчас тренд моды. Предостерегаю не попасться на удочку маркетинговых уловок.
     
    2 пользователям это понравилось.
  16. Абидна, абидна. Причем в большей степени от того, что кодирование программное, т.е. при желании тетки усе можно исправить. Я так понимаю, она теперь в новых камерах назовет эту фишку экстра-супер-видео-режим, залочит его в прошивке и будет продавать управляющую надстройку как отдельное приложение, баксов по 100 - 150 :)
     
  17. #18 24 окт 2012 в 13:00 | Про то как облажалась тетя Соня. Или h264 под скальпелем.
    Последнее редактирование модератором: 24 окт 2012
    этого пиксель-фапания (задротства) унылого никогда не понимал и, видимо, не светит.
     
  18. #19 24 окт 2012 в 13:30 | Про то как облажалась тетя Соня. Или h264 под скальпелем.
    Последнее редактирование модератором: 24 окт 2012
    "пиксель-фапания (задротства) унылого никогда не понимал"

    Говорит только о том, что требования к качеству картинки очень низкие ;) Если снимать бухачи, и когда единственная обработка - это монтаж встык, то действительно не имеет смысла забивать себе голову всякой ерундой. Предлагаю попробовать прокеить что-нибудь в таком качестве. Ну или камеру протречить. ;)
     
    2 пользователям это понравилось.
  19. вы не забывайте, что если не пережимать, размер видео файла в 15 минут будет на 3-4 гига.
     

Поделиться этой страницей