Après qq visionnage de BRD la logique des Kernels est bien respectée.
on a la progression suivante :
Spline16 < Blackman3 < Lanczos2 < Spline36 < Blackman4 < Spline64 < Lanczos3
Spline16 et Blackman3 sont très très propres mais aussi très (trop) "sages"...
Lanczos2 permet peut être de gagner un poil de finesse supplémentaire...
Spline36 et Blackman4 sont de bon compromis assez passe-partouts et Lanczos3 sera plus spectaculaire en terme de finesse/3D.
Spline64 gomme certains aspects artificiels de Lanczos3. Mais les deux génèrent des artefacts facilement visibles qd on sait où les chercher.
Pour LSFHC une plage de valeurs raisonnables est 16 à 20. Plus on monte ds la progression plus il faut baisser cette valeur.
Pour UnsharpHQ on peut mettre en gros entre 0.3 et 0.4. Même remarque qu'au dessus sur la progression.
Tout cela n'est valable pour pour un excellent diffuseur (bon CR ANSI, bonne MTF).
Perso, j'ai qd même un petit faible pour le blackman4 (ou le Lanczos3 si on cherche l'effet démo).
Tout cela donne une bonne base de travail avec un principe simple qu'il convient de respecter (même algo pour le up et down).
Post-traitement pour diffuseurs 2K
-
- Posts: 163
- Joined: Mon Feb 27, 2012 10:25 am
-
- Posts: 163
- Joined: Mon Feb 27, 2012 10:25 am
Re: Post-traitement pour diffuseurs 2K
Voici la fonction que j'utilise désormais pour les post-traitements des sources fullHD sur mon moniteur 24" (ou tout diffuseur à fort CR ansi). Elle n'altère pas la géométrie des mires HR (1, 2 et 3 pixels) et minimise les effets de EE et de ringing. A combiner avec un poil de swscaler (0.08) + RGB32 HQ conv + dithering dans ffdshow. Cette fonction combine un renforcement des fréquences moyennes (renforcement de l'accutance) avec un adoucissement progressif de la MTF (estompage de l'aspect numérique dues aux hautes fréquences).
Le downscaling étant fait ds avisynth (et étant appairé avec l'upscaling), madVR ne sollicite plus le GPU pour cette opération.
NaturalFullHD(mode=2) convient pour 95% des sources fullHD.
Le downscaling étant fait ds avisynth (et étant appairé avec l'upscaling), madVR ne sollicite plus le GPU pour cette opération.
NaturalFullHD(mode=2) convient pour 95% des sources fullHD.
Code: Select all
# "Natural" fullHD post-treatment for high ansi monitor or projector.
# Higher is mode, higher is the sharpness and more 3D-like are the frames
# mode = 0 : blackman3 resize => only if the source is already oversharpened
# = 1 : spline32 resize => only if the source is already sharpened
# = 2 : blackman4 resize => default mode
# = 3 : lanczos3 resize => enhance 3D-like rendering
# ss is the upsampling factor. A correct value to respect 1,2,3 pixels patterns is 1.333 or 1.666
# LSFstr is LSFHC strength setting
# usHQstr is UnsharpHQ strength setting
# usHQth is unsharpHQ threshold setting
# Add "swscaler" sharpen in ffdshow with luminance sharpening set to 0.08
function NaturalFullHD(clip clp, int "mode", float "ss", float "LSFstr", float "usHQstr", int "usHQth")
{
mode = default( mode, 2)
ss = default( ss, 1.333)
LSFstr = default( LSFstr, 16.5)
usHQstr = default( usHQstr, 0.3)
usHQth = default( usHQth, 25)
ox = clp.width
oy = clp.height
ss_x = round(ss * ox /8)*8
ss_y = round(ss * oy /8)*8
mode==0 ? Eval("""
BlackmanResize(clp,taps=3,ss_x,oy)
BlackmanResize(taps=3,last.width,ss_y)
LimitedSharpenFasterHC(strength=LSFstr)
UnsharpHQ(THRESHOLD=usHQth,SHARPSTR=usHQstr,sMOOTH=0,SHOW=false)
BlackmanResize(taps=3,ox,last.height)
BlackmanResize(taps=3,last.width,oy)
""") : mode==1 ? Eval("""
Spline36resize(clp,ss_x,oy)
Spline36resize(last.width,ss_y)
LimitedSharpenFasterHC(strength=LSFstr)
UnsharpHQ(THRESHOLD=usHQth,SHARPSTR=usHQstr,sMOOTH=0,SHOW=false)
Spline36resize(ox,last.height)
Spline36resize(last.width,oy)
""") : mode==2 ? Eval("""
BlackmanResize(clp,taps=4,ss_x,oy)
BlackmanResize(taps=4,last.width,ss_y)
LimitedSharpenFasterHC(strength=LSFstr)
UnsharpHQ(THRESHOLD=usHQth,SHARPSTR=usHQstr,sMOOTH=0,SHOW=false)
BlackmanResize(taps=4,ox,last.height)
BlackmanResize(taps=4,last.width,oy)
""") : Eval("""
lanczosResize(clp,taps=3,ss_x,oy)
lanczosResize(taps=3,last.width,ss_y)
LimitedSharpenFasterHC(strength=LSFstr)
UnsharpHQ(THRESHOLD=usHQth,SHARPSTR=usHQstr,sMOOTH=0,SHOW=false)
lanczosResize(taps=3,ox,last.height)
lanczosResize(taps=3,last.width,oy)
""")
return last
}
-
- Posts: 35
- Joined: Tue Mar 11, 2014 4:29 pm
Re: Post-traitement pour diffuseurs 2K
Bonjour,
J'ai deux questions qui me trottent dans la tête depuis quelques temps :
- pourquoi faire les resize (up et downscale) en deux fois, largeur puis hauteur ? Il y a un gain particulier (peut-être celui de faire "deux passes" de l'effet de sharpen de l'algo de resize ?) ?
- j'avais lu quelque part qu'avec la technique d'upscale/downscale, plus on utilise une grande résolution, plus on perd en piqué. Ceci voudrait dire qu'il faudrait également augmenter les valeurs de LimitedSharpenFasterHC et UnsharpHQ pour conserver un piqué constant ?
Merci pour vos éclairages
J'ai deux questions qui me trottent dans la tête depuis quelques temps :
- pourquoi faire les resize (up et downscale) en deux fois, largeur puis hauteur ? Il y a un gain particulier (peut-être celui de faire "deux passes" de l'effet de sharpen de l'algo de resize ?) ?
- j'avais lu quelque part qu'avec la technique d'upscale/downscale, plus on utilise une grande résolution, plus on perd en piqué. Ceci voudrait dire qu'il faudrait également augmenter les valeurs de LimitedSharpenFasterHC et UnsharpHQ pour conserver un piqué constant ?
Merci pour vos éclairages

-
- Posts: 163
- Joined: Mon Feb 27, 2012 10:25 am
Re: Post-traitement pour diffuseurs 2K
C'est bcp plus rapide (moins CPU consuming) qu'un resize selon les 2 directions simultanément.pourquoi faire les resize (up et downscale) en deux fois, largeur puis hauteur ?
C'est vrai et c'est le but : adoucir la MTF en bout d'échelle fréquentielle pour minimiser l'aspect numérique d'une image projetée sur une grande base avec un projo à fort ANSI. Si on n'est pas dans un cas de figure simulaire, ça n'a que peu d'intérêt. Exemple : j'ai un portable 15.6" full-HD pour mon boulot qui a un écran "décent" (pour un portable). Lorsque je regarde un film avec le portable sur les genoux, je ne vois pas de pixelisation, donc ce type de traitement n'a aucun intérêt. Autant mettre un simple LSF si on veut un peu sharpeniser l'image.j'avais lu quelque part qu'avec la technique d'upscale/downscale, plus on utilise une grande résolution, plus on perd en piqué.
Pour ce qui est de la réso de l'upscale, si on veut que les mires 1,2 et 3 pixels gardent leur structure (tout en réduisant le CR interpixel pour adoucir la MTF), j'ai constaté qu'on ne pouvait pas faire n'importe quel ratio d'upscaling... 1.333 ou 1.666 fonctionnent.
-
- Posts: 35
- Joined: Tue Mar 11, 2014 4:29 pm
Re: Post-traitement pour diffuseurs 2K
Merci pour ta réponse.
Je regarde sur une TV LCD 46' donc bon, je recherche un bon compromis pour avoir une image plus "belle" sans générer trop de défauts...
Pour le ratio d'upscale, 2 doit aussi fonctionner ? J'utilise ce ratio et sur la mire que j'ai faite (1,2 et 3 pixels), je ne vois pas beaucoup d'artefacts...
Je regarde sur une TV LCD 46' donc bon, je recherche un bon compromis pour avoir une image plus "belle" sans générer trop de défauts...
Pour le ratio d'upscale, 2 doit aussi fonctionner ? J'utilise ce ratio et sur la mire que j'ai faite (1,2 et 3 pixels), je ne vois pas beaucoup d'artefacts...
-
- Posts: 137
- Joined: Sun Apr 22, 2012 6:18 am
Re: Post-traitement pour diffuseurs 2K
Bonjour Emmanuel
petite question
j'utilise lanczos comme resize mais comment savoir si c'est bien lanczos 3?
petite question
j'utilise lanczos comme resize mais comment savoir si c'est bien lanczos 3?