凯斯西储大学轴承数据图 包括 原始信号图,灰度图 ,灰度图像加噪声图
处理和可视化凯斯西储大学轴承数据集,包括原始信号图、灰度图和灰度图像加噪声图。我们将使用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. 注意事项
- 数据文件路径:确保数据文件路径正确,特别是MAT文件的键名。
- 图像尺寸:
img_size
可以根据实际需求调整。 - 噪声类型和强度:
add_noise_to_image
函数中的噪声类型和强度可以根据实际需求调整。
11. 总结
通过以上步骤,你可以处理和可视化凯斯西储大学轴承数据集,生成原始信号图、灰度图和带噪声的灰度图。
标签:轴承,mat,img,Python,fault,灰度,path,data From: https://blog.csdn.net/2401_88441190/article/details/143959551