首页 > 编程语言 >使用Python常用库处理-可视化凯斯西储大学轴承数据集 完成轴承原始信号图、灰度图和灰度图像加噪声图

使用Python常用库处理-可视化凯斯西储大学轴承数据集 完成轴承原始信号图、灰度图和灰度图像加噪声图

时间:2024-11-26 18:29:48浏览次数:7  
标签:轴承 mat img Python fault 灰度 path data

在这里插入图片描述
凯斯西储大学轴承数据图 包括 原始信号图,灰度图 ,灰度图像加噪声图
处理和可视化凯斯西储大学轴承数据集,包括原始信号图、灰度图和灰度图像加噪声图。我们将使用Python和一些常用的库来完成这些任务。

1. 数据集准备

数据集概述
  • 数据集名称: 凯斯西储大学轴承数据集
  • 数据集来源: 凯斯西储大学
  • 数据集内容: 包括完好试验轴承数据、外圈故障轴承数据、内圈故障轴承数据和滚珠故障轴承数据。
  • 故障类型及程度:
    • 外圈故障轴承数据: 0.021, 0.014, 0.007
    • 内圈故障轴承数据: 0.021, 0.014, 0.007
    • 滚珠故障轴承数据: 0.021, 0.014, 0.007
数据集目录结构

假设数据集已经下载并解压到指定目录:

CWRU-Bearing-Dataset/
├── 0.021_outer_fault/
│   ├── 0.021_outer_fault.mat
│   └── ...
├── 0.014_outer_fault/
│   ├── 0.014_outer_fault.mat
│   └── ...
├── 0.007_outer_fault/
│   ├── 0.007_outer_fault.mat
│   └── ...
├── 0.021_inner_fault/
│   ├── 0.021_inner_fault.mat
│   └── ...
├── 0.014_inner_fault/
│   ├── 0.014_inner_fault.mat
│   └── ...
├── 0.007_inner_fault/
│   ├── 0.007_inner_fault.mat
│   └── ...
├── 0.021_ball_fault/
│   ├── 0.021_ball_fault.mat
│   └── ...
├── 0.014_ball_fault/
│   ├── 0.014_ball_fault.mat
│   └── ...
├── 0.007_ball_fault/
│   ├── 0.007_ball_fault.mat
│   └── ...
└── normal/
    ├── normal.mat
    └── ...

2. 导入库

首先,我们需要导入必要的库。

import numpy as np
import matplotlib.pyplot as plt
import scipy.io as sio
import os
import cv2
from skimage.util import random_noise

3. 读取数据

编写一个函数来读取MAT文件中的数据。

def load_bearing_data(file_path):
    mat = sio.loadmat(file_path)
    data = mat['X097_DE_time']  # 假设数据存储在'X097_DE_time'键下,根据实际情况调整
    return data

4. 绘制原始信号图

编写一个函数来绘制原始信号图。

def plot_signal(data, title):
    plt.figure(figsize=(12, 4))
    plt.plot(data)
    plt.title(title)
    plt.xlabel('Sample Index')
    plt.ylabel('Amplitude')
    plt.show()

5. 将信号转换为灰度图

编写一个函数将信号转换为灰度图。

def signal_to_grayscale(data, img_size=(64, 64)):
    # 将信号归一化到0-255
    data = (data - np.min(data)) / (np.max(data) - np.min(data)) * 255
    # 将信号重塑为灰度图
    img = np.reshape(data, (img_size[0], img_size[1]))
    return img.astype(np.uint8)

6. 添加噪声

编写一个函数向灰度图添加噪声。

def add_noise_to_image(image, mode='gaussian', var=0.01):
    noisy_image = random_noise(image, mode=mode, var=var)
    noisy_image = (255 * noisy_image).astype(np.uint8)
    return noisy_image

7. 主程序

编写主程序来读取数据、绘制原始信号图、生成灰度图和带噪声的灰度图,并保存这些图像。

def main():
    # 数据集路径
    dataset_path = 'CWRU-Bearing-Dataset'
    
    # 故障类型及程度
    fault_types = {
        'outer': [0.021, 0.014, 0.007],
        'inner': [0.021, 0.014, 0.007],
        'ball': [0.021, 0.014, 0.007]
    }
    
    # 图像尺寸
    img_size = (64, 64)
    
    # 创建输出目录
    output_path = 'output_images'
    os.makedirs(output_path, exist_ok=True)
    
    # 处理正常数据
    normal_data = load_bearing_data(os.path.join(dataset_path, 'normal', 'normal.mat'))
    plot_signal(normal_data, 'Normal Bearing Signal')
    normal_img = signal_to_grayscale(normal_data, img_size)
    noisy_normal_img = add_noise_to_image(normal_img)
    
    plt.imsave(os.path.join(output_path, 'normal_grayscale.png'), normal_img, cmap='gray')
    plt.imsave(os.path.join(output_path, 'noisy_normal_grayscale.png'), noisy_normal_img, cmap='gray')
    
    # 处理故障数据
    for fault_type, severities in fault_types.items():
        for severity in severities:
            folder_name = f'{severity}_{fault_type}_fault'
            file_path = os.path.join(dataset_path, folder_name, f'{severity}_{fault_type}_fault.mat')
            data = load_bearing_data(file_path)
            plot_signal(data, f'{fault_type.capitalize()} Fault ({severity}) Signal')
            
            img = signal_to_grayscale(data, img_size)
            noisy_img = add_noise_to_image(img)
            
            plt.imsave(os.path.join(output_path, f'{folder_name}_grayscale.png'), img, cmap='gray')
            plt.imsave(os.path.join(output_path, f'noisy_{folder_name}_grayscale.png'), noisy_img, cmap='gray')

if __name__ == "__main__":
    main()

8. 运行脚本

确保你的数据集路径和文件名正确无误后,运行脚本:

python main.py

9. 结果

运行脚本后,你将在output_images目录中找到以下文件:

  • 原始信号图
  • 灰度图
  • 带噪声的灰度图

10. 注意事项

  1. 数据文件路径:确保数据文件路径正确,特别是MAT文件的键名。
  2. 图像尺寸img_size可以根据实际需求调整。
  3. 噪声类型和强度add_noise_to_image函数中的噪声类型和强度可以根据实际需求调整。

11. 总结

通过以上步骤,你可以处理和可视化凯斯西储大学轴承数据集,生成原始信号图、灰度图和带噪声的灰度图。

标签:轴承,mat,img,Python,fault,灰度,path,data
From: https://blog.csdn.net/2401_88440984/article/details/143959527

相关文章

  • Python分析数据挖掘过程
    数据挖掘作为现代科技的一项核心技术,已经深刻影响了各行各业。其目标是从大量数据中提取有用的信息和知识,为决策支持提供依据。在快速增长的数据量面前,如何高效地处理、分析并挖掘数据,成为许多企业和科研人员必须面对的问题。掌握数据挖掘的概念与过程,不仅是学习编程的进阶......
  • Python分析时间序列特征
    时间序列分析是数据科学和统计学中的重要分支,广泛应用于金融市场预测、气象数据分析、经济趋势分析等领域。时间序列的数据特点独特,不同于普通的数据类型。它是基于时间顺序的一系列数据点的集合,通过对数据点的变化模式进行分析,能帮助人们发现潜在的趋势、周期和规律。在学......
  • Python那些事儿 - 函数的参数详解
    第十回巅峰对决前言这一回我们将对函数的参数进行详细的讲解。函数的参数分为形参和实参,形参又分为:位置参数、默认参数(缺省参数)、位置不定长参数、关键字不定长参数实参又分为:位置参数、关键字参数接下来让我们一起走进函数的参数吧!......
  • Python基础--装饰器
    一、基础知识1.什么是Python装饰器装饰器(Decorator)是Python中的一种设计模式,允许你在不修改原函数代码的情况下,动态地添加或修改函数的行为。简单来说,装饰器本质上是一个函数,它接收一个函数作为参数,并返回一个新的函数。装饰器常用于以下几种场景:添加日志:记录函数调用的时间......
  • python拆分带plist的png图片
    参考:https://www.cnblogs.com/creator-star/p/13926602.html上面的参考的脚本只能拆分2代的.plist中metadata的format的值2现有plist版本为3,所以修改了下, 需要安装pillow库的#需要安装pillow库#pip3installpillowimportplistlibimportosimportsysfromPILimp......
  • 学习Python Day11
    函数1.1定义函数def函数名(参数):    代码1    代码21.2调用函数函数名(参数) 在Python中,函数必须先定义,后调用2.函数参数形参:定义函数时,括号中的参数实参:调用函数时,括号中的参数位置参数:调用函数时按照形参的位置来传递参数关键字参数:用"键......
  • 《python二维码识别系统》毕业设计项目
    大家好,我是陈辰学长,一名在Java圈辛勤劳作的码农。今日要和大家分享的是一款《python二维码识别系统》毕业设计项目。项目源码以及部署相关事宜,请联系陈辰学长,文末会附上联系信息哦。......
  • Python的textwrap库:文本包装的艺术,让你的文本焕然一新,解锁文本排版的无限可能!
    ......
  • python将Xmind用例转为Excel用例
     代码:#coding=utf-8importxlwtfrompast.builtinsimportraw_inputfromxmindparserimportxmind_to_dictdefresolvePath(dict,lists,title):#title去除首尾空格title=title.strip()#如果title是空字符串,则直接获取valueiflen(title)......
  • Python_异步编程-并发编程-协程和future
    操作系统创建线程Unix进程的设计思想,实现了forkexecwaitexit四个精巧的系统调用来支持对进程的灵活管理。父进程进程通过fork系统调用创建自身的副本(子进程);称为“子进程”的副本可调用exec系统调用用另一个程序覆盖其内存空间,这样就可以执行新程序了;......