Coder Social home page Coder Social logo

mshr-h / motion_estimation_processor_breakingoff Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 1.0 1.76 MB

Breakingoff based Motion Estimation Processor written in Verilog-HDL

License: MIT License

Verilog 96.51% Shell 1.97% Batchfile 0.31% Makefile 1.21%
motion-estimation verilog-hdl video-codec video-processing

motion_estimation_processor_breakingoff's Introduction

Motion Estimation Processor

Hardware implementation of Motion Estimation algorithm written in Verilog-HDL. It's currently under development.

About Motion Estimation

Motion Estimation is a process of finding motion vectors from a reference frame to the current frame. We apply the following process for each of the macro blocks in the current frame. We first find a block which has the lowest matching error in the search window of the reference frame. We use sum of absolute errors between corresponding pixels. Then, the displacement between the current macro block to the best matching macro block is motion vector.

Figure of Motion Estimation

Description

  • Breakingoff based motion estimation
  • Only integer pixel motion estimation
  • Template Block: 16x16 pixels
  • Search Range : ±24 pixels
  • Supported devices
    • MU500-RX FPGA board & MU500-7SEG 7seg LED board
    • DE1-SoC

Required Tools

How to run Simulation

  1. Open memory/memory.xlsx
  2. Click 'Create Memory' button to create memory/memory_sw.txt for search range memory and memory_tb.txt for template block memory
  3. Run make_tb.sh
  4. You will find the wave file testbench/***.vcd

How to synthesis Motion Estimation Processor

  1. Open memory/memory.xlsx
  2. Click 'Create Memory' button to create memory/memory_sw.txt for search range memory and memory_tb.txt for template block memory
  3. Run make_mif.sh to generate mif files
  4. Open fpga/fpga_top.qpf in Altera Quartus Prime
  5. Compile it

Source Code Organization

The Motion Estimation Processor source code is organized as follows:

docs/       documentation
fpga/       fpga related files
memory/     memory dependencies
rtl/        RTL files for Motion Estimation Processor
testbench/  test suites
tools/      tool for creating mif file

Timing chart

Block diagram

Parameters

TB_LENGTH

Size of the template block. The default value is 16 pixel.

SW_LENGTH

Size of the search window. The default value is 64 pixel.

PE_OUT_WIDTH

Bit width of the Processor Element's output. The default value is 8 bit.

MEMORY_SW_CONTENT

Path to the search window memory file which contains pixel values. If you run on iverilog, you should specify text file. If you compile it with Quartus, you should specify mif file. The default value is "../memory/memory_sw.txt".

MEMORY_\TB_CONTENT

Path to the template block memory file which contains pixel values. If you run on iverilog, you should specify text file. If you compile it with Quartus, you should specify mif file. The default value is "../memory/memory_tb.txt".

motion_estimation_processor_breakingoff's People

Contributors

mshr-h avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

mfkiwl

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.