Bonjour,
J'ai une vidéo de mauvaise qualité dont les lignes de chaque images sont aléatoirement décalées. J'essaie, à l'aide d'un algorithme personnalisé, d'aligner ces lignes. Le principe est simple:
Pour chaque ligne, je dois détecter où elle commence et en déduire sa position. La difficulté est de détecter le début (ou la fin) d'une ligne. Quand l'image est sombre la détection est mauvaise. Comme j'ai le choix entre le bord gauche et le bord droit de ma vidéo pour détecter le début ou la fin d'un ligne, je me propose d'utiliser le meilleur bord (le plus lumineux) pour cette détection. Cependant, je ne veux pas choisir ligne par ligne le côté mais traiter des blocs d'une largeur minimum. Voici un exemple:
En bleu les pixels qui sont plus lumineux à droite qu'à gauche.
Ici il faudrait donc traiter deux blocs:
- en dessus de la flèche verte, on prendra le bord gauche pour détecter le début des lignes,
- en dessous de la flèche verte, on prendra le bord droit pour détecter la fin des lignes
Par défaut, la détection se fait sur le bord gauche, qui est de meilleure qualité. Voici les règles que je me fixe pour créer un bloc sur lequel la détection se fera sur le bord droit:
- Un bloc doit avoir une largeur minimum (disons 50px)
- Deux blocs sur le bords droits doivent être séparer d'un distance minimum (disons aussi 50px)
- Un bloc doit évidement contenir beaucoup plus de pixel bleu que de pixel rouge
- La dernière difficulté (pour laquelle je n'ai pas encore trouver de règle satisfaisante) est de bien déterminer les extrémités des blocs (c'est à dire avoir une densité de pixel bleu satisfaisante).
Auriez vous une idée d'algorithme pour créer ces blocs? Je sens qu'il me manque quelques outils mathématique pour "mesurer" la densité de mes pixel bleus.
Merci d'avance pour vos idées.
Partager