使用 matplotlib处理彩色图像

目前有多条基于同一时间维度的时序序列经过数据重构后生成了多组二维灰度图,接下来我们的工作就是把这些灰度图合并成一张彩图,JUST DO IT

数据预处理

由于数据采集时难以避免会有数据传输、传感器的噪声,这里我们要对原始数据进行数据滤波尽可能去除数据噪声。这里外面使用巴特沃斯滤波器进行滤波,传感器的采样频率为50hz,信号本身最大的频率为5hz,截止频率为5hz,则wn = 2 * 5 / 50 = 0.2。Wn = 0.2;可以看到滤波后的数据能够一定程度的减少了干扰,还原了数据。

b, a = signal.butter(8, 0.2, 'lowpass')
filtedData = signal.filtfilt(b, a, your_own_data)

请添加图片描述

单个窗口内的时序信号可视化

请添加图片描述

合并灰度图

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
'''
   prepare your own data
'''
#如何让图片的标题能够显示中文字符,只需要三行代码
def set_ch():
    '''
        加载中文显示工具
    '''
    from pylab import mpl
    mpl.rcParams['font.sans-serif']=['Arial Unicode MS']
    mpl.rcParams['axes.unicode_minus']=False
set_ch()
combine = np.array([channel_one,channel_two,channel_three])#将三个二维数组合成一个三维数组
# 讲过上面处理过后,通常得到一副图像的数组表示形式,如:[C, H, W] 分别表示图形的通道数、高、宽
# 但图像一般的存储格式为:[H, W, C] 及高、宽、通道数
# 所以要对数组形式做一定的改变才能正常显示
# 首先转换数据类型:float -> int
combine = np.asarray(combine, dtype=int)
# 然后转换存储格式
combine = combine.transpose((1, 2, 0))#转换3通道图像的数组格式:transpose (C,H,W) -> (H,W,C)
plt.figure("combine_image",figsize=(20,10))
plt.subplot(1,4,1)
plt.imshow(accx_RP,plt.cm.gray)
plt.title('通道一(R)', size=15)
plt.subplot(1,4,2)
plt.imshow(accy_RP,plt.cm.gray)
plt.title('通道二(G)', size=15)
plt.subplot(1,4,3)
plt.imshow(accz_RP,plt.cm.gray)
plt.title('通道三(B)', size=15)
plt.subplot(1,4,4)
plt.imshow(X_rp,plt.cm.gray)
plt.title('RGB彩图', size=15)
plt.show()

请添加图片描述

读取彩图

import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
# 读入一幅彩色图片
img_path = 'data/000.4.png'   # 读入当前文件目录下的 demo.jpg
img = Image.open(img_path)
# 显示图片
plt.figure("Image")     # 图像窗口名称
plt.imshow(img,cmap = plt.cm.jet)
plt.axis('on')  # 关掉坐标轴为 off
plt.title('image')  # 图像题目
plt.show()
img = np.asarray(img, dtype=float)
print(img.shape)

# --------------------------------一般神经网络中对图像的处理(部分)--------------------------------------------------
# 打印图像的PTL存储形式
print(img)
# 将图片转成numpy数组(这是图像处理过程中必然使用的一步),并将原来的int像素值改成float类型(放数组里就是float,存储在图像中就是int整型。)
img = np.asarray(img, dtype=float)
print(img)  # 打印numpy的存储形式
# 转换3通道图像的数组格式 : transpose (H, W, C) -> (C, H, W)
img = img.transpose((2, 0, 1))
print(img)  # 打印转换通道之后的存储形式
# ----------------------------------------------------------------------------------
# 讲过上面处理过后,通常得到一副图像的数组表示形式,如:[3, 100, 100] 分别表示图形的通道数、高、宽
# 但图像一般的存储格式为:[100, 100, 3] 及高、宽、通道数
# 所以要对数组形式做一定的改变才能正常显示
# 首先转换数据类型:float -> int
img = np.asarray(img, dtype=int)
# 然后转换存储格式
img = img.transpose((1, 2, 0))    # transpose (C, H, W) -> (H, W, C)
# 之后便可正常显示图片
plt.imshow(img)
# plt.show()#注意show()函数放到代码段最后,防止下面存储图片时得到空白图

请添加图片描述

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白羊是小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值