Convertir un arrêt sur image HDV en JPEG

30 06 2009

Voici un petit script-fu qui convertit une capture d’image sur une vidéo HDV en une photo classique.

Situation

Il m’arrive de temps en temps d’extraire des images de séquences vidéo HDVpour les utiliser sur le net.

J’utilise Avidemux qui permet de sauver en BMP ou en JPEG.

La vidéo ayant déjà subi une dégradation de par son encodage MPEG2, je choisis le format BMP.

Mais si cette façon permet de préserver l’image, elle la préserve au maximum ! 2 problèmes se présentent alors :

  • l’image est anamorphosée (16/9 et 4/3 ont tous les deux 1440 pixels par ligne en HDV),
  • la caméra que j’utilise (Sony HDR FX-7) enregistre 1088 lignes et non 1080 comme c’est le cas pour le Full HD.

La solution : un script Gimp

Note : la caméra enregistre 1088 lignes car il s’agit d’un multiple de 16, ce qui doit faciliter la tâche des algorithmes de compression. Ces 8 lignes supplémentaires ne contiennent aucune image.

En image

Les transformations à opérer sont les suivantes :

Transformations successives

Transformations successives

Le script

Voici le source du script, à enregistrer dans un fichier hdvtophoto.scm et à placer dans le répertoire ~/.gimp-2.4/script

(define (script-fu-hdvtophoto image)
  ; Démarre un niveau de undo
  (gimp-image-undo-group-start image)

  ; Découpage automatique de l'image
  (plug-in-autocrop 0 image (car (gimp-image-get-active-drawable image)))

  ; Supprime les 8 dernières lignes (1088 → 1080)
  (let* ((old-largeur (car (gimp-image-width  image)))
         (old-hauteur (car (gimp-image-height image)))
         (new-largeur old-largeur)
         (new-hauteur (- old-hauteur 8))
         (new-offsetx 0)
         (new-offsety 0)
        )
    (gimp-image-resize image new-largeur new-hauteur new-offsetx new-offsety)
  )

  ; Corrige l’anamorphisme (1440 → 1920)
  (let* ((old-largeur (car (gimp-image-width  image)))
         (old-hauteur (car (gimp-image-height image)))
         (new-largeur 1920)
         (new-hauteur old-hauteur)
        )
    (gimp-image-scale image new-largeur new-hauteur)
  )

  ; Aplatit l'image
  (gimp-image-flatten image)

  ; Termine le niveau de undo
  (gimp-image-undo-group-end image)

)

(script-fu-register "script-fu-hdvtophoto"
		    "/Script-Fu/HDV to photo..."
		    "Transforme un arrêt sur image HDV en photo"
		    "Frédéric Bisson "
		    "Frédéric Bisson"
		    "2009-06-30"
		    "*"
		    SF-IMAGE "Input Image" 0
)

Note

Le script ne gère pas l’opération de désentrelacement. Gimp dispose d’un plug-in pour cela mais il procède de façon grossière en divisant le nombre de lignes par 2.

Si les objets filmés ne bougeaient pas, l’opération de désentrelacement peut être ignorée.


Actions

Information

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s




%d blogueurs aiment cette page :