原理:

二维高斯函数

1)         为了计算权重矩阵,需要设定σ的值。假定σ=1.5,则模糊半径为1的权重矩阵如下:

2)         这9个点的权重总和等于0.4787147,如果只计算这9个点的加权平均,还必须让它们的权重之和等于1,因此上面9个值还要分别除以0.4787147,得到最终的权重矩阵。

有了权重矩阵,就可以计算高斯模糊的值了。

3)         假设现有9个像素点,灰度值(0-255)如下:

4)         每个点乘以自己的权重值:

5)         得到

将这9个值加起来,就是中心点的高斯模糊的值。

对所有点重复这个过程,就得到了高斯模糊后的图像。如果原图是彩色图片,可以对RGB三个通道分别做高斯模糊。

############################################################################################高斯模糊,按照给定的txt文档每4个数据模糊相应位置#################

###############################################################################

# -*- coding: utf-8 -*-

"""

Created on Tue Mar 07 14:00:00 2017

@author: sl

"""

import os

from PIL import Image, ImageFilter

class MyGaussianBlur(ImageFilter.Filter):

name = "GaussianBlur"

def __init__(self, radius=2, bounds=None):

self.radius = radius

self.bounds = bounds

def filter(self, image):

if self.bounds:

clips = image.crop(self.bounds).gaussian_blur(self.radius) ###图片的最前头拷贝一部分图片(使用crop函数),进行高斯模糊处理

image.paste(clips, self.bounds)  ###粘贴到需要修改的图片上,来完成相应覆盖

return image

else:

return image.gaussian_blur(self.radius)

image = Image.open(r"G:\test.jpg")

i=0

a=0

b=0

c=0

d=0

j=0

num=0

for line in open(r"G:\a.txt"):

j=j+1

num=j

if num!=0:

for line in open(r"G:\a.txt"):

i=i+1

if((i%4)==1):

a=int(line)

elif((i%4)==2):

b=int(line)

elif((i%4)==3):

c=int(line)

else:

d=int(line)

if((i%num)==4):

h=min(20,int((c-a)/4))

w=min(20,int((d-b)/4))

bounds = (a+h,b+w,c-h,d-w)

image = image.filter(MyGaussianBlur(radius=29, bounds=bounds))

elif((i%num)==8):

h=min(5,int((c-a)/4))

w=min(5,int((d-b)/4))

bounds = (a+h,b+w,c-h,d-w)

image = image.filter(MyGaussianBlur(radius=29, bounds=bounds))

else:

h=min(10,int((c-a)/4))

w=min(10,int((d-b)/4))

bounds = (a+h,b+w,c-h,d-w)

image = image.filter(MyGaussianBlur(radius=29, bounds=bounds))

if num==16:

image.save('G:\\aaa.jpg')

else:

image.save('G:\\pp\\aaa.jpg')

python的N个小功能(高斯模糊原理及实践)的更多相关文章

  1. python的N个小功能(找到符合要求的图片,重命名,改格式,缩放,进行随机分配)

    ########################################################################## 循环读取该目录下所有子目录和子文件 ####### ...

  2. python的N个小功能(找到要爬取的验证码链接,并大量下载验证码样本)

    # -*- coding: utf-8 -*- """ Created on Mon Mar 21 11:04:54 2017 @author: sl "&qu ...

  3. python的N个小功能(图片预处理:打开图片,滤波器,增强,灰度图转换,去噪,二值化,切割,保存)

    ############################################################################################# ###### ...

  4. python的N个小功能(连接数据库并下载相应位置的图片)

    #################################################################################################### ...

  5. python的N个小功能(文本字段对应数值,经纬度计算距离,两个时间点计算时间间隔)

    案例1 >>> import pandas as pd >>> df=pd.DataFrame({'A':[1,2,3],'B':[1,2,3],'C':[1,2, ...

  6. python的N个小功能之正则匹配

    1.. 匹配任意除换行符“\n”外的字符:2.*表示匹配前一个字符0次或无限次:3.+或*后跟?表示非贪婪匹配,即尽可能少的匹配,如*?重复任意次,但尽可能少重复,惰性匹配:4. .*? 表示匹配任意 ...

  7. python的N个小功能(文件内容的匹配替换)

    # -*- coding: utf-8 -*- """ Created on Fri Feb 17 20:25:05 2017 @author: who "&q ...

  8. python的N个小功能(更新文件)

    ########################################################################## #对于第二份文件:第一份与第二份不相同,以第二份为 ...

  9. python实现简单的循环购物车小功能

    python实现简单的循环购物车小功能 # -*- coding: utf-8 -*- __author__ = 'hujianli' shopping = [ ("iphone6s&quo ...

随机推荐

  1. 20155323 2016-2017-2 《Java程序设计》第9周学习总结

    20155323 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操 ...

  2. 20155338 2016-2017-2 《JAVA程序设计》课程总结

    ---恢复内容开始--- 20155338 2016-2017-2 <JAVA程序设计>课程总结 每周作业汇总: 预备作业一 预备作业二 预备作业三 <JAVA程序设计>第一周 ...

  3. thinkphp查询:

    $Role=D('role'); //查询数据表 $role_data = $Role->order('role_id')->group('role_name')->select() ...

  4. Linux下MySql变量修改遇到的问题记录

    一.问题记录: 项目上需要使用mysql的过程来自动化构建一批数据,但是调用的时候总是报找不到表或者过程 二.排查过程: (1)首先终端连接mysql后发现,无论表还是过程在数据库中都是存在的,排除了 ...

  5. treegrid -表格树异步加载

    问题: 机构维护时,前端框架用的是easyui,如果同步全加载会出现页面延迟严重,影响用户体验 解决: 机构逐层加载,点击后加载 逐层加载会出现一个问题:子节点只有点击后才能加载子集 所以开始为叶子节 ...

  6. StringUtils工具类用法

    /*1.字符串以prefix开始*/ StringUtils.startsWith("sssdf","");//结果是:true StringUtils.sta ...

  7. L015-linux系统文件权限体系手把手详解小结

    L015-linux系统文件权限体系手把手详解小结 2016-5-24 今天星期二,昨天和今天利用一些闲散时间把第15节课学完了,最近有点懒散哈,还得努力才是.. 这节课内容不多,扩展的也少,主要就是 ...

  8. ubuntu 16.04 安装php 5 6等版本

    //加入ppa $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update //安装5.6 $ sudo apt- //安装7 $ s ...

  9. equals和==方法比较(二)--Long中equals源码分析

    接上篇,分析equals方法在Long包装类中的重写,其他类及我们自定义的类,同样可以根据需要重新equals方法. equals方法定义 equals方法是Object类中的方法,java中所有的对 ...

  10. C#之Ref,Out以及TryParse()的用法

    ref和out用法很简单,我记下来也提醒自己要用更好的方式去写代码,不要让代码过于臃肿,让人看得头痛.直接写 ref:ref关键字就是让参数进行传递,但是需要初始化,而out不需要初始化参数 ref用 ...