news 2026/1/3 17:50:56

FPGA实现Sobel边缘检测与中值滤波:基于灰度图像处理的探索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FPGA实现Sobel边缘检测与中值滤波:基于灰度图像处理的探索

FPGA sobel 边缘检测 中值滤波 基于灰度图像处理 ,开发板采用正点原子的,摄像头为ov5640 只有源码只有源码只有源码

最近在FPGA开发上玩了一把基于灰度图像的Sobel边缘检测和中值滤波,用的是正点原子的开发板,搭配OV5640摄像头。过程还挺有趣的,跟大家分享下。

硬件平台与图像获取

开发板选用正点原子的,这个大家应该都不陌生,资源丰富且资料齐全,很适合拿来练手。摄像头采用OV5640,它可以输出高质量的图像数据。在代码层面,初始化OV5640摄像头主要是通过配置其内部寄存器来实现的。

// OV5640初始化部分代码示例 always @(posedge sys_clk or negedge rst_n) begin if (!rst_n) begin reg_addr <= 8'h00; reg_data <= 8'h00; wr_req <= 1'b0; end else begin case (state) INIT_IDLE: begin if (init_done) begin state <= WAIT_FOR_IMAGE; end else begin reg_addr <= {init_reg_addr[7:0]}; reg_data <= {init_reg_data[7:0]}; wr_req <= 1'b1; state <= INIT_WRITE; end end INIT_WRITE: begin if (wr_ack) begin wr_req <= 1'b0; state <= INIT_IDLE; init_index <= init_index + 1; end end // 其他状态... endcase end end

这里就是通过状态机来控制寄存器地址(regaddr)和数据(regdata)的写入,wrreq是写请求信号,wrack是写完成应答信号。当所有初始化寄存器配置完成,init_done信号置高,进入等待图像数据阶段。

灰度图像处理

Sobel边缘检测

Sobel边缘检测的核心是利用两个卷积核分别对图像进行水平和垂直方向的卷积运算。

// Sobel卷积核 parameter [7:0] sobel_x_kernel[0:2][0:2] = { {8'd - 1, 8'd 0, 8'd 1}, {8'd - 2, 8'd 0, 8'd 2}, {8'd - 1, 8'd 0, 8'd 1} }; parameter [7:0] sobel_y_kernel[0:2][0:2] = { {8'd - 1, 8'd - 2, 8'd - 1}, {8'd 0, 8'd 0, 8'd 0}, {8'd 1, 8'd 2, 8'd 1} }; // 图像卷积计算 always @(*) begin for (int i = 0; i < 3; i = i + 1) begin for (int j = 0; j < 3; j = j + 1) begin sobel_x_sum = sobel_x_sum + img_data[i][j] * sobel_x_kernel[i][j]; sobel_y_sum = sobel_y_sum + img_data[i][j] * sobel_y_kernel[i][j]; end end sobel_magnitude = $sqrt(sobel_x_sum * sobel_x_sum + sobel_y_sum * sobel_y_sum); // 这里简单地对结果进行截断处理,实际应用可能需要更精确的处理 if (sobel_magnitude > 8'd255) begin sobel_result = 8'd255; end else begin sobel_result = sobel_magnitude[7:0]; end end

这里定义了两个Sobel卷积核sobelxkernelsobelykernel,然后通过双重循环对图像的3x3区域进行卷积计算,分别得到水平方向和垂直方向的梯度和sobelxsumsobelysum,再通过勾股定理计算梯度幅值sobelmagnitude。最后对幅值进行处理,如果超过255就截断为255,得到最终的Sobel边缘检测结果sobelresult

中值滤波

中值滤波主要是对图像中的每个像素点,取其邻域内像素值的中值来替代该像素点的值,以此达到平滑图像、去除噪声的目的。

// 中值滤波排序模块 function [7:0] median_sort; input [7:0] a, b, c, d, e, f, g, h, i; reg [7:0] arr[0:8]; reg [7:0] temp; begin arr[0] = a; arr[1] = b; arr[2] = c; arr[3] = d; arr[4] = e; arr[5] = f; arr[6] = g; arr[7] = h; arr[8] = i; for (int k = 0; k < 9; k = k + 1) begin for (int l = k + 1; l < 9; l = l + 1) begin if (arr[k] > arr[l]) begin temp = arr[k]; arr[k] = arr[l]; arr[l] = temp; end end end median_sort = arr[4]; end endfunction // 应用中值滤波 always @(*) begin med_result = median_sort(img_data[0][0], img_data[0][1], img_data[0][2], img_data[1][0], img_data[1][1], img_data[1][2], img_data[2][0], img_data[2][1], img_data[2][2]); end

这里先定义了一个函数mediansort,将输入的9个像素值(3x3邻域)放入数组arr中,通过冒泡排序法对数组进行排序,然后返回中间值(第5个值)作为中值滤波的结果。在实际应用中,对每个像素的3x3邻域调用这个函数,得到最终的中值滤波结果medresult

在实际项目中,将这些模块整合起来,结合正点原子开发板的资源和OV5640摄像头的数据输出,就能实现对图像的灰度处理、Sobel边缘检测以及中值滤波功能啦。整个过程虽然有点折腾,但看到最终的效果还是挺有成就感的。希望这篇博文能给同样在FPGA图像处理领域探索的小伙伴一些启发。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/28 20:46:59

SC6D10170H-JSM 碳化硅肖特基二极管

在新能源、工业控制等高端电力电子领域&#xff0c;碳化硅&#xff08;SiC&#xff09;肖特基二极管凭借高效、耐高温、高频的核心优势&#xff0c;成为提升系统性能的关键器件。杰盛微半导体深耕宽禁带半导体领域&#xff0c;重磅推出SC6D10170H 碳化硅肖特基二极管&#xff0…

作者头像 李华
网站建设 2025/12/30 21:38:12

探索三相光伏并网仿真模型:从原理到实现

三相光伏并网仿真模型 Boost&#xff0b;三相逆变器 PLL锁相环 MPPT最大功率点跟踪控制(扰动观察法) dq解耦控制 电流内环电压外环的并网控制策略在可再生能源领域&#xff0c;光伏发电因其清洁、可持续的特点备受瞩目。而三相光伏并网系统作为高效利用太阳能并接入电网的关键技…

作者头像 李华
网站建设 2025/12/25 17:58:02

引领测试创新:领导力在软件质量保障中的核心作用

在快速演进的软件开发生态系统中&#xff0c;测试不再仅仅是缺陷检测的后期环节&#xff0c;而是贯穿全生命周期的质量保障活动。随着敏捷开发、持续集成和人工智能技术的普及&#xff0c;测试创新已成为提升交付效率与产品可靠性的关键驱动力。然而&#xff0c;创新的落地并非…

作者头像 李华
网站建设 2025/12/29 13:11:21

29、认证与虚拟专用网络协议配置及故障排除指南

认证与虚拟专用网络协议配置及故障排除指南 在当今数字化办公的大环境下,远程网络连接变得愈发重要。企业需要确保外勤人员能及时接收邮件、访问内部应用和数据,同时也要为商业伙伴提供合适的访问途径,以提升沟通效率和业务协同效果。虚拟专用网络(VPN)技术应运而生,它能…

作者头像 李华
网站建设 2025/12/31 4:41:26

深度学习初学者指南

在当今人工智能飞速发展的时代&#xff0c;深度学习无疑是其中最耀眼的技术之一。无论是语音助手、人脸识别&#xff0c;还是自动驾驶、智能推荐系统&#xff0c;背后都离不开深度学习的强大支持。对于许多刚接触这一领域的学习者来说&#xff0c;深度学习既充满吸引力&#xf…

作者头像 李华
网站建设 2026/1/2 2:16:02

基于PLC的蔬菜大棚温湿度环境控制系统设计

基于PLC的蔬菜大棚内部温湿度环境控制系统的设计 基于西门子S7-1200PLC设计实现&#xff0c;Wincc组态软件TP-700触摸屏动画。 博图V15.1以上版本软件可打开。 设计可以实现蔬菜大棚内部的温湿度参数调控&#xff0c;在蔬菜大棚内部放置多个传感器实现对温度、湿度、二氧化碳浓…

作者头像 李华