This project implements the Sobel edge detection algorithm in Verilog for image processing tasks. The Sobel operator is commonly used to detect edges in images by calculating the gradient magnitude at each pixel. This project explores Verilog, digital image processing, and hardware acceleration techniques for image processing.
This project provides an opportunity to implement and simulate a hardware-based edge detection solution. It involves using the Sobel operator to process images and generate an edge map, highlighting transitions in pixel intensity.
- Implement the Sobel edge detection algorithm in Verilog.
- Learn the fundamentals of edge detection and digital image processing.
- Gain experience in hardware design and simulation for image processing applications.
The Sobel edge detection algorithm uses two 3x3 convolution kernels to compute the image intensity gradient at each pixel. This highlights edges in the image based on gradient magnitude.
- Horizontal kernel (Gx):
- Vertical kernel (Gy):
The project involves designing Verilog modules to compute these convolutions and combine the results to produce an edge-detected image.
- Install Siemens Questa for Verilog simulation.
- Define the method for inputting and outputting image data (e.g., simulation files or FPGA I/O).
- Study the Sobel operator and its convolution kernels.
- Understand convolution operations for edge detection in images.
- To integrate the Sobel operator, define a top-level Verilog module (
sobel_top.v). - Design a controller module (
controller.v) to manage the Sobel filter logic. - Implement convolution logic and gradient magnitude calculations.
- Write test benches for simulation with sample image data.
- Use Siemens Questa for testing and waveform analysis.
- Submit Verilog code, testbenches, and simulation results.
- Include a final report documenting the design process, challenges, and results.
The project consists of two main Verilog modules along with other sub-modules:
- Integrates the Sobel operator and handles input/output.
- Processes 9 pixels per clock cycle using a sliding window approach.
- Manages control signals and timing for the Sobel filter.