ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用 matplotlib处理彩色图像

2021-11-12 15:02:01  阅读:125  来源: 互联网

标签:plt 彩色图像 img 处理 matplotlib 数组 图像 np import


目前有多条基于同一时间维度的时序序列经过数据重构后生成了多组二维灰度图,接下来我们的工作就是把这些灰度图合并成一张彩图,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()函数放到代码段最后,防止下面存储图片时得到空白图

请添加图片描述

标签:plt,彩色图像,img,处理,matplotlib,数组,图像,np,import
来源: https://blog.csdn.net/weixin_44648900/article/details/121287242

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有