python的N个小功能(高斯模糊原理及实践)
原理:
二维高斯函数
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个小功能(高斯模糊原理及实践)的更多相关文章
- python的N个小功能(找到符合要求的图片,重命名,改格式,缩放,进行随机分配)
########################################################################## 循环读取该目录下所有子目录和子文件 ####### ...
- python的N个小功能(找到要爬取的验证码链接,并大量下载验证码样本)
# -*- coding: utf-8 -*- """ Created on Mon Mar 21 11:04:54 2017 @author: sl "&qu ...
- python的N个小功能(图片预处理:打开图片,滤波器,增强,灰度图转换,去噪,二值化,切割,保存)
############################################################################################# ###### ...
- python的N个小功能(连接数据库并下载相应位置的图片)
#################################################################################################### ...
- python的N个小功能(文本字段对应数值,经纬度计算距离,两个时间点计算时间间隔)
案例1 >>> import pandas as pd >>> df=pd.DataFrame({'A':[1,2,3],'B':[1,2,3],'C':[1,2, ...
- python的N个小功能之正则匹配
1.. 匹配任意除换行符“\n”外的字符:2.*表示匹配前一个字符0次或无限次:3.+或*后跟?表示非贪婪匹配,即尽可能少的匹配,如*?重复任意次,但尽可能少重复,惰性匹配:4. .*? 表示匹配任意 ...
- python的N个小功能(文件内容的匹配替换)
# -*- coding: utf-8 -*- """ Created on Fri Feb 17 20:25:05 2017 @author: who "&q ...
- python的N个小功能(更新文件)
########################################################################## #对于第二份文件:第一份与第二份不相同,以第二份为 ...
- python实现简单的循环购物车小功能
python实现简单的循环购物车小功能 # -*- coding: utf-8 -*- __author__ = 'hujianli' shopping = [ ("iphone6s&quo ...
随机推荐
- 20155233 《Java程序设计》 实验二 Java面向对象程序设计
20155233 <Java程序设计> 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L ...
- 20155307 2016-2017第二次《Java程序设计》课堂实践项目
一.String类的使用 模拟实现Linux下Sort -t -k 2的功能.参考 Sort的实现. 在java.lang包中有String.split()方法,它可以把字符串分割为好几个小的字符串. ...
- spring boot启动报内存溢出的问题
问题: springBoot项目,已经两次了,启动报内存溢出,内存泄露 分析: 内存泄露是因为垃圾回收器想要回收程序不用的对象,但是该对象还有引用存在 解决: 1.第一次是mybatis文件和Java ...
- 1、maven打包 install package deploy区别
maven package:打包到本项目,一般是在项目target目录下.如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,编译a项目时就会报错. maven install:打 ...
- Gulp 有用的地址
gulp似乎成为web开发的必选工具. 推荐一个非常好的入门教程 https://markgoodyear.com/2014/01/getting-started-with-gulp/ 官方插件列表: ...
- Django模板层之templates
一 模版简介 你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now ...
- katalon系列十二:自动化上传文件、下载文件
一.下载文件1.下载文件时,需要先设置好Chrome/Firefox下载路径.不弹出下载框等,大家先学习下在selenium下如何设置:https://www.cnblogs.com/fnng/p/7 ...
- vue route.go 载入刷新
vue route 重新载入刷新: this.$router.go({path : 'path' , query: { param: this.param} })
- OpenLDAP介绍
首先LDAP是一个轻量级的产品(LightWeight),是一个Directory(D),存取的协议(Access Protocol). 我要着重指出,LDAP是一个数据库,但是又不是一个数据库.说他 ...
- 哈夫曼(Huffman)树+哈夫曼编码
前天acm实验课,老师教了几种排序,抓的一套题上有一个哈夫曼树的题,正好之前离散数学也讲过哈夫曼树,这里我就结合课本,整理一篇关于哈夫曼树的博客. 主要摘自https://www.cnblogs.co ...