Python如何生成随机高斯模糊图片详解

 更新时间:2021年05月19日 09:13:38   作者:Cloudox_  
这篇文章主要给大家介绍了关于高斯模糊的原理以及python实现的相关资料,Python使用opencv库生成模糊图像还是很方便的,需要的朋友可以参考下

高斯模糊的介绍与原理

通常,图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果。

"模糊"的算法有很多种,其中有一种叫做"高斯模糊"(Gaussian Blur)。它将正态分布(又名"高斯分布")用于图像处理。

所谓"模糊",可以理解成每一个像素都取周边像素的平均值。

上图中,2是中间点,周边点都是1。

"中间点"取"周围点"的平均值,就会变成1。在数值上,这是一种"平滑化"。在图形上,就相当于产生"模糊"效果,"中间点"失去细节。

显然,计算平均值时,取值范围越大,"模糊效果"越强烈。

上面分别是原图、模糊半径3像素、模糊半径10像素的效果。模糊半径越大,图像就越模糊。从数值角度看,就是数值越平滑。

接下来的问题就是,既然每个点都要取周边像素的平均值,那么应该如何分配权重呢?

如果使用简单平均,显然不是很合理,因为图像都是连续的,越靠近的点关系越密切,越远离的点关系越疏远。因此,加权平均更合理,距离越近的点权重越大,距离越远的点权重越小。

python生成高斯模糊

Python可以使用opencv库很方便地生成模糊图像,如果没有安装opencv的,可以用pip安装:

pip install python-opencv

想了解高斯模糊是什么的话,可以看wiki百科-高斯模糊。对于一般人,只要知道这个操作可以生成模糊图片就好了,一行代码即可搞定:

import cv2
img = cv2.GaussianBlur(ori_img, (9, 9), 0)

这个函数的第一个参数是原图像,第二个参数是高斯矩阵,要注意长和宽都必须为单数,第三个参数是标准差,如果写0,则函数会自行计算。

那怎么控制模糊程度呢?很简单,高斯矩阵的尺寸越大,标准差越大,处理过的图像模糊程度越大。

介绍完了简单的高斯模糊操作,我们加一个随机处理,来随机生成模糊程度不同的几张图像,其实也很简单,加一个随机函数来生成高斯矩阵的尺寸就可以了:

import cv2
import random

imgName = "img.png"
min_size = 11

ori_img = cv2.imread(imgName)

for i in range(3):
    addition = random.choice((0, 2, 4, 6, 8, 10, 12))
    size = min_size + addition
    kernel_size = (size, size)
    img = cv2.GaussianBlur(ori_img, kernel_size, 0)
    new_imgName = "New_" + str(i) + "_" + str(kernel_size[0])  + "_" + imgName
    cv2.imwrite(new_imgName, img)

这里利用了random库,来在一组数字中随机选择一个数,加到最小尺寸上,作为每次生成的模糊图片的高斯矩阵尺寸,这里我的尺寸最小值设为了11,大家可以根据需要自己尝试看效果来设定。

总结

到此这篇关于Python如何生成随机高斯模糊图片的文章就介绍到这了,更多相关python生成高斯模糊内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python+OpenCV目标跟踪实现基本的运动检测

    Python+OpenCV目标跟踪实现基本的运动检测

    这篇文章主要为大家详细介绍了Python+OpenCV目标跟踪实现基本的运动检测,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Python数据分析之PMI数据图形展示

    Python数据分析之PMI数据图形展示

    这篇文章主要介绍了Python数据分析之PMI数据图形展示,文章介绍了简单的python爬虫,并使用numpy进行了简单的数据处理,最终使用 matplotlib 进行图形绘制,实现了直观的方式展示制造业和非制造业指数图形,需要的朋友可以参考一下
    2022-05-05
  • 尝试使用Python多线程抓取代理服务器IP地址的示例

    尝试使用Python多线程抓取代理服务器IP地址的示例

    这篇文章主要介绍了尝试使用Python多线程抓取代理服务器IP地址的示例,尽管有GIL的存在使得Python并不能真正实现多线程并行,需要的朋友可以参考下
    2015-11-11
  • scikit-learn处理缺失数据的方法与实践

    scikit-learn处理缺失数据的方法与实践

    scikit-learn作为Python中广泛使用的机器学习库,提供了多种工具和技术来帮助我们处理缺失数据,本文将详细介绍sklearn处理缺失数据的方法,并提供实际的代码示例,需要的朋友可以参考下
    2024-06-06
  • 利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)

    利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)

    这篇文章主要给大家介绍了关于利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • django请求返回不同的类型图片json,xml,html的实例

    django请求返回不同的类型图片json,xml,html的实例

    今天小编就为大家分享一篇django请求返回不同的类型图片json,xml,html的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python打印获取异常信息的代码详解

    Python打印获取异常信息的代码详解

    在日常的软件开发工作中,异常处理(Exception Handling)是一个至关重要的环节,它不仅影响到程序的稳定性和健壮性,还在提高用户体验、调试问题以及防止安全漏洞方面起到了不可替代的作用,本文给大家介绍了Python打印获取异常信息,需要的朋友可以参考下
    2024-10-10
  • python程序控制NAO机器人行走

    python程序控制NAO机器人行走

    这篇文章主要为大家详细介绍了python程序控制NAO机器人行走,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • 利用python绘制正态分布曲线

    利用python绘制正态分布曲线

    这篇文章主要介绍了如何利用python绘制正态分布曲线,帮助大家更好的利用python进行数据分析,感兴趣的朋友可以了解下
    2021-01-01
  • 自适应线性神经网络Adaline的python实现详解

    自适应线性神经网络Adaline的python实现详解

    这篇文章主要介绍了自适应线性神经网络Adaline的python实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09

最新评论