Modérateurs: Modération Forum Home-Cinéma, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 25 invités

Toutes les solutions à base d'ordinateur (PC, Mac, Linux...)

[MPC] Filtre(s) Pixels shaders ...

Message » 31 Mar 2010 9:02

Possible, ce genre de filtre influ déjà sur le luma de l'image. Mais rien de grave à l'œil.
Ceci dit le super reso du 5500 est sans doute différent de la version soft que vous utilisez, non?


Sur tes snapshots, j'ai surtout eu l'impression que les faibles IRE semblaient voir leur niveau diminuer (de manière adaptative ?) dans les zones de transitions, ce qui m'a donné l'idée de faire un gamma adaptatif...
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10431
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 31 Mar 2010 9:04

KAZ, tu pourras me faire un retour de la BETA 2 stp puisqu'il semble que tu sois le seul betatesteur :wink: ?
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10431
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 31 Mar 2010 10:06

Ouais c'est mieux ! Je mettrais 0 au gamma et 0.50 pour 3Dlike.
Par contre il s'adapte pas à l'image ?
On voit bien que le col est trop sharpé là :
Le LSF ne touche pas à cette zone qui est déjà bien nette.

Image

La configuration dans mon profil


Etude et réalisation de Cinémas Privés, Calibration A/V, conception enceintes et Config Kaz 9 pour PCHC.
NEW mars 2024 :
Nouvel article de blog : Réflexions sur les préamplis audio-vidéo (haut de gamme) ;-)
Avatar de l’utilisateur
kazuya
Pro-Divers.
Pro-Divers.
 
Messages: 19377
Inscription Forum: 19 Oct 2004 16:37
Localisation: Région Parisienne
  • offline

Message » 31 Mar 2010 11:16

Sur les BR IronMan et Walk to the line, 0.50 est trop fort à mon goût. Je met 0.51. Evidemment ça dépend des sources et je n'ai qu'une dizaine de BR à la maison.

>Par contre il s'adapte pas à l'image ?

Le filtre scanne l'image pour quantifier comment chaque pixel appartient ou pas à un contour. C'est value qui contient cette quantification.

Ensuite en fonction de value, le filtre a un comportement adaptatif. Si value est forte (supérieure à la constante seuil), il ne fait rien. Si value est dans un certain intervalle en dessous de seuil, il modifie le gamma de manière adaptative par rapport à value. C'est une modif légère. Enfin si value est petite, il fait un masque flou léger. Ce dernier traitement est sommaire et il y a très certainement moyen de l'améliorer (ie le rendre adaptatif).

>On voit bien que le col est trop sharpé là :

Pour savoir dans quel zone de traitement on est, tu peux remplacer :

if ((value >= seuil-diff*1.15)&&(value <= seuil)) cori = pow(ori,1./(1-value/(10-ForceGamma)));

par

if ((value >= seuil-diff*1.15)&&(value <= seuil)) cori = pow(ori,1./(1-value/(10-ForceGamma)));
if ((value >= seuil-diff*1.15)&&(value <= seuil)) cori = float4(1,0,0,0);

Ca affiche en rouge les pixels ou il y a une modif de gamma (commente la 2e ligne avec un // pour enlever le rouge)

et remplace :

if (value > seuil-diff) final = cori; else final = 1.9*cori - 0.9*flou;

par

if (value > seuil-diff) final = cori; else final = 1.9*cori - 0.9*flou;
if (value > seuil-diff) final = cori; else final = float4(0,0,1,0);

Ca affiche en bleu les pixels ou il y a le masque flou (large portion de l'image, ie tout ce qui est loin des transitions).

Les zones rouges et bleu ont un recouvrement non nul pour l'instant, autrement dit certains pixels subissent à la fois la modif de gamma et le masque flou.

@+
Emmanuel
Dernière édition par Emmanuel Piat le 31 Mar 2010 11:22, édité 1 fois.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10431
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 31 Mar 2010 11:21

Nota : il ne faut pas faire afficher les zones rouge et bleu en même temps, sinon tu ne vas plus rien voir :wink:

Joue avec les commentaires // pour alterner les deux. Ca marche même si MPC est en pause.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10431
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 31 Mar 2010 23:23

Ma petite contribution aux tests
Fichier 720p sur diffuseur 1080p
unsharp 28 sortie RGB32 + upscal bicubic A 0,60 en hard

unsharp
Image

unsharp+Superreso 720 beta 1(je le trouve trés bruité)
Image

unsharp+superreso 720p Beta2 0,51
Image


à la base j'utilise LSF ou aussi Unsharp28+deband1,12 mais la beta 2 est pas mal, j'attend de voir la version 1080p :wink:
bonne soirée
pitch28
 
Messages: 891
Inscription Forum: 06 Fév 2006 1:18
Localisation: 28
  • offline

Message » 31 Mar 2010 23:44

Me to, je viens de visionner states of play bd qui est encodé en VC-1, coreavc ne le prends en charge :( j ai du le faire décoder avec ffdshow et c'est pas terrible au niveau de l' équilibre des cores, impossible d'appliquer un sharpen avec ffdshow, par contre c était fluide ligne verte collé a la rouge :o . Avec le script d' Emmanuel version 1080p, je le sent bien ;)
Kaotech
 
Messages: 3018
Inscription Forum: 02 Aoû 2006 11:46
Localisation: 78
  • offline

Message » 31 Mar 2010 23:48

moi j'arrive pas à avoir la ligne verte collé à la rouge :( :( en plus ma ligne verte fait des petites vaguelettes , une idée pour resoudre le probleme ?
pitch28
 
Messages: 891
Inscription Forum: 06 Fév 2006 1:18
Localisation: 28
  • offline

Message » 01 Avr 2010 1:19

Il n'y a aucun problème à ça !
Je dirais même que c'est plutôt l'inverse : que les 2 soient collées n'est pas très bon signe...

La configuration dans mon profil


Etude et réalisation de Cinémas Privés, Calibration A/V, conception enceintes et Config Kaz 9 pour PCHC.
NEW mars 2024 :
Nouvel article de blog : Réflexions sur les préamplis audio-vidéo (haut de gamme) ;-)
Avatar de l’utilisateur
kazuya
Pro-Divers.
Pro-Divers.
 
Messages: 19377
Inscription Forum: 19 Oct 2004 16:37
Localisation: Région Parisienne
  • offline

Message » 01 Avr 2010 7:55

En visionnant les stats de fréquences je suis a 23,99/24,00, ça ne fluctue pas plus que ça et le jitter est presque stable.

Hs : off
Kaotech
 
Messages: 3018
Inscription Forum: 02 Aoû 2006 11:46
Localisation: 78
  • offline

Message » 01 Avr 2010 8:57

Beta3 et probablement la dernière pour diffuseurs 720p car après de longs comparos hier avec LSF (strength 40), je suis plutôt satisfait du résultat.

Changements :

- Disparition param ForceGamma (codé en dur ds les calculs)
- nouveau param FinesseRendu 0 => 0: très fin, 1: fin, 2: moyen, 3: grossier

C'est en gros la largeur du trait (0 correspond à un comportement très proche de LSF)

- nouveau param SeuilBruit

c'est un seuil pour éviter l'accentuation par masque flou sur le bruit de fond et les petits détails dans les textures
La valeur par défaut (0.15) marche pour tout. Si jamais dans un BR déjà très propre et très "sharpenisé", vous voyez apparaitre des artefacts dans les tous petits détails (du style des textures en mouvement qui manquent de stabilité), vous pouvez pousser à 0.2 pour ne pas traiter ces détails

- modif param diff : comme j'ai modifié les réglages internes ds le filtre, l'échelle pour diff est désormais la suivante (c'est en gros l'intensité du trait) :

// 0.49 => 3D-Like + présent
// 0.50 => 3D-Like présent
// 0.51 => 3D-Like - présent

Code: Tout sélectionner
// SuperResolution720p - Beta3
// Emmanuel - 31/03/2010
// Filtre de super résolution adapté aux diffuseurs 720p
// Ce filtre est conçu comme un filtre de post-traitement d'un
// filtre de sharpen tel que le filtre "unsharp mask" de ffdshow

#define FinesseRendu 0 // 0: très fin, 1: fin, 2: moyen, 3: grossier

#define SeuilBruit 0.15   // pour éviter la remontée du bruit de fond et
               // l'accentuation de petits détails dans les textures
               // Entre 0.1 et 0.2

#define diff 0.49      // influe sur le rendu "3D-Like"
               // Après unsharp mask à 19 dans ffdshow:
               // 0.49 => 3D-Like + présent
               // 0.50 => 3D-Like présent
               // 0.51 => 3D-Like - présent

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

#define dx (p1[0])
#define dy (p1[1])
 
float4 main( float2 tex : TEXCOORD0 ) : COLOR
{
   // pixels original, flouté, corrigé
   float4 ori = tex2D(s0, tex);
   float4 flou;
   float4 cori;
   float seuil = 0.82 + FinesseRendu/100;

   // récupération de la matrice de 9 points
   // [ 1, 2 , 3 ]
   // [ 4,ori, 5 ]
   // [ 6, 7 , 8 ]

   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));

   // détection des contours
   // par filtre de sobel
   float delta1,delta2,value;

   // Gradient horizontal
   //   [ -1, 0 ,1 ]
   //   [ -2, 0, 2 ]
   //   [ -1, 0 ,1 ]
   delta1 = (c3 + 2*c5 + c8)-(c1 + 2*c4 + c6);

   // Gradient vertical
   //   [ -1,- 2,-1 ]
   //   [  0,  0, 0 ]
   //   [  1,  2, 1 ]
   delta2 = (c6 + 2*c7 + c8)-(c1 + 2*c2 + c3);

   // calcul
   value =  sqrt(mul(delta1,delta1) + mul(delta2,delta2)) ;

   // Gamma adaptatif à proximité d'une transition
   cori = ori;
   if ((value >= seuil-diff*1.15)&&(value <= seuil)) cori = pow(ori,1./(1-value/10));

   // Masque flou pour renforcer les textures

   // calcul image floue (filtre gaussien)
   // pour normaliser les valeurs, il faut diviser par la somme des coef
   // 1/(1+2+1+2+4+2+1+2+1) = 1/ 16 = .0625

   flou = (c1+c3+c6+c8 + 2*(c2+c4+c5+c7)+ 4*cori)*0.0625;

   // Accentuation des textures si on est loin d'un bord
   if ((value > SeuilBruit) && (value < seuil-diff)) cori = 2*cori - flou;

   return cori;
}


@+
Emmanuel
Dernière édition par Emmanuel Piat le 01 Avr 2010 14:15, édité 1 fois.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10431
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 01 Avr 2010 11:10

>Me to, je viens de visionner states of play bd qui est encodé en VC-1, coreavc ne le prends en charge :( j ai du le faire décoder avec ffdshow et c'est pas terrible au niveau de l' équilibre des cores

Chez moi, les deux solutions suivantes fonctionnent très bien pour le VC-1 :
- déco interne MPC-HC (ffmpeg) + post-trait ffdshow + PS
- déco externe DXVA de ffdshow + PS

Pour le déco interne DXVA de MPC-HC, je ne me rappelle plus...

le déco externe VC1 software de ffdshow est par contre une cata (saccade à mort et pas possible de l'avoir en biblio ffmpeg).

Un bon test, c'est le BR Baraka (scanné en 8K) avec son débit de cinglé en VC1...

Vu la réso exceptionnelle de ce BR, le résultat est complètement magique en diffusion 720p qd on le post-traite avec la super réso (sans unsharp mask ds ffdshow, c'est totalement inutile).
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10431
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 01 Avr 2010 11:27

Tu as la possiblité de faire un PS super réso pour les diffuseurs 1080p ? Je ne suis pas super satisfait du sharpen complex 2.
Kaotech
 
Messages: 3018
Inscription Forum: 02 Aoû 2006 11:46
Localisation: 78
  • offline

Message » 01 Avr 2010 11:34

>Je ne suis pas super satisfait du sharpen complex 2

il y a de quoi...

>Tu as la possiblité de faire un PS super réso pour les diffuseurs 1080p ?

Je vais voir si en bricolant des trucs simples comme précédemment j'arrive à m'approcher du comportement de LSF. Je ne garantis rien.

Pourquoi tu n'utilises pas le unsharp mask de ffdshow ?
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10431
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • offline

Message » 01 Avr 2010 11:43

J'ai un déséquilibre des cores, le core 1 est autour des 85/90%, si j'ajoute le unsharp mask, ça saccade sur des images en mouvement.

Je testerais avec le décodeurs ffmeg de MPC-HC, peut être que celui-ci consomme moins que celui de ffdshow.
Kaotech
 
Messages: 3018
Inscription Forum: 02 Aoû 2006 11:46
Localisation: 78
  • offline


Retourner vers Matériel PC Home-cinéma