OpenCV与AI深度学习 | 低对比度缺陷检测应用实例--LCD屏幕脏污检测

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。

原文链接:OpenCV实战 | 低对比度缺陷检测应用实例--LCD屏幕脏污检测

本文主要介绍OpenCV在低对比度缺陷检测中的应用实例。

实例一(LCD屏幕脏污检测)

参考实例来源:

https://stackoverflow.com/questions/27281884/low-contrast-image-segmentation

测试图像:

标注脏污区域:

分析与说明:上图中的脏污图像因为对比度较低,所以无法通过常用的阈值方法处理提取,有时人眼观察也较费劲。常用的方法有梯度提取或频域提取。

链接主题中提到了Kmeans聚类分割后提取:

二分类:

三分类:

乍一看效果还不错,但问题是我到底应该设置几个类别?第一张图我如何确定哪个区域正好是我的缺陷部分?本文采用了梯度方法来检测。

实现步骤与演示

实现步骤:

① 图像滤波--滤除杂讯;

② Sobel提取边缘;

③ 形态学处理剔除杂讯;

④ 阈值提取--分割脏污区域;

⑤ 轮廓提取与标注。

图像一

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray,(15,15),0)

x = cv2.Sobel(blur,cv2.CV_16S,1,0,ksize=7)
y = cv2.Sobel(blur,cv2.CV_16S,0,1,ksize=7)
absX = cv2.convertScaleAbs(x) # 转回uint8
absY = cv2.convertScaleAbs(y)
edged = cv2.addWeighted(absX,1,absY,1,0)
cv2.imshow('Sobel', edged)

k1=np.ones((11,11), np.uint8)
thres = cv2.morphologyEx(thres, cv2.MORPH_ERODE, k1)#膨胀操作
cv2.imshow('MORPH_ERODE',thres) #结果显示

 

contours,hierarchy = cv2.findContours(thres, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
for cnt in contours:
  (x, y, w, h) = cv2.boundingRect(cnt)
  if w > 2 and h > 2:
    cv2.drawContours(img,cnt,-1,(0,0,255),1)

图像二

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值