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

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

在现代生活中,工具包是每个家庭和个人不可少的良伴。无论是日常小修小补,还是应对突发状况,工具包都能为您提供极大的便利。我们的工具包经过精心设计,包含多种实用工具...
2013-08-02 00:00:00

平口袋是常见的包装材料,应用于食品、日用品等多个领域。了解平口袋的规格尺寸对于选择合适的产品非常重要。平口袋的尺寸可以根据具体需求进行定制,但市场上常见的标准尺...
2013-04-14 00:00:00


SD卡/存储卡连接器应用于多个领域,主要包括消费电子、工业设备、汽车电子和医疗设备等。在消费电子领域,SD卡连接器常见于数码相机、智能手机、平板电脑等设备,为用...
2011-07-07 00:00:00


色环电感是常见的电感元件,应用于电子电路中。外观通常由多个彩色环带构成,这些环带不仅美观,还能直观地表示电感的参数。通过色环的组合,我们可以快速识别电感值和公差...
2009-05-07 00:00:00

电阻器作为基础元件,其性能和质量直接影响电子设备的稳定性和寿命。SUPEROHM(美隆)作为知名的电阻制造商,旗下的长电极电阻凭借其优异的品质和多样的产品线,广...
2014-09-28 16:42:30

在选择装订机或打孔机时,了解其规格尺寸是非常重要的。这些设备的尺寸不仅影响其便携性,还直接关系到其使用效果和适用范围。装订机的尺寸通常为30厘米 x 15厘米 ...
2017-05-28 00:00:00

电阻器是非常关键的基础元件。作为全球知名的电子品牌,Panasonic(松下)凭借其高品质的产品和技术创新,赢得了广大工程师和电子制造商的认可。长电极电阻作为特...
2017-12-10 12:10:30

继电器附件在工业自动化中有着着重要作用,不同类型的附件适用于不同的应用场景。常见的继电器附件包括触点延时器、指示灯、隔离开关等。触点延时器用于控制电路的延时操作...
2020-03-27 00:00:00