Pandas[加深学习]03傅立叶应用【01】使用傅立叶变换实现登月图片的消噪

使用傅立叶变换实现登月图片的消噪

具体步骤:

第一步:读取图片数据,使用方法把彩色图片变成黑白图片

第二步:使用傅里叶变换,把图片数据变成频率域数据

第三步:把频率域数据中的高频点(噪点) 赋值为0

第四步:进行傅里叶逆变换

第五步:去虚保实

对图片的消噪处理一般针对于黑白图片,所以需要将图片的三维数据转化为二维数据,即将其中的色彩维度去掉。

 

#先导入数据处理的常用模块包

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

%matplotlib inline

# from __future__ import print_function

# from utils import *

import matplotlib.pyplot as plt #plt 用于显示图片

import numpy as np

image_arr = "file:///home/ccoy/Documents/Ipython_Numpy/moonlanding.jpg"

# 第一步:读取图片数据,使用方法把彩色图片变成黑白图片

print("最初的图片(三维)")

moon_initial = plt.imread(image_arr)

#moonlanding.jpg是三维的图片,可以moon.shape查看

display(moon_initial.shape)

plt.imshow(moon_initial)

plt.axis('off')  #axis('off'),不显示标度

plt.show()

#通过自定义rgb2gray函数,从三维数据中提取二维,彩色图片变成黑白

def rgb2gray(rgb):

    return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])

moon = plt.imread(image_arr).astype(np.float32)/255.0

gray = rgb2gray(moon)

print("提取图片的二维数据之后")

#确定图片数据已经被提取为二维

display(gray.shape)

# 也可以用 plt.imshow(gray, cmap = plt.get_cmap('gray'))

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

plt.axis('off')

plt.show()

# 第二步:使用傅里叶变换,把图片数据变成频率域数据

#导入傅立叶变换需要的包(fft2模块,返回维离散傅里叶变换)

from scipy.fftpack import fft2

moon_fft = fft2(gray) #使用fft2模块将上面的图片数据转换为频域数据

# 第三步:把频率域数据中的高频点(噪点) 赋值为0

moon_fft[np.abs(moon_fft) > 8e2] = 0

result = np.where(np.abs(moon_fft) > 8e3, 0, moon_fft)

# 第四步:进行傅里叶逆变换

#导入傅立叶逆变换需要的包

from scipy.fftpack import ifft2

moon_ifft = ifft2(moon_fft) #使用ifft2模块将上面的频域数据进行傅里叶逆变换

# 第五步:去虚保实

moon_cleaned = np.real(moon_ifft) #去虚保实

print("经过傅里叶转换,降噪之后的图片")

#plt.figure(figsize=(10,8))

plt.imshow(moon_cleaned,cmap='Greys_r')

plt.axis('off')

plt.show()

 

输出与显示:

最初的图片(三维)

(339, 548, 4)

 

提取图片的二维数据之后

(339, 548)

经过傅里叶转换,降噪之后的图片

仅供参考学习,严禁转载!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值