主页 > 知识库 > Python如何生成随机高斯模糊图片详解

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

热门标签:沈阳外呼系统呼叫系统 武汉外呼系统平台 如何申请400电话费用 池州外呼调研线路 外呼系统哪些好办 富锦商家地图标注 沈阳防封电销卡品牌 沈阳人工外呼系统价格 江西省地图标注

高斯模糊的介绍与原理

通常,图像处理软件会提供"模糊"(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绘制高斯曲线
  • Python OpenCV高斯金字塔与拉普拉斯金字塔的实现
  • python实现高斯投影正反算方式
  • Python 实现顺序高斯消元法示例
  • python 多维高斯分布数据生成方式
  • OpenCV半小时掌握基本操作之高斯双边

标签:铜川 潜江 阿里 常德 通辽 黑龙江 吕梁 株洲

巨人网络通讯声明:本文标题《Python如何生成随机高斯模糊图片详解》,本文关键词  Python,如何,生成,随机,高斯,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Python如何生成随机高斯模糊图片详解》相关的同类信息!
  • 本页收集关于Python如何生成随机高斯模糊图片详解的相关信息资讯供网民参考!
  • 推荐文章