导读本文主要介绍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) # 转回uint8absY = 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)
—版权声明—
仅用于学术分享,版权属于原作者。
若有侵权,请联系删除或修改!
编辑:jq
-
lcd
+关注
关注
36文章
4579浏览量
175873 -
缺陷检测
+关注
关注
3文章
172浏览量
12871 -
OpenCV
+关注
关注
33文章
651浏览量
44440
原文标题:OpenCV实战 | 低对比度缺陷检测应用实例
文章出处:【微信号:gh_f39db674fbfd,微信公众号:尖刀视】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
射频功率放大器在单缺陷导波高精度检测中的关键作用
海伯森产品在屏幕缺陷检测中的应用
普源普源数字万用表屏幕显示对比度调整指南
药品包装压印字符识别检测难度大?PMS光度立体融合技术来破局!
工业质检再升级:复杂网络检测模型破解多场景检测难题
【Milk-V Duo S 开发板免费体验】SDK编译、人脸检测、OpenCV测试
高光谱相机在工业检测中的应用:LED屏检、PCB板缺陷检测
安泰电压放大器在缺陷局部的无损检测研究中的应用
X-Ray检测设备能检测PCBA的哪些缺陷
投影机中对比度与动态对比度的区别及运用

OpenCV在低对比度缺陷检测中的应用实例
评论