原理:

二维高斯函数

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')

最新文章

  1. [LeetCode] Integer Break 整数拆分
  2. java重置定时器频率
  3. 20155229-付钰涵-分析自我技能延展到c语言学习状况
  4. Oracle 游标示例,带异常处理
  5. 渐进记法(O,Ω,Θ)
  6. Citrix 服务器虚拟化之三十一 XenApp 6.5负载均衡
  7. MYSQL:基础—存储过程
  8. Oracle与Mysql区别简述
  9. SpringCloud学习之快速搭建分布式配置
  10. matplotlib报错_tkinter.TclError: no display name and no $DISPLAY environment variable
  11. Walle,一个开源的web代码发布管理系统
  12. 【Python】pip国内安装源和yum恢复
  13. mysql 内置功能 存储过程 创建有参存储过程
  14. python __new__ __init__
  15. 快速删除docker中的容器
  16. SQL学习笔记三(补充-3)之MySQL完整性约束
  17. self-taught learning setting && semi-supervised learning
  18. Linux基础服务
  19. HDU - 6315 Naive Operations (线段树+思维) 2018 Multi-University Training Contest 2
  20. 反射getattr,hasattr,setattr,delattr

热门文章

  1. 20155330 实验四 Android程序设计
  2. Popup 解决置顶显示问题
  3. HBase核心功能模块--读书笔记
  4. 【BZOJ4543】Hotel加强版
  5. 运行ntpdate报错:Temporary failure in name resolution
  6. jquery.validate使用 - 4
  7. exe4j 使用记录(一):下载、安装及注册
  8. [转]git学习------>git-rev-parse命令初识
  9. linux下搭建python机器学习环境
  10. 【win10系统问题】远程桌面登录一次后,第二次登录看不到用户名和密码输入框