"Coulisses" d'une image vidéo

Après quelques recherches, je suis tombé sur ceci, qui illustre bien ces différences:
Y_systems.jpg
Les codages couleurs que sont le Pal/Secam/Ntsc exploitent respectivement le YUV, le YDbDr, et le YIQ.
De quoi se mélanger les pinceaux !

durant l’été dernier j’ai eu à faire avec ces histoires d’espace couleur YUV pour ajouter une émulation pal/secam à cryptimage, le résumé de marceljack est bon,

tu as juste à retenir la signification des 3 lettres ( composantes couleurs U et V appelées chroma, et Y l’information liée à la luminance ) et qu’il y a des coefficients derrière pour pondérer le tout,

et que c’est un subterfuge inventé du temps de la TV analogique pour faciliter la transmission hertzienne et permettre la compatibilité avec les TV noir et blanc ( qui n’auront qu’à utiliser l’information de luminance Y ), le concept a ensuite été repris pour la compression vidéo numérique ( ainsi que la compression photo numérique type jpeg ),

pour les coefficients il y a 2 normes de matrices en vidéo numérique : bt601 ( vidéos simple définition ) et bt709 ( vidéo haute définition ) :

en.wikipedia.org/wiki/Rec._601
en.wikipedia.org/wiki/Rec._709

et le très récent bt2020 pour l’ultra-haute définition :
en.wikipedia.org/wiki/Rec._2020
itu.int/dms_pubrec/itu-r/re … !PDF-E.pdf

UV ou D’b D’r, c’est la même chose à un coefficient près.
Pour I Q c’est différent car les signaux I (In phase) et Q (Quadrature) sont deux combinaisons linéaires de R-Y et B-Y qui ont été choisies de façon à ce que l’une des deux (Q) demande moins de bande passante que l’autre (de mémoire 600 kHz pour Q contre 1,3 MHz pour I).
On voit d’ailleurs sur ton image qu’il y a très peu d’information dans le signal Q.

Il faut voir qu’à l’époque où le NTSC a été défini (1952 !) les Américains avaient fait beaucoup de recherches sur la perception des couleurs pour réduire le plus possible la bande passante nécessaire aux signaux de chroma.

I et Q ont sur l’axe un déphasage de 33° par rapport à R-Y et B-Y

C’est bizarre en lisant une VHS NTSC en mode NTSC 4,43, sur un TV PAL (non NTSC) j’avais de la couleur qui clignotait une ligne sur deux.

Il existe sous Gimp des options de décomposition colorimétrique en YCbCr et YUV.
Mais existe-t-il le YIQ ?

il faut installer le plugin gmic dans gimp :

gmic.eu/gimp.shtml
discuss.pixls.us/t/feature-requ … yers/487/8

Comment avoir le modèle colorimétrique du secam YDbDr ?
La programmation de greffons Gimp me semble ardue.

Bonjour,

si tu connais les valeurs RVB de chaque pixel de ton image alors il est facile d’obtenir les 3 valeurs Y’ ( la luminance ), Db ( différence pondérée entre la valeur du bleu et la luminance ) et Dr ( différence pondérée entre la valeur du rouge et la luminance ), qui s’obtiennent via ces équations :

Y’ = 0.299 R + 0.587 G + 0.114 B
Db = + 1.505 (B - Y’)
= - 0.450 R - 0.883 G + 1.333 B
Dr = - 1.902 (R - Y’)
= - 1.333 R + 1.116 G + 0.217 B

fr.wikipedia.org/wiki/YDbDr
en.wikipedia.org/wiki/YDbDr

Db et Dr représentent donc la chroma,

dans ton script tu parcours chaque pixel de ton image pour récupérer la valeur R, G et B et tu appliques la transformation via ces équations,

en python il est facile de modifier les pixels d’une image, en important le module pillow de python, on parcourt les pixels de l’image via une boucle for, on fait les modifs et on sauvegarde l’image sous un nom différent, il doit alors être possible de créer 3 images representant respectivement la couche Y’, Db et Dr si c’est ça que tu veux faire

pillow.readthedocs.io

Idéalement, il faudrait un greffon décomposant l’image en YDbDr, mais la programmation n’est pas encore dans mes cordes. :unamused:

j’ai pour ma part essayé d’utiliser un mini tv n&b pour voir les bords

en vertical: facile : il y a un potar ; l’image se tasse
en horizontal : on ajoute une self en série avec la bobine de déflection H

las, la ci spécialisé ka2915 et semble forcer l’effacement …

J’ai réussi à attraper le top trame de ma carte graphique, sous différentes formes:
top0.jpg
top1.jpg
top2.jpg
top3.jpg

Suite
top4.jpg
top5.jpg
top6.jpg
top7.jpg

Sur tous les TV à circuits intégrés relativement récents (à partir du début des années 80), l’effacement est assuré par une impulsion à 3 niveaux dite « sandcastle ».
-niveau bas (environ 2,5V): effacement trame
-niveau moyen (environ 4,5V): effacement ligne
-niveau haut (7,5 à 12V): clamp luma et sélection de salve chroma

Trop fort :mrgreen: :mrgreen: :mrgreen:
Le logo C+ sur un oscillo, sans trucage ! :exclamation:
Bdt: 10 µS @ 50 mV/div
cplus_oscillo.jpg

j’ai réussi à adapter un plugin gimp qui faisait du rvb vers yuv, pour qu’il agisse en plugin « rvb vers ydbdr » ( et vice-versa ) :slight_smile:

registry.gimp.org/node/9848

il suffisait juste de changer les coefficients de la matrice de conversion dans le code source, et de remplacer les messages textes « yuv » par « ydbdr »

j’ai une version linux du plugin, il ne me reste plus qu’à compiler les version pour windows ( 32 et 64 bits ),
le plugin s’installe ensuite dans le dossier plugin de gimp,

après installation on accède au plugin dans le menu « image → mode → ‹ rgb to ydbdr › et ‹ ydbdr to rgb › »,

le plugin mettra alors l’info « y » dans le canal rouge, Db dans le canal bleu et Dr et dans le canal vert, avec le menu « couleurs → composant → décomposer (RVB ) » et en décochant « décomposer en calque » on obtiendra 3 images en niveau de gris, chaque image représentant respectivement l’info y, Db et Dr

Super, je pourrais donner à mes photos le rendu colorimétrique de notre vieux secam !
Par ailleurs, j’ai refait les photos du top trame.
ntsc_arcade_1ligne.jpg
ntsc_arcade_3ligne.jpg
ntsc_2ligne.jpg
ntsc_4ligne.jpg

pour l’instant j’ai compilé la version 32 bits du plugin pour gimp 32 bits,

il me reste à compiler la version 64 bits, ça sera sans doute prêt pour dimanche ou lundi,

c’est un peu complexe car je fais une cross-compilation sous linux, avec mingw-w64, ça permet de créer des binaires windows depuis linux, mais ça oblige à compiler pas mal de dépendances pour gimp, ça prend du temps,

il y aura en fait 2 plugins :

  • un qui fait la conversion rvb vers yuv et yuv vers rvb
  • un autre qui fait la conversion rvb vers yDbDr et yDbDr vers rvb

ça ajoute ces 4 possibilités dans le menu image->mode :

plugin-gimp.png

j’ai crée un fichier d’installation pour ces plugins :

ibsoftware.free.fr/div/setup_plu … _ydbdr.exe

ça va installer automatiquement les plugins dans le répertoire plugins de gimp,

j’ai testé avec la version 2.8 de gimp ( 32 et 64 bits ), ça devrait fonctionner

après application du plugin il faut ensuite décomposer l’image en 3 images noir et blanc via le menu « couleurs, composants, décomposer »

Je viens d’installer le plugin.
J’ouvre une image en rvb, que je passe à l’aide du plugin en mode YDbDr.
Ensuite, décomposition à l’aide du système RVB sans calques.
J’obtiens Y dans R, Db dans V et Dr dans B.
Ensuite, que faire, je suis un peu perdu… ?

donc si tu appliques le plugin « rvb ver ydbdr » tu vas obtenir une nouvelle image dans laquelle le canal rouge contient la luminance, la chroma Db dans le canal vert, et la chroma Dr dans le canal bleu,

ça donne alors une image aux couleurs étranges ce qui est normal,

il faut donc décomposer cette image en 3, pour pouvoir ensuite travailler sur chaque composante ( Y, Db, Dr ), et ensuite tu recomposes l’image après tes modifications ( menu couleur → composants → recomposer ) mais attention il ne faut pas fermer l’image originale sinon la recomposition ne pourra pas fonctionner,

une fois que tu as recomposé il faut appliquer le plugin « yDbDr vers RVB » pour retrouver les couleurs réelles de l’image,

exemple avec une mire philips, l’image originale RVB :


j’applique le plugin rvb vers yDbDr, j’obtiens cette image :


je décompose ensuite les 3 canaux R, V et B, qui correspondent en fait à la luminance, à Db et à Dr ( les 2 composantes de la chroma ), via le menu "couleurs, composants, décomposer, je décoche la case décomposer en calques :

images.jpg

je décide de modifier l’image 3 ( composante Dr ) en inversant les valeurs, puis je recompose les 3 images en une seule ( menu couleur → composants → recomposer ), et enfin j’utilise le plugin inverse « yDbDr vers RVB » j’obtiens alors une nouvelle image couleurs, comme j’ai modifié la composante Dr certaines couleurs ont changé :

pour en savoir plus sur la décomposition :

gabriel.leporcq.free.fr/Decomposition01.htm
gabriel.leporcq.free.fr/Decomposition02.htm
gabriel.leporcq.free.fr/Decomposition03.htm

on remarque aussi que si on applique le plugin rvb → yDbDr, puis dans la foulée le plugin yDbDr → rvb on remarque qu’il y a une petite dégradation de l’intensité des couleurs ( perte de contraste ), je pense que ça vient de l’algo qui est perfectible, car il faut normaliser l’échelle après re-conversion en RVB mais l’auteur original du code source ne l’a pas fait,

en RVB ça va de 0 à 255 la valeur d’un canal, mais sur wikipédia on conseille d’utiliser une échelle de 16 à 235 après conversion en yuv/yDbDr :