2008/07/18

libpuzzle : une lib pour comparer les images

Je maintien un ports pour freebsd de la libpuzzle (développée par Frank DENIS aka Jedi/Sector One)

Pour ceux qui ne le connaisse pas c'est un monsieur qu'il est vachement bien, ma conf ZSH d'origine vient de lui, (elle a beaucoup évoluée depuis) il est l'auteur des très bon logiciels suivants :

Revenons en a libpuzzle, j'ai crée ce ports sans trop connaitre la libpuzzle car c'est un dépendance d'un autre programme que j'utilise et maintien : ftwin

Récemment je me suis intéressé de plus près a libpuzzle, il s'agit donc d'une librairie permettant de comparer des images entre elles, afin de déterminée celles qui sont visuellement identiques, même dans des formats différentes. Cette lib a le bon gout de venir avec un petit utilitaire nommé puzzle-diff, qui permet de comparer en ligne de commande 2 images entre elles.

Un exemple d'utilisation sympathique c'est par exemple la détection automatique d'une image de référence dans un flux vidéos, ainsi quand on encode une série de vidéos enregistrées depuis la freebox ou il y a des pubs au début, il suffit d'avoir une image de référence pour le début de la partie intéressante de la vidéos. Le petit script suivant permet ainsi de déterminer le point de départ de l'encodage a faire :

#!/usr/bin/env zsh
FILM=$1
STARTTIME=1
date
while [ : ];do
    mplayer -really-quiet -ss $STARTTIME -vo jpeg -nosound -frames 1 "$FILM" 2>&1 >/dev/null
    [[ $(puzzle-diff 00000001.jpg startref.jpg) -lt 0.1 ]] && break
    (( STARTTIME = STARTTIME + 1 ))
done
echo $STARTTIME

il suffi ensuite de reporter le $STARTTIME dans mencoder de la manière suivante :

# mencoder -ss $STARTTIME ...

Name :
URL (optional) :
Write here: "ETOOMUCHSPAM"
Comments :