绝缘子的故障处理

经过了一段时间的学习,感觉对计算机视觉方面小有所获,现在以绝缘子为媒介,展示我所学的内容。
步入正题,项目的背景是通过红外摄像机拍摄绝缘子图像,然后从图中找出绝缘子并通过其温度变化判断绝缘子是否产生了故障。
最初从导师那拿到的数据是excel表格类型的,该数据是红外摄像机拍摄图像生成的,excel表格中的一部分内容如下所示
这里写图片描述,第一行和第一列分别表示列索引和行索引,接下来的内容表示的是图像的温度。现在需要将excel表格中的数据转入到matlab中,以便进行下一步的分析。这里使用到的是matlab中的函数xlsread,该函数读取excel表格中的数据并将之转换为矩阵(因为excel中的第一行和第一列并不是图像的温度,所以在转换后需要删除第一行和第一列的数据)。需要注意的一点是,imshow函数可以显示两种数据类型的图像,一种是uint8,另外一种是double类型,uint8产生图像的像素是在[0,255]内,而double产生图像的像素是在[0,1]之间的。用xlsread导入数据时,matlab默认的矩阵类型是double的,而此时直接采用imshow函数会产生一片空白,原因是它会把大于1的数字当做是1,小于0的数字当做是0显示出来,而本次绝缘子的温度基本在30度左右(低像素值是黑色的,高像素值是白色的)。解决这个小问题有两种方法,一种是对数据进行归一化处理,将其温度按照某种映射转化到区间[0,1]内(本次采用的是线性归一化),另一种是在imshow调用过程中传递给其两个参数,如imshow(I,[]),此时函数会将大于等于矩阵内的最大像素值的像素设置为白色,矩阵的小于最小像素值的像素置为黑色,然后中间灰度按一定默认值输出(本质上和线性归一化是一样的),这时产生的图像就是正确的图像了。这里取了两幅转换后的图像,大家感觉一下效果。

这里写图片描述
这里写图片描述
可以看出第一幅图像的亮度比较大,而第二幅图像的亮度比较小,相比而言第一幅图像更利于我们找寻绝缘子,还有一个问题是两幅图像都存在的,就是它们的对比度比较小,尤其是第二幅图,通过肉眼去寻找绝缘子都有一定的困难。所以接下来的目标是把图像的亮度和对比度增大,并且在此操作过程中不影响图像本身所应具有的一些特性。

clc;clear all;close all;
V2=xlsread('IR20150721_0002.csv');%格式化读取excel文件
V2(1,:)=[];%第一行和第一列表示行数和列数而不是温度,故进行删除
V2(:,1)=[];
imshow(V2,[])
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值