登月图片消噪

scipy.fftpack模块用来计算快速傅里叶变换

速度比传统傅里叶变换更快,是对之前算法的改进

黑白图片是二维数据,注意使用fftpack的二维转变方法

import numpy as np# 这是scipy中的傅里叶变换
from scipy.fftpack import fft2, ifft2
import matplotlib.pyplot as plt# PIL也是处理图片的
from PIL import Image
# png 最大范围 0 - 1
moon = plt.imread('./moonlanding.png')
moon
# 结果如下:

plt.imshow(moon,cmap='gray')
# 结果如下:

# 进行傅里叶变换
# 傅里叶变化是把时域变为频域
moon_fft2 = fft2(moon)
moon_fft2

# 先求一个绝对值, 为什么, 因为有白圆环和黑圆环, 谁正谁负并不清楚
# 1e3 代表1000
cond = np.abs(moon_fft2) > 1e3
moon_fft2[cond] = 0
# 再把频域转变为时域
# ifft2
moon_ifft2 = ifft2(moon_fft2)
moon_ifft2

# 去除复数
res = np.real(moon_ifft2)
# 显示图片
plt.figure(figsize=(12,9))
plt.imshow(res,cmap='gray')

scipy

scipy是基于numpy的

import numpy as npimport matplotlib.pyplot as plt# MCM

数值积分,求圆周率

# 祖率: 3.1415926 - 927
# 计算机通过积分的方式来画圆
# x^2 + y^2  = r^2# f(x) = (r^2 - x^2)^0.5# 假设圆的半径我们知道, r = 1
X = np.linspace(-1,1,1000)f = (1 - X**2)**0.5# 计算三角形, 以0点计算, 计算对边
# 我们画圆形需要x和y
plt.figure(figsize=(4,4))
# 有了三角形, 圆形的斜边顶点就找到了, 把这2000个顶点给连接起来就使用一个圆形
plt.plot(X, f)
plt.plot(X, -f)


使用scipy.integrate进行积分,调用quad()方法,求圆周率

# integrate 在数学上用作积分运算
import scipy.integrate as integrate
import scipyf = lambda x : (1-x**2)**0.5
# quad中第一个参数是一个func, y轴的解,a和b代表x轴的范围, 分别填入-1,1
pi, error = integrate.quad(f,-1,1)# (1.5707963267948986, 1.0002356720661965e-09)
#  第一个数是圆周率, 第二个数是误差
print('通过积分求解的圆周率:%s, 误差为:%s' % (pi*2, error*2))
# 结果是:
# 通过积分求解的圆周率:3.141592653589797, 误差为:2.000471344132393e-09

scripy中的文件输入和输出

# io
import scipy.io as io
from scipy.fftpack import fft2, ifft2
moon = plt.imread('./moonlanding.png')
moon_fft2 = fft2(moon)
cond = np.abs(moon_fft2) > 1e3
moon_fft2[cond] = 0
moon_ifft2 = ifft2(moon_fft2)
res = np.real(moon_ifft2)
plt.figure(figsize=(12,9))
plt.imshow(res,cmap='gray')

#.mat 这是一种数据格式
# math matrix
# matlib 通用字典
# 文件存储都是以二进制
io.savemat('./moon_clear.mat',{'moon':res})
# load
io.loadmat('./moon_clear.mat')['moon']
# 结果是:
array([[-0.2826645 ,  0.08010893, -0.21303105, ..., -0.03895291,-0.18217105, -0.17954478],[-0.00702763,  0.06715892, -0.09148968, ..., -0.1856927 ,-0.19348538, -0.15636131],[-0.03724453, -0.12469123, -0.10263439, ..., -0.18584874,-0.19098356,  0.08034539],...,[ 0.07167082, -0.04644684, -0.07860907, ...,  0.09754767,0.02351329,  0.18534262],[ 0.00943622, -0.06645724, -0.02696014, ...,  0.05524265,-0.00268553,  0.19484597],[-0.0551862 ,  0.03641299, -0.06190041, ...,  0.03356535,0.02719305, -0.02497441]], dtype=float32)

读写图片使用scipy中misc.imread()/imsave()

# misc 表示是一个库非常的杂乱无章
import scipy.misc as misc
# 利用这个库读出来以后做了一个变换把PNG转变昵称了JPG
moon = misc.imread('./moonlanding.png')
plt.figure(figsize=(12,9))
plt.imshow(moon, cmap='gray')
# 结果如下:


imrotate、imresize、imfilter 旋转, 改变大小, 滤波

# 旋转
plt.imshow(misc.imrotate(moon, 60),cmap='gray')
# 结果是:

# imresize     int 0.5 = 50%缩小
plt.imshow(misc.imresize(moon,0.5),cmap='gray')

# tuple(100, 200) 是压缩成Y为100, X为200的图片
plt.imshow(misc.imresize(moon,(100, 200)),cmap='gray')

imfilter图片过滤

The filter that has to be applied , Legal values are:
‘blur’, ‘contour’, ‘detail’, ‘edge_enhance’, ‘edge_enhance_more’,
‘emboss’, ‘find_edges’, ‘smooth’, ‘smooth_more’, ‘sharpen’.

必须应用的筛选器, 法律价值是:
‘模糊’, ‘轮廓’, ‘细节’, ‘EdgEl增强’, ‘EdgEI增强’
‘浮雕’,’发现边缘’,’平滑’,’平滑多’, ‘锐化’

# 这是一张模糊的图片
cat = plt.imread('./cat.jpg')
plt.imshow(misc.imfilter(cat, 'blur'))

# 轮廓图
plt.imshow(misc.imfilter(cat, 'contour'))

# sharpen
plt.figure(figsize=(12,9))
plt.imshow(misc.imfilter(cat, 'sharpen'))

图片处理

使用scipy.misc.face(gray=True)获取图片,

使用ndimage移动坐标、旋转图片、切割图片、缩放图片导包,读取图片显示图片

import scipy.ndimage as ndimage
# 在ndimage中, scipy给我们提供了一张图片, misc.face()
face = misc.face(gray = True)
plt.imshow(face, cmap='gray')

shift移动坐标

# input 代表将要被处理的图片
# 第二个参数代表你要移动多少
plt.imshow(ndimage.shift(face, [-100, 200], mode=), cmap='gray')

# mode : 'constant', 'nearest', 'reflect', 'mirror' or 'wrap
plt.imshow(ndimage.shift(face, [-100, 200], mode='mirror'), cmap='gray')

zoom#缩放图片

# resize imresize
plt.imshow(ndimage.zoom(face, 0.5), cmap='gray')

# sequence 序列中的值只能是浮点型, 分别代表对y轴和x轴进行缩放
plt.imshow(ndimage.zoom(face, [0.3,0.8]), cmap='gray')

切割图片

plt.imshow(face, cmap='gray')

plt.imshow(face[:500,400:950],cmap='gray')

如果是彩色的图片怎么办了

face1 = misc.face()
face1.shape
plt.imshow(face1)

#plt.imshow(ndimage.shift(face1, [100, 200]), 彩色图片是三维的, 少写一维会报错
plt.imshow(ndimage.shift(face1, [100, 200, -2]))
# rgb -> rrg
#(100,200,300) -> (100,100,200) -> (100,100,100) ->(300,100,100) 

plt.imshow(ndimage.shift(face1, [100, 200, 1], mode='mirror'))

# 注意的是颜色的滚动
plt.imshow(ndimage.shift(face1, [100, 200, 4], mode='mirror'))

# zoom 进行压缩
plt.imshow(ndimage.zoom(face1,[0.5,0.5, 1]), cmap='gray')

图片进行过滤

添加噪声,对噪声图片使用ndimage中的高斯滤波、中值滤波、signal中维纳滤波进行处理,使图片变清楚

使用了misc.face()的灰色照片添加噪声

face_blur = face + np.random.randn(face_blur.shape[0], face_blur.shape[1])*face.std()
plt.imshow(face_blur, cmap='gray')


高斯滤波sigma:高斯和的标准偏差

# sigma频率
# 频率怎么取值
# plt.subplot(1, 3, 1) subplot中的值代表 1行 显示3张图片  当前是编号1
plt.figure(figsize=(12,9))axes = plt.subplot(1, 3, 1)
axes.imshow(ndimage.gaussian_filter(face_blur, sigma=2), cmap='gray')axes1 = plt.subplot(132)
axes1.imshow(ndimage.gaussian_filter(face_blur, sigma=0), cmap='gray')axes2 = plt.subplot(133)
axes2.imshow(ndimage.gaussian_filter(face, sigma=0), cmap='gray')# 可以用来还原照片


将登月图片进行高斯过滤

moon = plt.imread('./moonlanding.png')
plt.imshow(ndimage.gaussian_filter(moon,sigma=2), cmap='gray')


中值滤波参数size:给出在每个元素上从输入数组中取出的形状位置,定义过滤器功能的输入

plt.figure(figsize=(12,9))axes = plt.subplot(1, 3, 1)
axes.imshow(ndimage.median_filter(face_blur, size=6), cmap='gray')axes1 = plt.subplot(132)
axes1.imshow(face_blur, cmap='gray')axes2 = plt.subplot(133)
axes2.imshow(face, cmap='gray')


signal维纳滤波mysize:滤镜尺寸的标量

import scipy.signal as signalplt.figure(figsize=(12,9))axes = plt.subplot(1, 3, 1)
axes.imshow(signal.wiener(face_blur, mysize=10), cmap='gray')axes1 = plt.subplot(132)
axes1.imshow(face_blur, cmap='gray')axes2 = plt.subplot(133)
axes2.imshow(face, cmap='gray')

数据分析与AI(七)傅里叶对登月图片降噪/scipy库对图片进行处理/相关推荐

  1. 登月图片消噪及圆周率的求取(Python数据分析)

    登月图片消噪 scipy.fftpack模块用来计算快速傅里叶变换 速度比传统傅里叶变换更快,是对之前算法的改进 图片是二维数据,注意使用fftpack的二维转变方法 # 所有的函数都可以使用正弦波表 ...

  2. 数据分析之pandas绘图之登月图片降噪处理

    参考 讲师文档参考 傅里叶变换视频

  3. 聚观早报 | 英伟达推「AI」超算;中国2030年前载人登月

    今日要闻:英伟达推「AI」超算:中国2030年前载人登月:AI大热,游戏股全线大涨:ofo创始人二次创业项目陷入困境:微信视频号原创标记已对外显示 英伟达推「AI」超算 5 月 29 日,NVIDIA ...

  4. 人类登月的幕后英雄,又推出了太空中第一位AI暖男

    人类登月计划中的幕后英雄 也许有敏感的读者朋友已经察觉到,自从迈入2019年以来,有关登月和太空的话题明显增多. 原因其实很简单:距离1969年7月20日人类首次踏足月球,2019年正好是人类登月50 ...

  5. 50 年人类登月史:那些不为人知的故事

    来源: CSDN 2019年7月20日是纪念人类登月五十周年的好日子.人类于1969年首次正式登上月球,历史将永远铭记两位宇航员的名字:尼尔·阿姆斯特朗与巴兹·奥尔德林. 然后,这背后还有很多不为人知 ...

  6. 新鲜出炉 | 临床基因组学数据分析实战将于2021年11月12-14开课!!!

    福利公告:为了响应学员的学习需求,经过易生信培训团队的讨论筹备,现安排<临床基因组学数据分析实战>于2021年11月12-14 线上/线下课程 (线上课是通过腾讯会议实时直播线下课,实时互 ...

  7. 美国科研欲重回阿波罗登月水平,基础科学投入计划翻倍

    视学算法报道 转载自:机器之心 编辑:泽南.小舟 数倍增加美国科学研究经费的「无尽边界法案」即将成真了. 尽管投入数字缩水,但新版的法案仍然让美国的基础科研经费有了可怕的增长. 在与中国的全面竞争中, ...

  8. 近4万Star,登月源码登顶GitHub,这位女程序员“拯救”了阿波罗

    作者 | 伍杏玲 转载自CSDN(ID:CSDNnews) 1969 年 7 月 20 日,"阿波罗 11 号"飞船登月,宇航员尼尔·阿姆斯特朗(Neil Armstrong)成功 ...

  9. 7年秘密研发,Meta拿下元宇宙「登月项目」!气动手套让指尖有真实触感

    视学算法报道   编辑:好困 小咸鱼 [新智元导读]近日,Meta首次展示了秘密研发了七年的项目:「气动触觉手套」,颇具科幻魅力.这种触觉手套可以通过气囊让你体验到抓取虚拟物体时的真实触感.对于Met ...

最新文章

  1. copy的key认证
  2. 【Linux 操作系统】Ubuntu 配置 ftp freemind adb
  3. 【知识发现】隐语义模型LFM算法python实现(二)
  4. 珀尔:数据非常愚蠢,领会因果关系才是理解世界的关键
  5. 基于JAVA+Servlet+JSP+MYSQL的个人博客系统
  6. python 3 json 序列化
  7. oralce数据库创建同义词
  8. HDFS分布式文件系统知识总结
  9. C#.net的常用函数列表
  10. 韩顺平 2021零基础学Java 学习笔记(1)(自用)
  11. 《凤凰项目 一个IT运维的传奇故事》读后感
  12. DHCP保留地址与超级作用域centos7
  13. 软考系统架构设计师学习笔记
  14. es python search 返回_Elasticsearch - python操作es,以及curl命令查询es的总结
  15. 网络接口 FE GE 10GE SFP
  16. 基因表达式编程(GEP)自学 第【3】天 Python 实现
  17. python神经网络编程pdf百度云下载-Python神经网络编程高清版.pdf
  18. 总在说双亲委派,但双亲委派是什么,双亲委派和类加载的关系,简单讲解
  19. 网络冗余链路管理的实现
  20. stem教育的什么意思

热门文章

  1. 解决网盘下载速度慢的问题
  2. 解密中概股的“杀手”:做空者
  3. 新冠病毒研究进展:维生素D或许能挽救新冠患者
  4. 【操作系统】BIOS篇
  5. 诗歌一 我自倾杯,君且随意
  6. linux iptables实现单机多ip出口ip负载均衡(宽带叠加)
  7. 人脸识别撞脸名画_人脸识别_“名画匹配”刷爆屏 想知道你和哪副名画撞脸了吗...
  8. 电网数字化转型经验分享
  9. 正大美欧4的主账户关注什么数据?
  10. framemaker 换行