基于FPGA的图像sobel边缘提取算法Verilog开发与开发板硬件测试
1.前言
图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。在本课题中,将通过FPGA实现图像sobel边缘提取的硬件测试。
2.算法硬件测试效果图预览


3.算法运行软件版本
vivado2022.2
Matlab2022a/matlab2024b
4.部分核心程序
(完整版代码包含中文注释和操作步骤视频)
color_bar hdmi_color_bar( .clk(video_clk), .rst(1'b0), .key(key), .hs(video_hs), .vs(video_vs), .de(video_de), .rgb_r(video_r), .rgb_g(video_g), .rgb_b(video_b) ); video_clock video_clock_m0 ( // Clock in ports .clk_in1(sys_clk), // Clock out ports .clk_out1(video_clk), .clk_out2(video_clk_5x), // Status and control signals .reset(1'b0), .locked() ); rgb2dvi_0 rgb2dvi_m0 ( // DVI 1.0 TMDS video interface .TMDS_Clk_p(TMDS_clk_p), .TMDS_Clk_n(TMDS_clk_n), .TMDS_Data_p(TMDS_data_p), .TMDS_Data_n(TMDS_data_n), .oen(hdmi_oen), //Auxiliary signals .aRst_n(1'b1), //-asynchronous reset; must be reset when RefClk is not within spec // Video in .vid_pData({video_r,video_g,video_b}), .vid_pVDE(video_de), .vid_pHSync(video_hs), .vid_pVSync(video_vs), .PixelClk(video_clk), .SerialClk(video_clk_5x)// 5x PixelClk ); endmodule 0X2_042m
5.算法仿真参数
parameter H_ACTIVE = 16'd1280; //horizontal active time (pixels) parameter H_FP = 16'd110; //horizontal front porch (pixels) parameter H_SYNC = 16'd40; //horizontal sync time(pixels) parameter H_BP = 16'd220; //horizontal back porch (pixels) parameter V_ACTIVE = 16'd720; //vertical active Time (lines) parameter V_FP = 16'd5; //vertical front porch (lines) parameter V_SYNC = 16'd5; //vertical sync time (lines) parameter V_BP = 16'd20; //vertical back porch (lines) parameter HS_POL = 1'b1; //horizontal sync polarity, 1 : POSITIVE,0 : NEGATIVE; parameter VS_POL = 1'b1; //vertical sync polarity, 1 : POSITIVE,0 : NEGATIVE;
6.算法理论概述
Soble边缘检测算法比较简,实际应用中效率比canny边缘检测效率要高,但是边缘不如Canny检测的准确,但是很多实际应用的场合,sobel边缘却是首选,尤其是对效率要求较高,而对细纹理 不太关心的时候。Soble边缘检测通常带有方向性,可以只检测竖直边缘或垂直边缘或都检测。

浙公网安备 33010602011771号