Les données associées à la détection d'une prise de vue sont stockées dans des structures figurant dans le fichier d'en-tête de détection de prises de vue, dmbshot.h. Pour la plupart des API associées, vous devez pointer sur une ou plusieurs de ces structures, dont certaines servent à stocker des données d'entrée pour l'extension Vidéo. Par exemple, la structure de contrôle de prise de vue contient des informations intervenant dans la détection de prises de vue. La plupart des structures sont utilisées par l'extension Vidéo pour stocker des données qu'elle a récupérées à partir d'un objet vidéo. Par exemple, la structure de données d'image vidéo contient le contenu en pixels d'une image.
Les structures utilisées pour la détection de prise de vue sont DBvIOType, DBvShotControl, DBvShotType, DBvFrameData et DBvStoryboardCtrl.
La structure de données DBvIOType contient les données relatives à un objet vidéo (format, dimensions et nombre d'images). La structure de données est définie comme suit :
typedef struct { FILE *hFile; /* descripteur de fichier pour l'objet vidéo */ char vhandle[255]; /* descripteur vidéo (à partir bd) */ char vtable[255]; /* nom table vidéo (à partir bd) */ char vcolumn[255]; /* nom colonne vidéo (à partir bd) */ char vFile[255]; /* nom fichier vidéo */ char idxFile[255]; /* nom fichier index */ char isIdx; /* 1 si l'index existe, sinon 0 */ char isInDb; /* 1 à partir bd, 0 à partir fichier */ int format; /* Format de l'objet vidéo */ unsigned long dx, dy; /* Dimensions de l'objet vidéo */ unsigned long totalFrames; /* Nb total images dans l'objet vidéo */ unsigned long markFrame; /* Utilisé par la détection de prises de vue */ unsigned long currentFrame; /* Image vidéo en cours */ DBvFrameData fd; /* Données de l'image en cours */ DBvDCFrameData fdDc; /* Données des images DC */ unsigned char BGRValid; /* réservé */ unsigned short usDeviceID; /* réservé */ unsigned long hwnd; /* réservé */ int videoReset; /* Signaler si vidéo ouverte ou analysée */ int firstshot; /* Utilisé en interne pour indiquer le premier appel */ void *reserved /* réservé */ } DBvIOType;
La structure de données DBvShotControl contient des informations utilisées pour le contrôle de la détection de prises de vue (par exemple, la méthode de détection). La structure de données est définie comme suit :
typedef struct { unsigned long reserved; unsigned long method; /* méthode de détection */ #define DETECT_CORRELATION 0x00000001 #define DETECT_HISTOGRAM 0x00000002 #define DETECT_CORRHIST 0x00000003 #define DETECT_CORRHISTDISS 0x00000004 int normalCorrValue; /* Seuil de correspondance */ int sceneCutSkipXY; /* Réservé */ int CorrHistThresh; /* Seuil histogramme */ int DissThresh; /* Seuil de fondu */ int DissCacheSize; /* Nbre images dans courbe de référence */ int DissNumCaches; /* Nbre images dans vérification de cohérence */ int minShotSize; /* Nombre minimal images dans prise */ } DBvShotControl;
Le Le tableau ci-après décrit les zones de DBvShotControl et indique les paramètres correspondants admis et par défaut. Pour initialiser ces zones à leur valeur par défaut, utilisez l'API DBvInitShotControl selon la procédure décrite à la section Initialisation des valeurs dans les structures de données de détection de prises de vue.
Les paramètres DBvShotControl dépendent du type de séquence
vidéo : Les changements de plan d'une séquence vidéo
numérisée varient fortement en fonction du contenu et du format de la
séquence. En outre, la précision des algorithmes de changement de plan
varie d'une séquence vidéo à une autre. Les changements de plan
clairement définis avec des différences évidentes dans l'apparence
globale de l'image sont détectés plus facilement que les modifications
plus subtiles ou les modifications pour lesquelles les couleurs restent
globalement les mêmes. Bien que les paramètres par défaut pour la zone
DBvShotControl soient adaptés à la plupart des applications, vous devrez
peut-être les adapter pour réduire les risques de détection erronée ou
impossible.
Tableau 10. Zones de DBvShotControl
La structure de données DBvShotType contient des informations relatives à une prise de vue (par exemple, le numéro de la première image, le numéro de la dernière image et le numéro d'image représentative) et un pointeur sur le contenu en pixels de l'image représentative. La structure de données est définie comme suit :
typedef struct { unsigned long startFrame; /* Numéro de la première image */ unsigned long endFrame; /* Numéro de la dernière image */ unsigned long repFrame; /* Numéro d'image représentative */ DBvFrameData fd; /* Données de la prise de vue représentative */ unsigned long dx; /* Largeur image en pixels */ unsigned long dy; /* Hauteur image en pixels */ char *comment; /* Remarques sur la prise de vue */ } DBvShotType;
La structure de données DBvFrameData précise le contenu en pixels d'une image. La structure de données est définie comme suit :
typedef struct /* Données image vidéo */ { /* MPEG 1 pixels */ unsigned char *luminance; /* Plan des pixels de luminance (noir et blanc) */ unsigned char *Cr; /* Plan des pixels Cr */ unsigned char *Cb; /* Plan des pixels Cb */ unsigned char *reserved; } DBvFrameData;
La structure de données DBvStoryboardCtrl contient des valeurs qui contrôlent les images représentatives d'une prise de vue stockées dans un catalogue vidéo, ainsi que leur nombre. Pour connaître l'utilisation de ces valeurs, reportez-vous à la section Création d'un storyboard. La structure de données est définie comme suit :
typedef struct { int thresh1; /* seuil pour plans petits à moyens */ int thresh2; /* seuils pour plans moyens à gros */ int delta; /* décalage utilisé pour les images représentatives */ } DBvStoryboardCtrl;
Le Le tableau ci-après décrit les zones de DBvStoryboardCtrl et indique les paramètres correspondants admis et par défaut. Pour initialiser ces zones à leur valeur par défaut, utilisez l'API DBvInitStoryboardCtrl selon la procédure décrite à la section Initialisation des valeurs dans les structures de données de détection de prises de vue.
Les paramètres DBvStoryboardCtrl dépendent du type de séquence
vidéo : Le choix et le nombre des images représentatives
les plus adaptés à un storyboard peuvent être différents d'un type de
séquence vidéo à l'autre. Bien que les paramètres par défaut pour
la zone DBvStoryboardCtrl conviennent à de nombreux types de séquences, il
peut être nécessaire de les utiliser d'abord sur un sous-ensemble de
vidéos d'essai. Vous pourrez ensuite affiner les paramètres avant
de créer des storyboards pour une série de vidéos plus étendue.
Tableau 11. Zones de DBvStoryboardCtrl
Zone | Signification |
---|---|
thresh1 | Identifie le seuil des prises de vue courtes. Les prises de vue
comportant moins d'images que la valeur de thresh1 sont des prises
courtes. Si elles sont cataloguées, les informations d'une prise
de vue comprennent une seule image représentative (l'image
médiane).
La valeur par défaut est 90. Si la valeur définie pour thresh1 est -1, la prise de vue sera considérée comme courte, quelle que soit sa longueur réelle. |
thresh2 | Identifie le seuil des prises de vue moyennes ou longues. Les
prises de vue comportant un nombre d'images égal ou inférieur à la valeur
de thresh2, mais au moins égal à celle de thresh1, sont considérées comme des
prises de vue moyennes. Si elles sont cataloguées, les informations
d'une prise de vue moyenne comprennent deux images
représentatives. La position des images représentatives est contrôlée
par la valeur de la zone delta. Les prises de vue comportant un nombre
d'images supérieur à la valeur de thresh2 sont considérées comme des
prises longues. Si elles sont dans le catalogue, les informations
d'une prise de vue longue comprennent trois images
représentatives. La position de la première et de la dernière image
représentative est contrôlée par la valeur de la zone delta. La
deuxième image est l'image médiane.
La valeur par défaut est 150. Si la valeur définie pour thresh1 est -1, la prise de vue sera considérée comme courte, quelle que soit sa longueur réelle. |
delta | Identifie le décalage utilisé pour les images représentatives.
Pour les prises de vue moyennes et longues, la première image représentative
est décalée, par rapport au début de la prise, du nombre d'images défini
dans delta. La dernière image représentative est décalée, par rapport à
la fin de la prise, du nombre d'images défini dans delta.
La valeur par défaut est 5. |
Les valeurs contenues dans la structure de données DBvShotControl contrôlent la détection de prises de vue. Celles qui se trouvent dans la structure de données DBvStoryboardCtrl contrôlent la création d'un storyboard. Vous pouvez indiquer explicitement des valeurs pour les zones de ces structures. De plus, vous pouvez initialiser les valeurs contenues dans ces structures à leur valeur par défaut. Pour connaître les valeurs par défaut utilisées dans la structure de données DBvShotControl, reportez-vous au Tableau 10. Pour les valeurs par défaut utilisées dans la structure de données DBvStoryboardCtrl, reportez-vous au Tableau 11.
Utilisez l'API DBvInitShotControl pour initialiser les valeurs de la structure de données DBvShotControl. Vous devez alors préciser la structure de contrôle de prise de vue. Par exemple, les instructions suivantes initialisent les zones de la structure DBvShotControl à leur valeur par défaut :
DBvShotControl shotCtrl; rc=DBvInitShotControl( shotCtrl); /* pointeur sur la structure de contrôle de prise de vue */
Utilisez l'API DBvInitStoryboardCtrl pour initialiser les valeurs de la structure de données DBvStoryboardCtrl. Vous devez alors préciser la structure de contrôle de storyboard. Par exemple, les instructions suivantes initialisent les zones de la structure DBvStoryboardCtrl à leur valeur par défaut :
DBvStoryboardCtrl sbCtrl; rc=DBvInitStoryboardCtrl( sbCtrl); /* pointeur sur la structure de contrôle de storyboard */