Recensubs HQ

Inverse Kernel Resize and you, Tutto quello che hai sempre voluto sapere ma non hai mai osato chiedere

« Older   Newer »
  Share  
Tada no Snob
view post Posted on 5/2/2013, 23:27 by: Tada no Snob     +1   -1
Avatar

Snobbery Inside

Group:
Utente abilitato
Posts:
2,197
Reputation:
+1,005
Location:
Favolandia

Status:


Ennesima interessante funzioncina

EDIT un anno dopo: No, col cazzo, usate altro, davvero.

CODICE
function MightyUpscale(clip clp, int real_width, int real_height, string "invkernel", int "taps")
{
invkernel = default( invkernel,  "bilinear")  # inverse kernel used in the final sharpening step
taps = default( taps, 5 ) # kernel taps of the final sharpening step
clp.debilineary(real_width, real_height)
turnright()
nnedi3(1, dh=true,U=false,V=false,nsize=0,nns=2)
turnleft()
nnedi3(1, dh=true,U=false,V=false,nsize=0,nns=2)
big=last
Dither_convert_8_to_16().Dither_resize16(clp.width(),clp.height(),kernel=invkernel, invks=true,y=3, u=1, v=1,src_left=-0.5,src_top=-0.5, src_width=big.width(), src_height=big.height(),invkstaps=taps)
#Spline36Resize(1920,1080,-0.5,-0.5,last.width(),last.height())
Mergechroma(clp.Dither_convert_8_to_16())
}


Real_width e real_height sono le dimensioni reali del filmato, invkernel e taps servono per controllare la quantità di sharpening aggiunta nell'ultimo step.
Per fare un esempio sempre con one off
http://screenshotcomparison.com/comparison/6324
Il primo screenshot è quello originario, il secondo è MightyUpscale con 6 taps (risoluzione originaria 1280,720, chiaramente).
A livello di velocità supero tranquillamente i 20fps in caso di risoluzione reale 1280,720, con Hyouka o Chuuni probabilmente si scenderebbe un po', ma ipotizzo che sul pc di Maddo non dovrebbe scendere sotto i 15, che è più che buono per un upscale come dio comanda.
Ah, l'output è 16bit stacked.

Precisazioni:
- debilinear non può essere usato dato che non riesce a fare centershift (per lo meno non con i valori validi per gli altri resize, e non ho voglia né tempo per capire come mai non vada)
- se l'immagine non dovesse essere sufficientemente nitida (ma dubito succeda, per roba a 720 è comunque meglio encodare a 720, per roba a 955.5 o simili il risultato dovrebbe essere decisamente più nitido, e quindi più che sharpare è facile che si debba evitare di esagerare con taps e kernel) si può usare finesharp come suggeriva sp. O accontentarsi, perché in fondo non parliamo di anime a 1080p reali, e ogni sharpening bloata il filesize.
- non avevo la sbatta di parametrizzare nnedi3, forse potrebbe valere la pena di inserire nns e forse nsize, ma poi ho sempre paura che i parametri vengano usati a cazzo e basandosi su sentito dire o leggende metropolitane, visto che a livello visivo l'impatto è quasi nullo.

Edit:
TODO: Incorporare il crop (pre-crop e post-crop + dither16 come downsizer, insomma, 6 parametri in totale)

Edited by Tada no Snob - 25/7/2014, 18:10
 
Web  Top
28 replies since 3/2/2013, 04:12   5530 views
  Share