怎么开一个做网站的工作室/百度手机助手免费下载
通常,图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果(或者让图像起到平滑效果)。有很多种模糊算法,本文只介绍高斯模糊。
本文介绍"高斯模糊"的算法,你会看到这是一个非常简单易懂的算法。本质上,它是一种数据平滑技术(data smoothing),适用于多个场合,图像处理恰好提供了一个直观的应用实例。
一、高斯模糊的原理
# -*- coding: utf-8 -*-import math
import numpy as np
import Imageclass MyGaussianBlur():#初始化def __init__(self, radius=1, sigema=1.5):self.radius=radiusself.sigema=sigema #高斯的计算公式def calc(self,x,y):res1=1/(2*math.pi*self.sigema*self.sigema)res2=math.exp(-(x*x+y*y)/(2*self.sigema*self.sigema))return res1*res2#得到滤波模版def template(self):sideLength=self.radius*2+1result = np.zeros((sideLength, sideLength))for i in range(sideLength):for j in range(sideLength):result[i,j]=self.calc(i-self.radius, j-self.radius)all=result.sum()return result/all #滤波函数def filter(self, image, template): arr=np.array(image)height=arr.shape[0]width=arr.shape[1]newData=np.zeros((height, width))for i in range(self.radius, height-self.radius):for j in range(self.radius, width-self.radius):t=arr[i-self.radius:i+self.radius+1, j-self.radius:j+self.radius+1]a= np.multiply(t, template)newData[i, j] = a.sum()newImage = Image.fromarray(newData) return newImager=1 #模版半径,自己自由调整
s=2 #sigema数值,自己自由调整
GBlur=MyGaussianBlur(radius=r, sigema=s)#声明高斯模糊类
temp=GBlur.template()#得到滤波模版
im=Image.open('lena1.bmp')#打开图片
image=GBlur.filter(im, temp)#高斯模糊滤波,得到新的图片
image.show()#图片显示