Créer un encodeur pal/secam/ntsc

transmettre une vidéo non compressée d’une seconde demande en effet beaucoup de débit, environ 33 Mo par seconde :
768 x 576 = 442 368 pixels pour une image

chaque pixel est codé sur 3 octets (infos YUV), ça donne au total pour une image : 1 327 104 octets,
comme il y a 25 images par seconde on a donc bien 33 177 600 octets à envoyer par seconde à l’arduino, qui lui doit envoyer ensuite la même quantité de données à la puce adv7171,

peut-être que la solution serait d’utiliser une puce décodeur mpeg2 à intercaler entre l’arduino et l’adv7171 ?
il y aurait moins de données à envoyer, car la vidéo serait au format compressé mpeg2, on peut aussi utiliser une puce qui décode à la fois le mpeg2 et le h264 (encore moins de données à envoyer), quelqu’un connaît une référence de puce décodeur mpeg2/h264 ?

autre solution : utiliser un raspberry pi, il y aura la puissance nécessaire, l’espace disque et la mémoire pour envoyer les données via le GPIO, mais le raspberry n’est pas vraiment conçu pour faire du temps réel (risque de latence, d’interruption du processeur pour effectuer une autre tâche)

voici une description de la norme ITU-R BT.656, qui concerne les signaux numériques vidéos non compressés YCbCr, la puce adv7171 récupère depuis un port ITU-R BT.656 (8 pins pour récupérer 8 bits, envoyés de manière parallèle) ce genre de signal :
en.wikipedia.org/wiki/ITU-R_BT.656

la documentation complète :
itu.int/dms_pubrec/itu-r/rec … !PDF-F.pdf

une interface SDI existe pour ce type de signal numérique :
en.wikipedia.org/wiki/Serial_digital_interface
fr.wikipedia.org/wiki/Serial_digital_interface

le défi ici consiste à trouver un moyen économique d’envoyer ces données à la puce adv7171, peut-être en utilisant un raspberry pi ?

As-tu fait des essais de recolorisation avec le NTSC ?
J’ai remarqué sur mon tv n&b que le moiré est bien plus visible dans ce standard qu’en pal/secam.

non j’ai pas encore essayé,
si tu as paint shop pro 8 il y a ce script qui simule l’encodage pal depuis une image :
web.comhem.se/zacabeb/whims/tvsim.html

Où en est le projet de l’encodeur ? :wink:

au point mort, car il y a la difficulté de générer le signal vidéo numérique au bon format attendu par la puce et à un débit suffisant,
et j’ai pas tous les composants nécessaires,

reste la possibilité d’utiliser le mode « générateur de mire » intégré à la puce ADV7171

Pour générer une mire de barres en NTSC ou PAL, n’importe quel décodeur de TV numérique (SD ou HD, terrestre ou satellite) équipé d’un port USB peut le faire à partir d’images JPEG stockées sur une clé USB (ou de séquences MPEG ou H264 pour de la vidéo).
Il a existé quelques décodeurs TNT SD avec encodage SECAM et port USB mais en HD c’est plus rare.

[quote="Pour générer une mire de barres en NTSC ou PAL, n’importe quel décodeur de TV numérique (SD ou HD, terrestre ou satellite) équipé d’un port USB peut le faire à partir d’images JPEG stockées sur une clé USB (ou de séquences MPEG ou H264 pour de la vidéo).
Il a existé quelques décodeurs TNT SD avec encodage SECAM et port USB mais en HD c’est plus rare.[/quote]

Bonjour,marceljack connaissez-vous des marques de deco sd/hd proposant le secam ?

Bonjour,marceljack connaissez-vous des marques de deco sd/hd proposant le secam ?
[/quote]
Oui, moi j’ en connais:
-Le SAGEM TNtop MPEG 4 HD/SD
-Le MEDIASAT DVB-S Canal satellite, et son frere jumeau pour le DVB-C Cable que louait numéricable MPEG 2 SD
-Le visiosat 7500 TNT SAT MPEG 2 DVB-S SD
-Le Visiopass Cable DVB-C de SAGEM en MPEG 2 SD

Au choix, signal CVBS PAL ou SECAM( SECAM identification ligne uniquement, car reinsertion TXT sur VBI )

Sinon il y le DIGIPAL 01 TECHNISAT DVB-T MPEG 2 SD, et le VEOX TNTSAT ou FRANSAT CAHORS MPEG 4 HD/SD DVB-S2 qui ont une sortie CVBS PAL/SECAM( secam avec identification ligne, et VBI avec identification trame, avec les 9 « Bouteilles », sans reinsertion TXT, du fait )

Quel sera le prochain épisode de l’encodeur ? :smiley:
Stay tuned !

je dirai que la prochaine étape serait d’acheter un adaptateur TQFP44 vers DIP 44 :

hobbytronics.co.uk/tqfp-44-breakout

afin d’y souder la puce pal/ntsc adv7171, c’est pas évident car l’espace entre les pattes est très faible et je ne suis pas doué en soudure de composants CMS,
l’objectif étant ensuite de pouvoir utiliser cette petite plaquette sur une breadboard, avec un microcontrôleur (arduino, stm32), pour des expérimentations sans soudures :

breadboard.jpg

ça permet au minimum d’activer l’option « générateur d’une mire de barres de couleurs » qui est intégrée dans la puce adv7171 :
ez.analog.com/video/f/q-a/5899/ … -pal/23407

si on veut aller plus loin (convertir une image numérique vers le format analogique pal) alors il faut créer une interface pour convertir un fichier vidéo (présent sur une carte mémoire flash) vers le format d’entrée attendu par la puce (ITU-R 1 BT601/656 YCrCb), et créer le programme pour le microcontrôleur capable de piloter la puce, là c’est nettement plus dur :mrgreen:

autre difficulté : la puce adv7171 est ancienne et n’est plus supportée par le fabricant, si on veut de l’aide sur les forums du fabricant il faut migrer vers la puce adv7342/7343 qui lui a succédé :
analog.com/media/en/technic … 2_7343.pdf

concernant la puce pal/secam/ntsc philips saa7182wp j’ai acheté un socket format plcc84 (moins d’un euro), qu’il faudra ensuite souder sur une plaquette

reichelt.com/de/en/ic-socke … 14704.html

ce genre de plaquette avec le socket déjà soudé coûte très cher, du coup j’ai que le socket pour l’instant, l’idéal étant d’arriver à ce type de plaquette utilisable sur une breadboard, pour des expérimentations sans soudures :

plcc84.jpg

Les vidéos présentées ici ont été colorisées grâce à l’IA.
https://www.youtube.com/channel/UCRTR0R-2n-rcMrItamVKX9g
Toutefois, je me demande comment coloriser informatiquement si aucune information de couleur n’est présente dans l’original ?

Cela utilise les réseaux de neurones artificiels :

  • On entraîne au préalable un modèle de réseaux de neurones en lui donnant en entrée une image en noir et blanc, avec en sortie l’image colorisée qu’il devra prédire,

l’image est convertie en vecteur numérique, pour être facilement manipulable par des opérations mathématiques,
entre l’entrée et la sortie du réseau de neurones il y a plusieurs couches équipées de neurones artificiels, qui vont appliquer des opérations mathématiques (une multiplication) sur des vecteurs via des « poids » (un peu comme des coefficients), lorsque la multiplication dépasse une certaine valeur (déterminée par une fonction d’activation) alors la valeur est transmise au neurone de la couche suivante, qui refait le même travail, jusqu’à la sortie (l’image colorisée),

on répète l’opération des millions de fois avec d’autres exemples d’images, à chaque itération les poids de chaque neurone de chaque couche sont mis à jour de manière à minimiser l’erreur de prédiction en sortie (la tâche du réseau étant de prédire la bonne couleur de tel pixel de l’image en sortie), une fois l’apprentissage terminé on aura un modèle efficace, qui saura prédire une image couleur plausible, en faisant de simples opérations de multiplications (aucune intelligence réelle, c’est juste une grosse calculatrice qui applique des poids sur des valeurs numériques).

voilà expliqué de manière très grossière comment fonctionne un réseau de neurones artificiels, il y a rien d’intelligent en fait, c’est juste une moulinette mathématique à plusieurs couches dont on a trouvé les bons « poids » (après un long apprentissage) qui permettent de générer des couleurs plausibles depuis une image noir et blanc en entrée.

fr.wikipedia.org/wiki/Apprentissage_profond
fr.wikipedia.org/wiki/R%C3%A9se … %C3%A9seau
towardsdatascience.com/colorizi … 92d71956e2

le principe existe depuis les années 50, mais à l’époque on avait pas assez de puissance de calcul pour mettre en oeuvre ces réseaux de neurones artificiels, il a fallu attendre le début des années 2010 quand les cartes graphiques sont devenus suffisamment puissantes pour faire l’apprentissage sur des quantités énormes de données (un CPU mettrait trop de temps, les cartes graphiques ont l’avantage de faire des millions de calculs en parallèle, ça accélère le temps d’apprentissage des réseaux de neurones, au lieu que ça prenne plusieurs mois avec un CPU ça prendra que 8 heures par exemple avec des données d’apprentissage de 50 millions d’images et une bonne carte graphique).

J’imagine que cela implique entre autres la méthode des moindres carrés ?
https://fr.wikipedia.org/wiki/M%C3%A9thode_des_moindres_carr%C3%A9s

On mesure de l’erreur de prédiction avec une fonction de coût (loss en anglais) appellée aussi parfois « fonction objectif », qui peut être de plusieurs type : cross-entropy pour les problèmes de classification (dire si telle image est un chat ou un chien, ici 2 étiquettes), l’erreur quadratique (mean square error) pour les problèmes de régression (prédire un nombre, la température qu’il fera demain à partir d’une donnée statistique en entrée par exemple).

une fois connue l’ampleur de l’erreur alors un algorithme est utilisé pour modifier les poids de chaque couche du réseau de neurones afin de minimiser l’erreur, le plus connu et le plus ancien s’appelle « descente de gradient stochastique » (SGD en anglais), il en existe d’autres plus ou moins performants selon le type de réseau de neurones artificiels et le type de données.

fr.wikipedia.org/wiki/Algorithm … ochastique

Malheureusement, mon niveau de maths et d’algèbre est assez limité !
Difficile pour moi de comprendre ces équations :frowning:

Mince, je suis démasqué :mrgreen:

C’est clair c’est pas évident, après il y a des chaines youtube qui tentent de rendre la chose beaucoup plus compréhensible pour le grand public ou ceux qui ne sont pas fans des maths,
youtube.com/results?search_ … p+learning

si tu sais faire du python alors il y a des tutoriels autour de keras, une bibliothèque pour python (intégrée à tensorflow) pour faire du deep-learning, sans trop être embêté par les maths, c’est un peu comme du légo,
tu assembles des briques pour obtenir un résultat à la fin, tous les concepts mathématiques sont masqués, pour ne présenter que l’essentiel à l’utilisateur :
keras.io/

(sans objet)

+1
D’ailleurs je rappelle à Domi-Niaque qu’il est interdit de publier la photo de quelqu’un sans son accord.