登月图片消噪

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. 又有两所一流高校加入“不返校”阵营,非毕业年级学生,开学时间待定!
  2. 网吧母盘制作(精华)
  3. 微软必应从.NET Core 2.1获得了性能提升
  4. 快速迭代的测试人员的思考
  5. ACL 2018 论文解读 | 基于深度强化学习的远程监督关系抽取
  6. Unity SRP自定义渲染管线 -- 5.Directional Shadows
  7. 学习环境配置:Manjaro、MSYS2以及常见软件
  8. smart gesture安装失败_WinCC flexible SMART V3 SP2安装步骤以及常见错误解决方法
  9. Java基础入门笔记-算术运算符
  10. 随笔(2)——未来智能穿戴:把计算机“织”进纤维里
  11. 使用Windows Server 2003搭建ASP网站001
  12. 纯净版VS2015安装教程(适合初次安装或者重装系统后)
  13. python中的上一步和下一步快捷键
  14. 正确的握笔姿势,握笔的姿势非常的重要
  15. 计算机中的工作流程,计算机工作流程
  16. 【详谈 Delta Lake】系列专题 之 客户用例( Customer Use Case)
  17. Metron基础概念
  18. BH1750_数字16位串行输出型环境光传感器
  19. Mac ps 2021 3D功能无法使用问题,怎么办?
  20. 纪中游记 - Day 1

热门文章

  1. C# 学习笔记04-15
  2. 解决PySide2的This application failed to start because no Qt platform plugin could be initialized问题
  3. 安装Scylla之后出错ImportError: pycurl: libcurl link-time ssl...
  4. 转:管理者必备技能之全局观:找出复杂环境中的秩序
  5. Read-olny file system-mysql建表不成功
  6. C语言-输出几个数的最大数
  7. 使用各种姿势舒服的部署微前端项目(上:打包与上传)
  8. 设计模式初探之设计模式六大原则(3):依赖倒置原则
  9. MSI (Message Signaled Interrupts)
  10. 如何在 Windows 10 中安装 WSL2 的 Linux 子系统