1. 高斯模糊实现原理
    类似于均值滤波(用周围像素点的均值最为中心点的像素值),二维高斯函数滤波也是利用某点周围的数值进行高斯模型处理,再将处理的数值作为该点的像素值。
    这里二维高斯模型为:

    为了计算出周围高斯函数各个点的权重,设计一个9宫格:

    以坐标值作为(x,y)的坐标值,计算每点的权重值如下(这里σ = 1.5),这样九个点的像素权值取如下:

    为了计算加权平均,必须得使得9个点的和为1,即将所有点都乘以:2.0889268,得到如下权值矩阵:

    接下来就是算法实现了(这里由于用到3*3矩阵,所以得把图像周围扩展1个像素)。
import cv2
import numpy as np# sigma 带表高斯函数的方差
def MyGaussianBlur(sigma,img):sigma = float(sigma)num1 = np.around( (2 * np.pi * sigma ** 2) ** (-1),decimals=7)num2 = np.around(  (2 * np.pi * sigma ** 2) ** (-1) * np.exp((np.negative(sigma ** 2)) ** (-1) * 0.5),decimals=7)num3 = np.around( (2 * np.pi * sigma ** 2) ** (-1) * np.exp((np.negative(sigma ** 2)) ** (-1)),decimals=7)GaussMatrix = np.array([[num3,num2,num3],[num2,num1,num2],[num3,num2,num3]])k = np.around( ( (num2+num3)*4 + num1)**(-1),decimals=7)   #k值用来保证 九宫格的数值之和为1# GaussMatrix1 = np.array([[0.0453542,0.0566406,0.0453542],#                         [0.0566406,0.0707355,0.0566406],#                         [0.0453542,0.0566406,0.0453542]])# 在图像周围扩充一个像素img = cv2.copyMakeBorder(img,1,1,1,1,borderType=cv2.BORDER_REPLICATE)(b,g,r) = cv2.split(img)print(b.shape)b1 = np.zeros(b.shape,dtype="uint8")g1 = np.zeros(g.shape,dtype="uint8")r1 = np.zeros(r.shape,dtype="uint8")temp = list(range(3))for i in range(1,b.shape[0]-1):for j in range(1,b.shape[1]-1):#利用矩阵二次型求取元素之和temp[0] = int( (np.dot(np.array([1, 1, 1]), k*GaussMatrix * b[i - 1:i + 2, j - 1:j + 2])).dot(np.array([[1], [1], [1]])))temp[1] = int((np.dot(np.array([1, 1, 1]),  k*GaussMatrix * g[i - 1:i + 2, j - 1:j + 2])).dot(np.array([[1], [1], [1]])))temp[2] = int((np.dot(np.array([1, 1, 1]),  k*GaussMatrix * r[i - 1:i + 2, j - 1:j + 2])).dot(np.array([[1], [1], [1]])))# temp[0] = (num2 *k* (b[i - 1, j] + b[i + 1, j] + b[i, j - 1] + b[i, j + 1]) + \#           num3 *k* (b[i - 1, j-1] + b[i + 1, j+1] + b[i+1, j - 1] + b[i-1, j + 1]) + num1*k*b[i, j])## temp[1] = (num2 * k*(g[i - 1, j] + g[i + 1, j] + g[i, j - 1] + g[i, j + 1]) + \#           num3 * k*(g[i - 1, j-1] + g[i + 1, j+1] + g[i+1, j - 1] + g[i-1, j + 1]) + num1*k*g[i, j])## temp[2] = (num2 * k*(r[i - 1, j] + r[i + 1, j] + r[i, j - 1] + r[i, j + 1]) + \#           num3 * k*(r[i - 1, j-1] + r[i + 1, j+1] + r[i + 1, j - 1] + r[i-1, j + 1]) + num1*k*r[i, j])b1[i, j] = temp[0]g1[i, j] = temp[1]r1[i, j] = temp[2]image = cv2.merge([b1,g1,r1])return imageif __name__ == "__main__":img = cv2.imread("boy.jpg",1)img1 = cv2.GaussianBlur(img,(3,3),100)cv2.imshow("1",img)cv2.imshow("2", MyGaussianBlur(100, img))cv2.imshow("3", img1)cv2.waitKey(0)
  1. 效果图(sigma = 100)


    图5 为原图,图6第一张为本文的滤波效果图,第二张为OpenCV库函数的高斯滤波函数处理效果图

高斯模糊原理(Gaussian Blur)相关推荐

  1. UnityShader - 屏幕特效 - 高斯模糊(Gaussian Blur)

    高斯模糊(Gaussian Blur) 高斯模糊Gaussian Blur 概述 原理 游戏中对高斯模糊的优化 shader代码实现 总结 概述 在电子世界中常常会接触到高斯模糊,它常出现在图像处理的 ...

  2. UnityShader实例14:屏幕特效之高斯模糊(Gaussian Blur)

    高斯模糊(Gaussian Blur) 概述 高斯模糊(Gaussian Blur),也叫高斯平滑,在photoshop中也有高斯模糊滤镜,通常用它来减少图像噪声以及降低细节层次.从数学的角度来看,图 ...

  3. 【Unity Shader编程】之十五 屏幕高斯模糊(Gaussian Blur)后期特效的实现

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/51871531 作者:毛星云(浅 ...

  4. 屏幕高斯模糊(Gaussian Blur)后期特效的实现

    文章链接: http://blog.csdn.net/poem_qianmo/article/details/51871531 作者:毛星云(浅墨) 微博:http://weibo.com/u/172 ...

  5. 高斯滤波/高斯模糊(Gaussian blur)和高斯噪声(Gaussian noise)

    在看CV方面的论文的时候很多时候都会出现高斯滤波/高斯模糊(Gaussian blur)和高斯噪声.所以需要把他们弄清楚. 1 首先搞清楚什么是高斯分布 1.1 一维高斯分布 在这些操作前都加了高斯两 ...

  6. android 开源 高斯模糊_Android高斯模糊、高斯平滑(Gaussian Blur)【1】

     Android高斯模糊.高斯平滑(Gaussian Blur)[1] Android高斯模糊.高斯平滑(Gaussian Blur),图形图像处理的一种效果,经过高斯模糊处理后的图片有一种&qu ...

  7. Android高斯模糊、高斯平滑(Gaussian Blur)【2】

    Android高斯模糊.高斯平滑(Gaussian Blur)[2] Android上的高斯模糊效果实现,策略不唯一,在github上有一个开源的实现算法: https://github.com/pa ...

  8. 高斯模糊-Gaussian blur

    高斯模糊 从维基百科,自由的百科全书 一个小的和大的高斯模糊效果 A高斯模糊(也被称为高斯平滑)是模糊图像的结果高斯函数.它是一种广泛使用的图形软件的影响,通常会减少图像噪声和减少细节.这个模糊技术的 ...

  9. 高斯模糊( Gaussian Blur)

    高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在 Adobe Photoshop . GIMP 以及 Paint.NET 等 图像处理软件 中广泛使用的处理效果,通常用它来减少 图像噪 ...

  10. 图像处理(7)--高斯模糊原理

    文章目录结构 1. 高斯模糊介绍 2. 高斯模糊原理 2.1 矩阵范围的像素平均值 2.2 正态分布的权重 3. 计算高斯模糊 图像处理系列笔记: https://blog.csdn.net/qq_3 ...

最新文章

  1. 部分 VII. Array
  2. Windows 中 FS 段寄存器
  3. 腾讯产品经理告诉你微信为什么没有用户等级?
  4. django下载excel,使用django-excel插件
  5. [剑指offer]面试题第[44]题[JAVA][数字序列中某一位的数字][找规律]
  6. 全球搜索引擎盛会在即 呼叫搜索模式呼之欲出
  7. Linux 创建和销毁 urb
  8. K210车牌归属地识别[获取图像+训练+识别效果演示]
  9. 【无人机】【2005.12】低雷诺数无人机的螺旋桨性能测量
  10. 机器学习 —— 神经网络(matlab)
  11. px upx 和rpx
  12. linux svn 查看忽略文件,linux下SVN忽略文件/文件夹的方法
  13. 基于PHP+MySQL的汽车零配件生产企业ERP生产管理子系统
  14. 电机正反转c语言注释,直流电机正反转C程序.doc
  15. c语言中int类型的范围,C语言int的取值范围?
  16. SpringBoot + Spring Cloud +Vue 管理系统前端搭建(二、visual studio code开发前端项目
  17. Android类似IOS的果冻效果
  18. 模拟滑动android无障碍,Android无障碍简单开发-模拟滑动点击输入等
  19. 客户端与服务器相关概念
  20. Jetson Xavier NX (11) -- NX介绍与系统烧录

热门文章

  1. 小样本学习——概念、原理与方法简介(Few-shot learning)
  2. Win7如何安装网络打印机
  3. 简单聊聊网络空间测绘纵横之道
  4. 三分屏课件打包器远程教育版(V1.0)
  5. 魂斗罗java设计,你所不知道的《魂斗罗》 设计企划书告诉你神作如何炼成
  6. APM-EKF3解析(4)--EKF3数据源选择
  7. 手把手教你做一个自定义表格标签
  8. Mob研究院|长租公寓洞察:蛋壳破了,自如安否?
  9. latex tips :文字箭头
  10. Delegate 的应用