--- title: "TVID: La video numerique en pratique" date: 2021-11-10 14:00 categories: [Image S9, TVID] tags: [Image, S9, TVID] math: true --- Lien de la [note Hackmd](https://hackmd.io/@lemasymasa/r14LNrFvY) ![](https://i.imgur.com/gA1JHpC.png) # Film et entrelacement - Film = 24P, NTSC = 60I - Comment passer un film a la tele ? - 2:3 pulldown - 4 frames, 10 fields - A: TFF + RFF - B: BFF - C: BFF + RFF - D: TFF ![](https://i.imgur.com/WPSTWyx.png) :::success Voila comment on envoie des films a la tele Americaine (*tele-cine*) ::: > Et oui, on repete des films ! # Desentrelacement - Reconstruire les lignes manquantes - Plusieurs approches - Toutes inexactes - Complexite variable - En pratique: efficacite / cout ![](https://i.imgur.com/dtTFi3P.png) :::warning Ce n'est pas qu'on ne sait pas faire, c'est qu'on fait pour un budget ::: *Desentrelacer, comment ca marche, combien ca coute ?* ## Methode - Ne rien faire :::danger C'est indadmissible ::: - Weave - Lire une frame (a) - \$$=1:1$ (a) - Skip field - Lire $2\times$ le meme field (a) - Si field bottom $\to$ aligner frame (b) ### Alignement Image entrelacee 4:2:0 MPEG-2 ![](https://i.imgur.com/7YuBYry.png) ![](https://i.imgur.com/n9z4w3a.png) On doit *upscaler* verticalement pour skip field ### Upscaling :::info **Definition** Agrandir une image source a faible resolution ::: :::warning On cree des pixels ::: #### Upscaling NN: **Nearest Neighbour / Plus proche voisin** - Repeter le pixel voisin ![](https://i.imgur.com/bO0lGRg.png) > Utiliser dans la Super Nintendo ou la Neo Geo Avantages: - Rapide - Gratuit Probleme: - $\color{red}{\text{Moche}}$ #### Upscaling BF (Bilinear Filtering) - Interpolation lineaire 2D - Trois interpolations 1D - entre $P_{00}$ et $P_{10}$: $Q_0$ TODO ![](https://i.imgur.com/2AyG2pH.png) Avantages: - Acceptable - Pas cher Probleme: - Pas pour les gros ratios (SD $\Rightarrow$ 4K) ![](https://i.imgur.com/w41eRst.png) #### Upscaling B-Spline - Plusieurs polynome - Points de passage pour les pixels en 2D - B-Spline: Contrainte de continuite entres les polynomes ![](https://i.imgur.com/OgqvT2y.png) Tres souvent: B-Splines cubiques ![](https://i.imgur.com/Ie3Cdg2.png) C'est flou, mais c'est acceptable - SD $\to$ 4K: OK Problemes: - Cher - Risque (ringing) Le resultat est tres inegal. :::danger Il n'y a aucune strategie *parfaite* ::: Le coup de skip field c'est \$ $= 1:1(a) + \text{filtrage}(b) + \text{upscale}(c)$ - Bobbing: - Lire chaque field 1/1 (a) - Si field bottom $\to$ aligner frame (b) - Upscaler verticalement $\times 2$ ( c ) - Cout $=1:1(a) + \text{filtrage}(b) + \text{upscale}(c)$ - Blending (Microsoft) - Lire une paire de fields (a) - Aligner fields bottom (b) - Upscaler verticalement $\times 2$ ( c ) - Cout $=2:1(a) + 2\times \text{filtrage}(b) + 2\times\text{upscale}(c) + \text{mixage}(d)$ - $\color{red}{\text{Adaptative (Spatial, MoComp)}}$ - Desentrelaceur intelligent ![](https://i.imgur.com/4sCxUEv.gif) ### Adaptatif spatial pur - Plusieur fields: B0, T1, B1 - Decoupes en zones de pixels: $Z_i$ - Pour chaque $Z_i$ - "difference" entre $B1$ et $B0$ (parite) - $E_i\sim = Z_i(B1) - Z_i(B0)$ - $E_i\gt$ seuil: $Z_i$ "en mouvement" - Pixels $Z_i(T1)$ bobbes - Sinon $Z_i$ "statique" - Pixels $Z_i(T1)$ weaves avec $Z_i(B0)$ - Avantages - Si mouvement: $Z_i(T1)$ desentrelacee - Sinon $Z_i(T1)$ pleine resolution - Rendu acceptable - Inconvenients - Certains mouvements indetectables (translation, recouvrements) - \$ $=3:1+\text{differenciateur} + \text{bob} + \text{multiplexeur}$ Amelioration - 4 fields - $E_i = \max(Z_i(B1) - Z_i(B0))$, $Z_i(T1) - Z_i(T0)$ - Meilleure detection de "mouvement" - \$ $=4:1+2\times\text{differenciateur} + \text{bob} +\text{multiplexeur}$ Adaptatif temporel: - Spatial + estimateurs de mouvements convolutifs - FIR / Turbo - Cuisine secrete brevetee (Faroudja) - Plus beau - ***BEAUCOUP PLUS CHER*** ## Exemples ![](https://i.imgur.com/eCa0fpn.png) # Cadence image - US: 1953: NTSC en couleur - Interference image/son a 60 ips :::success **Solution**: changer la frequence image ::: - $\times 1000/1001$ - 60 ips $\Rightarrow$ 59,94 ips - 30 ips $\Rightarrow$ 29,97 ips - 24 ips $\Rightarrow$ 23,978 ips - Transparent, economique **penible** - "Modes TV", "Modes PC" Image animee: quelle frequence choisir ? - Cinema - Muer: 16 ips - Parlant: 24 ips - TV - Synchro cameras et TVs - "Horloge commune" ? - Frequence secteur ! - US, JP: 60 ips - EMEA: 50 ips ## Cadence US US: $60$ ips - $60 \Rightarrow 30$: sauter 1 image sur 2 - $30 \Rightarrow 60$: repeter 1 image sur 2 - $24 \Rightarrow 30$: repeter 1 image sur 5 - $59,97 \Rightarrow 60$: repeter 1 image sur 1000 - $60 \Rightarrow 59,97$: sauter 1 image sur 1000 - $29,97 \Rightarrow 60$: repeter 1 image sur 2 *et 1 fois sur 1000* ## Cadence EU EU: $50$ ips - $60 \Rightarrow 50$: sauter 1 image sur 6 - $50 \Rightarrow 60$: repeter 1 image sur 5 - $24\Rightarrow25$: repeter 1 image sur 24 ? - NON! accelerer $25/24$: $+4\%$ - $2m20s/h$ - $+1$ demi-ton > Mega drive: toute la logique etait conditionnee par l'horloge video > Certains jeux etaient ralentis en Europe pour le passage $60Hz\to50 Hz$ > Perte de $20\%$ de vitesse ! - $30 \Rightarrow 50$: rapport 5/3. Repeter $2\times$ fois la 3e image ? - $1$ $2$ $3$ $\color{orange}{3}$ $\color{red}{3}$ - Pourquoi on veut pas faire ca ? Parce que c'est saccade - On fait: $1$ $\color{orange}{1}$ $2$ $\color{orange}{2}$ $3$ - Plus homogene $\Rightarrow$ resultat plus fluide ## Cadences en pratique Tout est entier: - PTS: temps image source - STC: temps horloge affichage Resolution d'increment: TIR - TIR(PTS) = duree d'une seconde dans le flux video - TIR(STC) = duree d'une seconde a l'affichage Si TIR(PTS) non $\%$ TIR(STC) probleme de $\color{red}{\text{fraction continue !}}$ ### Exemple TIR PTS = 90000 = 1 secnode ![](https://i.imgur.com/1KqjrRh.png) :::danger La FC fait apparaitre de la gigue, aka JITTER ::: ![](https://i.imgur.com/V04xFz1.png)