LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Overview :: News :: Downloads :: Tracker :: Discussions (cores)    

    Macroblock Motion Detection: Overview

    Details

    Name: macroblock_motion_detection
    Created: 17-Sep-2004 11:47:50
    Updated: 16-Dec-2004 06:35:17
    CVS: browse

    Other project properties

    Language :: Verilog
    Development status :: Alpha

    Project maintainers

  • James Edgar
  • Statistics

  • view
  • Description

    The 'Macroblock Motion Detection Project' contains modules to perform
    motion search of macroblocks in the previous video frame for the best match
    to a macroblock in the current frame.

    Threre are two sets of files:

    MotionTest.v for quick simulation of MotionDetection.v module
    which searches for a macroblock in the previous frame in a nine
    macroblock area.

    FrametoMacroblockTest.v which reads input files to simulate CCIR 601
    rate input stream and feeds data to the motion detection core which
    performs a log search for the best full pixel match and a half pel search
    around the best full search result. Note that simulation takes about an
    hour for two small frames using Modelsim Xilinx Edition on a Pentium 1.4.
    SampleFrames directory should be placed in the directory where Modelsim
    will be running.

    The Log Search is as follows:
    1st center point and 8 points offset by 8 in x and/or y
    2nd best from 1st and 8 points offset by 4 in x and/or y
    3rd best from second and 8 points offset by 2 in x and/or y
    4th best from third and 8 points offset by 1 in x and/or y

    While this does not guarantee optimum selection of motion vectors, only 36
    tests need to be performed rather than 32x32 tests for a full search.

    Features

    • Performs log search of supermacroblock (9x9) area
    • Capable of processing full scale (704x480) data at 30 f/s
    • Currently outputs motion vectors referenced to upper left
    • corner of center block (ie 16,16 = no motion)
    • Half pel unit performs 9 point half pel search and "outputs"
    • (signals are available on HP_dout) motion vectors and pixel
    • differences.

    Status

    • Currently, there are two sets of files in CVS.
    • My apologies for poor CVS structure
    • First set of files
    • MotionTest.v
    • MotoinDetection.v
    • MD_Block_Ram.v -- currenly Xilinx specific
    • timescale.v
    • The test file loads the search block with 9 macroblocks (48x48 pixels.)
    • Test values are constant in each macroblock with 16x16 groups
    • of solid areas containing macroblock number. ie:
    • 1 2 3
    • 4 5 6
    • 7 8 9
    • The current block is loaded with constant values 9 times, and each time
    • a search is performed. Note that because of the strange test pattern,
    • 2 of the tests will find local minimums and not the desired block. This
    • can happen with real video sequences using a log search.
    • Second set of files
    • FrametoMacroblockTest.v
    • motion_detection_top.v
    • FrametoMacroblock.v
    • HalfPel.v
    • HP_Block_Ram.v
    • ram_dp_sr_sw.v -- off chip dual port ram for simulation
    • written by Deepak Kumar Tala
    • copied from www.asic-world.com with permissioin
    • SampleFrames -- 18 files YUV Data for 6 frames
    • Uses first set of files (except MotionTest.v)

    Changes

    10_09_04 Changed directory in FrametoMacroBlockTest to find frames in SampleFrames directory.

    Please let me know if similar problems exist which make it difficult to run simulations. Thanks, JE

    10_18_04

    Half Pel module added. Performs 9 point half pel search around best match
    from motion detection. Outputs motion vectors (x,y) referenced to (32,32)
    at count 508.5 and Y value differences four pixels at a time at counts
    0.5 - 63.5. Added windows software to generate expected results.

    10_20_04

    Added informal documentation and module block symbols.

    12_15_04

    Added information on memory organization and timing.


     

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.