Home
Overview
Visual IR
Audio Based IR
SEG Scheme
SBD Scheme
Progressive Query
Video Summarization
Hierarchical Cellular Tree
TLQ System
Mobile MUVIS

    Shot Boundary Detection (SBD) Framework


    • Similar to FeX framework, Shot Boundary Detection (SBD) framework is designed to dynamically integrate any SBD algorithm into MUVIS using a dedicated SBD API. Any SBD module can therefore be used to extract the following entities from a video clip in a MUVIS database:
    • The list of shot boundaries: The start and end frame numbers (indexes) of each shot in a video stream.
    • The list of key-frames: One or more key-frames can be chosen in a shot.

    • SBD modules are mainly developed for and used by DbsEditor application during the indexing of the video clips in a MUVIS database and the shot boundaries with key-frames extracted are stored along with the associated video clip in the same directory. All the SBD algorithms should be implemented as a Dynamic Link Library (DLL) with respect to a specific SBD API, and stored in an appropriate folder (in the same directory with the applications or in “C:\MUVIS\” directory). Also the name of the SBD DLL should be in the format as follows:
      SBD_[fourCC code].dll (i.e. “SBD_YUVD.dll”)
    • SBD API provides the necessary handshaking and information flow between a MUVIS application and a SBD module. If the database contains video clips, for each video clip, again a separate SBD file per SBD module is created and stored along with the video clip. The naming convention for SBD files is as follows:
      [indexed video file name]_SBD.[SBD module FourCC] (i.e. “MTV_Clip_12_SBD.YUVD”)
      Data Structures in SBD Modules
    • SBDParam Structure: Created and filled by the SBD module for handshaking operation. A MUVIS application (i.e. DbsEditor) calls SBD_Bind function once with a pointer to this structure in run-time. Therefore, SBD module fills the following members of this structure to introduce itself to the application:
      • char sbd_name[512]
      • long sbd_fourcc
      • unsigned int sbd_param_no
      • long* sbd_param_fourcc
      • double* sbd_param_default
    • FrameParam Structure: Each time a new frame is fed into SBD module via calling SBD_NewFrame API function with the frame stored inside the given FrameParam structure. The format of the frame must be YUV 4:2:0.
      • unsigned char *buffer
      • unsigned long fr_index:
      • int Xs, int Ys
    • Shot Boundary Structure: A simple structure to indicate the start and end frame indexes of a shot
      • unsigned long start, end
    • SBD_OUT Structure: The primary output structure of a SBD module. The module create and fill this structure and once all the frames are fed into SBD module, then it must return this structure filled by the extracted shot boundaries and key-frames to the application via SBD_GetOut API function.
      • ShotBoundary* shots
      • unsigned int no_shots
      • unsigned long *KFs
      • unsigned int no_KFs


      API Functions in SBD Modules
    • int SBD_Bind(SBDParam*): Used for handshaking operation between the MUVIS application (DbsEditor) and the SBD module (DLL). A pointer to SBDParam structure is given as a parameter. The SBD module fills the structure to introduce itself to the application. This function should be called only once at the beginning, just after the application links the SBD module in run-time. This function should return 0 if a problem occurs, and a nonzero value if successfully completed.
    • (double*)SBD_Init: Used to initialize the SBD module. The Shot Boundary Detection parameters are given in a double array, which has the size defined in the SBDParam structure. The SBD module performs necessary initialization operations, i.e. memory allocation, table creation etc. This function should be called once at the beginning after the SBD operation parameters are set by the user via GUI of DbsEditor application. This function should return 0 if a problem occurs, and a nonzero value if successfully completed.
    • int SBD_NewFrame(FrameParam frame, int eos):: Used to feed a new frame into the SBD module. The new frame in FrameParam structure is used in the shot boundary detection algorithm and the second parameter eos is a nonzero value if this is the last frame in video stream –when the shot boundary detection is due to terminate, otherwise 0.
    • int SBD_Exit(SBDParam *): Used for both resetting and terminating the SBD module operation. It deallocates the memory spaces for SBDParam structure allocated in SBD_Bind function. Also, if SBD_Init has been called already, calling this function with no SBDParam pointer (set it to NULL) resets the SBD module to prepare it for further SBD operations. This function should be called at least once while the MUVIS application is closed, but usually it can be called at the end of each SBD operation with different SBD parameters.
    • SBD_OUT* SBD_GetOut( ): This is the function to get the output of SBD module as a pointer of SBD_OUT structure. The SBD_OUT object should be created and allocated by the SBD module owner and once SBD_Exit is called, the object can then be de-allocated again by the SBD module.
      Remarks:
Please send questions and bug reports to webm@ster,
Release Date: 01.03.2006
Last Update: 10.09.2013
Copyright 2013 MUVIS