基于FPGA图像处理的高斯模糊实现

时间:2025-09-17  作者:Diven  阅读:0

高斯模糊(Gaussian Blur)是高斯低通滤波,可以过滤掉图像的高频部分,保留低频部分,对于去除高斯噪声非常有效果,常常被用于图像去噪中。

基于FPGA图像处理的高斯模糊实现

在做图像模糊的时候最直接的想法就是在当前像素上取一个3*3或者5*5的窗口,把窗口里面的数字相加再求一个平均,得到的均值作为新的当前像素的值,这也就是均值滤波。

高斯滤波认为窗口中的每个像素对当前像素的影响是不一样的,和当前像素越接近影响就越大。因此加权平均更加合理,相近的像素值权重就比较大,相远的权重就小。

在利用高斯滤波的时候首先需要去生成一个高斯核,二维高斯函数如下:

在计算每个像素值时,可以将其视为坐标的原点,这样可以将视为0,就可以简化二维高斯函数如下:

可以使用如下python代码来生成一个高斯核:

import cv2 as cvimport numpy as npsigma = 0.8kernel = np.zeros((3, 3))for i in range(-1, 2): for j in range(-1, 2): kernel[i + 1][j + 1] = 1.0 / (2 * np.pi * sigma * sigma) * np.exp(-((i * i + j * j) / (2.0 * sigma * sigma)))print(kernel)

在OpenCV中也提供了getGaussianKernel这个函数来获取一个高斯核,函数定义如下:

def getGaussianKernel(ksize, sigma, ktype=None)

第一个参数ksize代表高斯核的尺寸,这里会生成一个ksize*1的高斯核。

对于二维的高斯核生成方式如下:

import cv2 as cvimport numpy as npsigma = 0.8opencv_gaussian_kernel_x = cv.getGaussianKernel(3, 0.8)opencv_gaussian_kernel_y = cv.getGaussianKernel(3, 0.8)opencv_gaussian_kernel = opencv_gaussian_kernel_x * opencv_gaussian_kernel_y.Tprint(opencv_gaussian_kernel)

可以看到两者是不一样的,那是因为我们没有对我们自己写的求出来的高斯模板进行归一化。

然后对其进行归一化,使其权重相加的和为1

kernel = kernel / kernel.sum()print(kernel)

可见归一化后的结果就和OpenCV提供的函数计算出来的结果就一样了。

最后对齐转换为整数,左上角的数据变为1

kernel = np.int32(kernel / kernel[0][0])print(kernel)print("1/" + str(kernel.sum()))

这样就可以得到完整的高斯模板了。

完整的python代码如下:

import cv2 as cvimport numpy as npsigma = 0.8opencv_gaussian_kernel_x = cv.getGaussianKernel(3, 0.8)opencv_gaussian_kernel_y = cv.getGaussianKernel(3, 0.8)opencv_gaussian_kernel = opencv_gaussian_kernel_x * opencv_gaussian_kernel_y.Tprint(opencv_gaussian_kernel)kernel = np.zeros((3, 3))for i in range(-1, 2): for j in range(-1, 2): kernel[i + 1][j + 1] = 1.0 / (2 * np.pi * sigma * sigma) * np.exp(-((i * i + j * j) / (2.0 * sigma * sigma)))print(kernel)kernel = kernel / kernel.sum()print(kernel)kernel = np.int32(kernel / kernel[0][0])print(kernel)print("1/" + str(kernel.sum()))
 编辑:黄飞
猜您喜欢

精密电阻作为电子元器件中的关键组成部分,是非常重要的配件。三星(Samsung)作为全球知名的电子品牌,不仅在手机、半导体等领域占据领先地位,其在精密电阻领域同...
2017-12-04 12:04:30


试验芯片:Microchip PIC 18F4550集成开发环境:MPLAB IDE v8.53编译器:Microchip C18PIC18系列单片机是美...
2020-08-20 15:25:00

贴片电阻上的精度代码,简单来说,就是告诉你电阻实际阻值与标称阻值之间的误差范围。学会识别这些代码,能帮助你快速选择合适的电阻,避免因误差过大影响电路性能。常见的...
2024-11-29 10:25:46

圆板牙是重要的工具,应用于木工和金属加工等领域。主要作用是进行切割和加工,使材料的表面更加平整光滑。圆板牙的设计独特,能够在不同的材质上轻松切削,提升工作效率。...
2008-10-04 00:00:00

现代工业和电子设备中,连接器的选择对产品的性能和可靠性非常重要。弯插_P=1.5mm作为新型的连接技术,因其独特的设计和优越的性能受到了关注。本文将对弯插_P=...
2025-04-23 11:31:46

在电子工程中,采样/保持放大器是信号处理中的重要组成部分,性能直接影响系统的整体表现。带宽是一个关键参数,决定了放大器能够处理的信号频率范围。较宽的带宽能够保证...
2011-09-28 00:00:00

贴片电阻上的「473」代表其阻值为47kΩ。 三位数字的贴片电阻阻值识别方法是:前两位数字是有效数字,第三位数字表示10的几次方,单位是欧姆(Ω)。 因此,47...
2024-11-26 11:30:01

TO-263-7(也称为DDPAK-7)是一种广泛应用于电子元器件中的封装形式,因其优良的散热性能和较高的功率处理能力而受到工程师的青睐。随着电子行业的不断发展...
2025-02-24 17:15:36

毛笔作为传统书写工具,承载着丰富的文化内涵与艺术价值。毛笔可以用来书写汉字,其独特的笔触和灵活的运笔方式,使得书法作品生动而富有个性。通过不同的力度和速度,书写...
2014-05-20 00:00:00