给数据集进行像素级的标注并存为 .mat 文件

给数据集进行像素级的标注并存为 .mat 文件

博主此篇博文是关于裂缝检测的数据集标注,原始数据是一篇关于裂缝检测的论文提供的,现在博主需要使用自己的数据来做实验。

处理方法为:ps+matlab

论文数据集如下:1为非裂缝像素,2为裂缝像素

在这里插入图片描述

不过为了方便,博主将非裂缝像素标为 0,裂缝像素标为1;

采集的图片:

在这里插入图片描述

使用Photoshop对图片标注

  1. 使用“快速选择工具” 框出裂缝的区域

ctrl + space 拖拽屏幕可放大,缩小图片

alt + 按住鼠标右键 移动鼠标可 放大,缩小工具的范围

在这里插入图片描述

  1. 对框出的裂缝区域进行处理:

shift 为扩大边界

alt 为缩小边界

在这里插入图片描述

  1. 保存剪切好的图层、删除背景图层并添加纯色图层(黑色)

ctrl + j(保存图层)

在这里插入图片描述

保存图片到本地

使用matlab 处理图片

% 图片所在文件夹路径
imgPath = "./";
% .mat文件保存路径
matSavePath = "./mat2/";
% 获取图片路径
imgDir = dir(strcat(imgPath,"*.jpg"));

for i = 1:length(imgDir)
	%读取图片
    img = imread(imgPath+imgDir(i).name);
    % 获取R通道的数据
    B = img(:,:,1);
    C = img(:,:,1);
    % 将数据转成 csv
    csvwrite(matSavePath+imgDir(i).name + ".csv",C);
    % 取数值在 40< B < 130 的下标
    ind = ( B > 40 & B < 130);
    % 置 1
    B(ind) = 1;
    % 置 0
    B(~ind) = 0;
    % 保存为 .mat 文件
    save(matSavePath+imgDir(i).name+".mat","B","B");
end

程序中为什么取数值在 40 < b < 130之间?

我们将数组存为.csv 文件,用excel 打开,从下图中颜色较深的地方可以看出,这是我们截出的裂缝区域

在这里插入图片描述

如果放大看的话,中心区域的数据大多位于该区间,中心区域即为裂缝像素,因此选择该区间内的数值为裂缝像素

在这里插入图片描述

显示图片

# coding=utf-8
// python 代码
import scipy.io as sio
import matplotlib.pyplot as plt
mat_data = sio.loadmat("I:/1裂缝检测/自己的数据集/code/mat2/001.jpg.mat")
mat_data = mat_data["B"][:]  
# print(mat_data)
plt.imshow(mat_data,cmap=plt.cm.gray,interpolation='nearest')

在这里插入图片描述

从上面的方法来看,我们的图片的精度并不是很高,但也能显示出较好的裂缝纹理,若要更高的精度,可能需要新建纯色图层(黑色),调节透明度,用铅笔工具把裂缝区域描述出来,不过工作量会很大。

额外代码

修改图片尺寸(python)

import cv2
import os

path = os.listdir("./cut/")
print(path)
fileList = [pathName for pathName in path if pathName.endswith(".jpg")]
print(fileList)
for file in fileList:
	print("./cut/"+file)
	im1 = cv2.imread("./cut/"+file)
	print(im1)
	im2 = cv2.resize(im1, (480,320), interpolation=cv2.INTER_CUBIC)
	cv2.imwrite('./resizeImage/'+file, im2)
  • 0
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值