LINUX.ORG.RU
ФорумTalks

Улучшение восприятия видео

 


1

1

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

Информации по этой теме в интернете не так уж и много, в основном это сравнения кадров

Это не тоже самое, что регулятор «четкость», готовьтесь раскрутить турбины на полные обороты господа

Наиболее качественный шейдер (из поставки PotPlayer):

// SharpenFlou ( jim.ro )=ps_2_0
// http://www.homecinema-fr.com/forum/viewtopic.php?t=29814317 

sampler s0 : register(s0); 
float4 p0 : register(c0); 
float4 p1 : register(c1); 

#define width (p0[0]) 
#define height (p0[1]) 
#define counter (p0[2]) 
#define clock (p0[3]) 
#define one_over_width (p1[0]) 
#define one_over_height (p1[1]) 

#define PI acos(-1) 

float4 main( float2 tex : TEXCOORD0 ) : COLOR 
{ 
float dx = one_over_width; 
float dy = one_over_height; 

// recupperation de la matrice de 9 points 
//   [ 1, 2 , 3 ] 
//   [ 4,ori, 5 ] 
//   [ 6, 7 , 8 ] 

   float4 ori = tex2D(s0, tex); 
   float4 c1 = tex2D(s0, tex + float2(-dx,-dy)); 
   float4 c2 = tex2D(s0, tex + float2(0,-dy)); 
   float4 c3 = tex2D(s0, tex + float2(dx,-dy)); 
   float4 c4 = tex2D(s0, tex + float2(-dx,0)); 
   float4 c5 = tex2D(s0, tex + float2(dx,0)); 
   float4 c6 = tex2D(s0, tex + float2(-dx,dy)); 
   float4 c7 = tex2D(s0, tex + float2(0,dy)); 
   float4 c8 = tex2D(s0, tex + float2(dx,dy)); 

// calcul image floue (filtre gaussien) 
float  multipliers[9]= 
            {1,2,1, 
             2,4,2, 
             1,2,1}; 

float4 total=0; 
   total +=  c1 * multipliers[0]; 
   total +=  c2 * multipliers[1]; 
   total +=  c3 * multipliers[2]; 
   total +=  c4 * multipliers[3]; 
   total +=  ori * multipliers[4]; 
   total +=  c5 * multipliers[5]; 
   total +=  c6 * multipliers[6]; 
   total +=  c7 * multipliers[7]; 
   total +=  c8 * multipliers[8]; 

   // 1/(1+2+1+2+4+2+1+2+1) = 1/ 16 = .0625 
   total *= 0.0625f; 

// soustraction de l'image flou a l'image originale 
   total = 2*ori - total; 
//return ori; 
   return total; 
}
Как ощущения?

Это не тоже самое, что регулятор «четкость»

float multipliers[9]= {1,2,1, 2,4,2, 1,2,1};

Угу, это банальный шарпер. Размываем и вычитаем размытое, то есть это удаление низких частот.

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

Угу, это банальный шарпер.

Да, это так и называется, может ты и прошаренный, и называешь что-то «банальным», но для большинства людей это в диковинку. И другого ничего нет. В смысле есть, но это лучший шейдер

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

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

Кстати как ты заметил четкость это всётаки у пацанчиков, и такой термин для обсуждения такой темы звучит по колхозному, тут скорее резкость более правильный термин.

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

А интересный эффект получается

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

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

нынче телевизоры любят шарпить, чтоб все «четка».

в итоге особенно старые фильмы смотрятся как современные дешевые мыльные оперы.

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

Я вот кстати подозреваю что какинебуть новые телевизоры этим поляризуются. Скажем отделяют основные объекты от фона и применяют в зависимости от общего баланса нч в кадре.

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

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

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

и куда это совать?

Сохрани как filename.glsl
Запускай mpv с параметром:

opengl-shaders="filename.glsl"

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

Новой информации такой шарп не несёт, хотя и артефактов почти не даёт. На любителя.

Он восстанавливает тонкие детали, убитые масштабированием

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

Никаких новых данных этот фильтр не привносит, это просто двухполосный эквалайзер. Если Ваш алгоритм масштабирования портит соотношение нч/вч, меняйте Ваш алгоритм масштабирования, а не крутите эквалайзер.

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

Нет.

Открой видео, где есть, например, волосы. Посмотри в 100% масштабе (видео меньше разрешения экрана), потом на весь экран. Получается каша. Теперь примени шейдер. Отлично, четкость восстановлена!

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

Попробуй filename.glsl положить в ~/.config/mpv/shaders
А опция такая:
opengl-shaders="~~/shaders/filename.glsl"

Еще совет добавить опции:
profile=opengl-hq
и
opengl-fbo-format=rgba16f

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

Exactly the same thing, никакой разницы; от опций mpv сказал, что понь мне: [vo/opengl] High bit depth FBOs unsupported. Enabling dumb mode.

Хотя, мне кажется, что цвета стали немного темнее, но также не исключено то, что Я просто упоролся, всматриваясь в один кадр на протяжении получаса. ¯\_(ツ)_/¯

HashDerpy
()

Ещё был какой-то софт, который увеличивал число кадров, например, до 60 fps, дорисовывая промежуточные.
Напомните, под линюксы такое было?

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

Ещё был какой-то софт, который увеличивал число кадров, например, до 60 fps, дорисовывая промежуточные.
Напомните, под линюксы такое было?

Да, SVP

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

Нормальных швабодных аналогов то нет?

Нет

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

Сам попробуй подгрузить этот шейдер

С дивана не видно. (с)

RazrFalcon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.