图像处理算法资料(FPGA Verilog): RGB2GRAY、阈值分割、滤波、边缘检测等算...
图像处理算法资料( FPGA Verilog) 分别有RGB2GRAY、阈值分割二值化、均值滤波、中值滤波、sobel边缘检测、膨胀、腐蚀、开闭运算。 各个模块的结构与上图的顶层模块结构一致通过模块之间的组合串联组成 ISP 顶层模块。 使用vivado软件通过测试激励文件可直接读取bmp原图然后再写出相应的处理后的图像。 vivado版本2018.4最近在项目里折腾FPGA图像处理发现有些模块复用率特别高顺手整理了一套可拼装的Verilog模块库。这次咱们不扯理论直接撸代码说人话从BMP文件处理到形态学运算全流程打通。先看最基础的RGB转灰度模块。硬件处理图像最怕浮点运算这里用了经典YUV系数做定点缩放module rgb2gray( input [23:0] rgb_data, output [7:0] gray_data ); // 定点运算处理 0.299R 0.587G 0.114B wire [15:0] calc (rgb_data[23:16]*77 rgb_data[15:8]*150 rgb_data[7:0]*29) 8; assign gray_data calc[7:0]; endmodule这里把浮点系数放大1000倍取整最后右移8位相当于除以256。实测比直接乘法器省30%LUT老铁们可以试试把系数改成移位操作还能更省。接下来是图像滤波全家桶。均值滤波搞了个流水线版本三行缓存配合累加器reg [7:0] line0 [0:1023]; reg [7:0] line1 [0:1023]; reg [7:0] line2 [0:1023]; always (posedge clk) begin sum line0[x-1] line0[x] line0[x1] line1[x-1] line1[x] line1[x1] line2[x-1] line2[x] line2[x1]; mean_out (sum 4) 3; // 四舍五入 end注意这个x-1/x1在边界会出问题实战中得做个镜像padding处理。中值滤波比较暴力直接展开9个数用排序网络建议用generate生成比较器否则代码量爆炸。图像处理算法资料( FPGA Verilog) 分别有RGB2GRAY、阈值分割二值化、均值滤波、中值滤波、sobel边缘检测、膨胀、腐蚀、开闭运算。 各个模块的结构与上图的顶层模块结构一致通过模块之间的组合串联组成 ISP 顶层模块。 使用vivado软件通过测试激励文件可直接读取bmp原图然后再写出相应的处理后的图像。 vivado版本2018.4说到Sobel边缘检测硬件实现比软件刺激多了// 梯度计算 wire signed [10:0] gx (p3 2*p6 p9) - (p1 2*p4 p7); wire signed [10:0] gy (p1 2*p2 p3) - (p7 2*p8 p9); // 近似幅值 assign edge_mag (gx[10] ? -gx : gx) (gy[10] ? -gy : gy);这里用绝对值相加替代平方根实测效果够用还省资源。注意数据溢出问题建议梯度结果位宽比像素多3位以上。形态学处理里腐蚀膨胀是基本功以3x3结构元为例// 膨胀实现 reg [7:0] window[8:0]; always (*) begin dilate_out 0; for(int i0; i9; i) if(window[i] dilate_out) dilate_out window[i]; end闭运算先膨胀后腐蚀顶层模块直接连线就行。注意结构元较大时得用行缓存别傻乎乎用寄存器堆会吃光BRAM的。顶层ISP链路搭起来像拼乐高isp_pipeline u_isp( .raw_data(bmp_reader_data), .gray_data(rgb2gray_out), .bin_data(threshold_out), .edge_data(sobel_out), //... 其他模块连线 );测试时用$fread直接读取BMP注意跳过54字节文件头。曾经有个兄弟忘了跳文件头硬是debug三天发现图像错位惨痛教训啊。最后附个仿真脚本彩蛋initial begin $readmemh(input.bmp, bmp_data); #100; $writememh(output.hex, processed_data); end存出来的hex文件改个后缀就是处理后的bmp配合Python脚本可视化调试效率直接起飞。完整代码已扔Github需要自取别忘了点个Star~链接见评论区
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2466922.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!