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

时间:2025-04-28  作者: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()))
 编辑:黄飞
猜您喜欢


网口变压器是用于网络设备中的重要电子元件,主要用于隔离电路和电源,以提高信号的稳定性和抗干扰能力。通过将网络信号进行变压,网口变压器能够有效地降低信号的传输损耗...
2014-02-18 00:00:00

切割机、云石机和修边机是现代建筑和装修行业中不可少的工具。切割机高效能和精准度应用于各种材料的切割,适合于金属、瓷砖、石材等多种材质,帮助工人实现高质量的加工效...
2012-02-28 00:00:00

贴片电阻上的「01x」标识,并非直接代表阻值,而是指明了它的尺寸。01x 代表的是英制01005封装,也就是公制尺寸0.4mm x 0.2mm,是目前市面上最小...
2024-11-26 11:29:55

「302」本身并不代表贴片电阻的阻值,而是表示其封装尺寸。302指的是英制尺寸,即长0.3英寸,宽0.02英寸。换算成公制单位,大约是长7.62mm,宽0.50...
2024-11-26 11:29:47

现代科技迅猛发展的背景下,各种配件在我们的日常生活中是愈发重要的配件。特别是在电子产品和机械设备中,配件不仅提升了产品的功能性,还改善了用户的使用体验。本文将重...
2025-04-26 09:01:18


BSSOP44_EP(增强型薄型小外形封装)是广泛应用于电子元件的封装形式,特别是在集成电路(IC)领域。它因其优越的性能和小巧的外形而受到许多工程师和设计师的...
2025-02-21 14:26:40


贴片电阻在电路板上十分常见,要识别其好坏,可以采用以下几种方法:1. 目视检查: 仔细观察电阻表面,看是否有烧焦、裂纹、变形等明显的物理损伤。如果发现这些迹象,...
2024-11-29 10:26:21