用python实现matlib的 生成高斯模糊核
最近在做一个关于模糊图片恢复的数学建模,遇到了一个大问题,特记录一下。
在matlib中有 PSF = fspecial('motion', LEN, THETA); 来生成模糊核函数,但在python没有对应的,用下面这个代替:
#! /usr/bin/env python
import sys
from matplotlib.pyplot import *
from numpy import * def Usage():
print ('='*80)
# print ('Usage: ./%s [photo_file] [kernel_size]' % sys.argv[0])
# print ('Eg: ./%s myphoto.png 3' % sys.argv[0])
# print ('='*80) def fspecial(func_name,kernel_size=3,sigma=1):
if func_name=='gaussian':
m=n=(kernel_size-1.)/2.
y,x=ogrid[-m:m+1,-n:n+1]
h=exp( -(x*x + y*y) / (2.*sigma*sigma) )
h[ h < finfo(h.dtype).eps*h.max() ] = 0
sumh=h.sum()
if sumh!=0:
h/=sumh
return h def RGB(rgb_mat,g_filter,flag=255): def foo(A,B):
t=sum(A*B)
if t>flag: return flag
return t return [foo(rgb_mat[:,:,i],g_filter) for i in range(3)] # Return a Nx3 matrix of pixels
def loadImageData(self,imagefile):
# If you don't have matplotlib but have PIL,
# you can use this to load image data.
from PIL import Image
im=Image.open(imagefile)
m,n=im.size
data=im.getdata()
imgMat=zeros((m*n,3)) for i in xrange(m*n):
imgMat[i]=data[i] return imgMat def GaussianFilter(image_file,k=3):
# Read image data
im=imread(image_file)
m,n,a=im.shape
g_im=im.copy()
print ('Load Image Data Successful!') # Initial
if im.max()>1:
flag=255
else:
flag=1
sigma=1
w=k//2
g_filter=fspecial('gaussian',k,sigma)
print ('Gaussian Kernel is setup.') print ('The Gaussian Filter is processing...')
for i in range(w,m-w):
for j in range(w,n-w):
t=RGB(im[i-w:i+w+1,j-w:j+w+1],g_filter,flag)
g_im[i,j]=t print ('Finished.')
print ('Show the photo.')
subplot(121)
title('Original')
imshow(im)
subplot(122)
title('Filtered')
imshow(g_im)
cv2.imwrite('./test.png',g_im)
show() if __name__=='__main__':
argc=len(sys.argv)
if argc<3:
Usage()
else:
image_file=src
# Kernel size
# k=int(sys.argv[2])
k = 3 GaussianFilter(image_file,k)
参考:
用python实现matlib的 生成高斯模糊核的更多相关文章
- python 从数据库表生成model
python 从数据库表生成model 找了很久才找到这个,我是新手... 现在已有建好的数据库,需要基于原有数据做数据分析的web应用,我选择python+Tornado ,由于不想写SQL语句,就 ...
- 如何用python抓取js生成的数据 - SegmentFault
如何用python抓取js生成的数据 - SegmentFault 如何用python抓取js生成的数据 1赞 踩 收藏 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓 ...
- [python]使用django快速生成自己的博客小站,含详细部署方法
前言 人生苦短,我用python 这是之前经常听到的一句笑谈.因为新公司很多业务是用的python语言,所以这几天也一直在学习python的一些东西. 作为一个之前一直java后端的开发人员,对比ja ...
- 使用Python的库qrcode生成二维码
现在有很多二维码的生成工具,在线的,或者安装的软件,都可以进行生成二维码.今天我用Python的qrcode库生成二维码.需要预先安装 Image 库 安装 用pip安装 # pip install ...
- System Generator 生成IP核在Vivado中进行调用
System Generator 生成IP核在Vivado中进行调用 1.首先在Simulink中搭建硬件模型 2.查看仿真结果 3.资源分析与时序分析 4.启动vivado,关联生成的IP核 5.调 ...
- [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:
[Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子: mydf001=sqlContext.read.format("jdbc").o ...
- python小工具myqr生成动态二维码
python小工具myqr生成动态二维码 (一)安装 (二)使用 (一)安装 命令: pip install myqr 安装完成后,就可以在命令行中输入 myqr 查看下使用帮助: myqr --he ...
- 查找python项目依赖并生成requirements.txt——pipreqs 真是很好用啊
查找python项目依赖并生成requirements.txt 转自:http://blog.csdn.net/orangleliu/article/details/60958525 一起开发项目的时 ...
- Python中random模块生成随机数详解
Python中random模块生成随机数详解 本文给大家汇总了一下在Python中random模块中最常用的生成随机数的方法,有需要的小伙伴可以参考下 Python中的random模块用于生成随机数. ...
随机推荐
- Kafka 判断一个节点是否还活着有那两个条件?
(1)节点必须可以维护和 ZooKeeper 的连接,Zookeeper 通过心跳机制检查每 个节点的连接 (2)如果节点是个 follower,他必须能及时的同步 leader 的写操作,延时不能太 ...
- 为什么要使用 rabbitmq?
1.在分布式系统下具备异步,削峰,负载均衡等一系列高级功能; 2.拥有持久化的机制,进程消息,队列中的信息也可以保存下来. 3.实现消费者和生产者之间的解耦. 4.对于高并发场景下,利用消息队列可以使 ...
- SpringBoot使用JdbcTemplate批量保存
@Autowired DataSourceProperties dataSourceProperties; @Autowired ApplicationContext applicationConte ...
- @Autowired 注解有什么用?
@Autowired 可以更准确地控制应该在何处以及如何进行自动装配.此注解用于在 setter 方法,构造函数,具有任意名称或多个参数的属性或方法上自动装配bean.默认情况下,它是类型驱动的注入. ...
- We're sorry but demo3 doesn't work properly without JavaScript enabled. Please enable it to continue.
今天遇到一个问题为 vue请求得到的响应为 We're sorry but demo3 doesn't work properly without JavaScript enabled. Please ...
- 什么是 spring?
Spring 是个 java 企业级应用的开源开发框架.Spring 主要用来开发 Java 应用, 但是有些扩展是针对构建 J2EE 平台的 web 应用.Spring 框架目标是简化 Java 企 ...
- 项目启动的缓慢之“Build completed with 1 error and 18 warnings in 3 m 51 s”
一.问题 idea编译项目writing classes很慢,等很久之后项目也启动不起来,如下图 二.解决方案 1.File->Invalidate Caches/Restart...清下缓存 ...
- 微信小程序黑客马拉松即将开始,来做最酷的 Mini Program Creators!
微信小程序黑客马拉松正式启动 近日,小程序斩获一项世界级殊荣--作为一项全新的技术和应用创新,小程序首次获选世界互联网领先科技成果.目前小程序应用数量已超过 100 万,覆盖了 200 多个细分行业, ...
- Canvas 制作海报
HTML <template> <view class="content"> <view class="flex_row_c_c mod ...
- 【小程序开发】文本text-overflow属性的使用
text-overflow原本是CSS3的一个属性,在微信小程序中也支持. text-overflow文本溢出显示省略号~ 注:使用text-overflow时,需要设置固定的宽度才起作用,所以该元素 ...