FPGA设计——图像处理(中值滤波)

简介:

1. 概述

本设计采用FPGA技术,实现CMOS视频图像的中值滤波,并通过以太网传输(UDP方式)给PC实时显示。

2. 硬件系统框图

CMOS采用MT9V011(30万像素),FPGA采用ALTERA公司的CYCLONE IV,以太网卡采用REALTK公司的100M网卡芯片,硬件框图如下:

9d805f48028e5a37e46a7558864fbcb2.png-wh_

硬件平台采用ETree的FPGA开发板,如下图所示:

701878857a8e49892b182097c4626698.jpg-wh_

3. 算法原理

中值滤波需要对3×3矩阵窗里的像素进行排序,然后找到中间值替换原始像素。

d1bd8a62642a5c8c998fce40d30be6d3.png

中值滤波对消除椒盐噪声非常有效,在图像处理中常用于保护边缘信息。


4. 算法实现

实现中值滤波关键是实现3×3矩阵窗内的实时排序,这里可以使用全比较法,为窗内的每个像素定义一个计数器cntn(n=0,1,2,3,4,5,6,7)来记录比较结果,最后cntn4的值便是中间值,将对应的像素替换成原始像素即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
always @(*)
     if (cmos_vsync)
         cnt0 <= 0;
     else
         cnt0 <= (taps0x>taps0x) + (taps0x_r0>taps0x) + (taps0x_r1>taps0x) +
                   (taps1x>taps0x) + (taps1x_r0>taps0x) + (taps1x_r1>taps0x) +
                   (taps2x>taps0x) + (taps2x_r0>taps0x) + (taps2x_r1>taps0x);
... ...
always @(posedge cmos_pclk)
     if (cmos_vsync)
     begin
         cmos_href_o  <= 0;
         cmos_vsync_o <= 0;
         cmos_data_o  <= 0;
     end 
     else
     begin
         cmos_href_o  <= cmos_href_r1;
         cmos_vsync_o <= cmos_vsync;
         cmos_data_r0 <= (cnt0==4)?taps0x:
                              (cnt1==4)?taps0x_r0:
                              (cnt2==4)?taps0x_r1:
                              (cnt3==4)?taps1x:
                              (cnt4==4)?taps1x_r0:
                              (cnt5==4)?taps1x_r1:
                              (cnt6==4)?taps2x:
                              (cnt7==4)?taps2x_r0:
                              (cnt8==4)?taps2x_r1:8'h01;
         cmos_data_o <= cmos_data_r0;
     end


5. 最终效果

下图为原始图片效果。

8a780df998c2bfa8fef3023cce4c56e7.png-wh_

中值滤波后的效果图如下,图像中的数字变骨感一些。

280c5a6a23f041243d6f664f3e1bf4cd.png-wh_



本文转自 shugenyin 51CTO博客,原文链接:http://blog.51cto.com/shugenyin/1976972

相关文章
|
1月前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
|
2月前
|
算法 异构计算
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
|
4月前
|
算法 异构计算
m基于FPGA的OFDM系统verilog实现,包括IFFT,FFT,成型滤波以及加CP去CP,包含testbench
m基于FPGA的OFDM系统verilog实现,包括IFFT,FFT,成型滤波以及加CP去CP,包含testbench
50 1
|
5月前
|
算法 测试技术 计算机视觉
基于FPGA的图像中值滤波开发,包括tb测试文件以及matlab验证代码
基于FPGA的图像中值滤波开发,包括tb测试文件以及matlab验证代码
|
7月前
|
机器学习/深度学习 算法 搜索推荐
基于FPGA的中值滤波算法的实现
中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值.
|
7月前
|
机器学习/深度学习 算法 C语言
FPGA图像处理之边缘检测算法的实现
边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。这些包括(i)深度上的不连续、(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。
FPGA图像处理之边缘检测算法的实现
|
7月前
|
算法 计算机视觉 异构计算
FPGA图像处理之rgbtogray算法的实现
Ycbcrr或Y'CbCr有的时候会被写作:YCBCR或是Y'CBCR,是色彩空间的一种,通常会用于影片中的影像连续处理,或是数字摄影系统中。Y'为颜色的亮度(luma)成分、而CB和CR则为蓝色和红色的浓度偏移量成份。Y'和Y是不同的,而Y就是所谓的流明(luminance),表示光的浓度且为非线性,使用伽马修正(gamma correction)编码处理。
|
7月前
|
算法 计算机视觉 异构计算
FPGA图像处理(高斯滤波)仿真篇
高斯滤波是一种低通平滑滤波,常用于模糊处理和减少噪声信号,其中模糊处理常用于预处理,即在提取目标之前去除图像中的一些细节等,这有利于高通处理。对于二维的数字图像信号,一般通过线性滤波器和非线性滤波器的模糊处理来减少强噪声信号。平滑滤波器就是用滤波掩模确定的邻域内的像素与加权值相卷积后得到的灰度均值来代替每个像素的值,这就很容易使用硬件实现。 GAUSS 滤波算法克服了边界效应,因而滤波后的图像较好。
|
11月前
|
算法 计算机视觉 异构计算
基于FPGA的医学图像中值滤波verilog实现,包括testbench和MATLAB验证程序
基于FPGA的医学图像中值滤波verilog实现,包括testbench和MATLAB验证程序
134 0
|
11月前
|
机器学习/深度学习 算法 异构计算
基于FPGA的低通滤波器,通过verilog实现并提供testbench测试文件
基于FPGA的低通滤波器,通过verilog实现并提供testbench测试文件
102 0

热门文章

最新文章