導讀本文主要介紹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
+關注
關注
34文章
4504瀏覽量
170767 -
缺陷檢測
+關注
關注
2文章
151瀏覽量
12543 -
OpenCV
+關注
關注
32文章
642瀏覽量
42452
原文標題:OpenCV實戰 | 低對比度缺陷檢測應用實例
文章出處:【微信號:gh_f39db674fbfd,微信公眾號:尖刀視】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
高光譜相機在工業檢測中的應用:LED屏檢、PCB板缺陷檢測
安泰電壓放大器在缺陷局部的無損檢測研究中的應用

X-Ray檢測設備能檢測PCBA的哪些缺陷
投影機中對比度與動態對比度的區別及運用

AI模型部署邊緣設備的奇妙之旅:如何在邊緣端部署OpenCV
如何用OpenCV的相機捕捉視頻進行人臉檢測--基于米爾NXP i.MX93開發板
ATA-8202射頻功率放大器在應力導波缺陷檢測研究中的應用

opencv-python和opencv一樣嗎
LED顯示屏的對比度:揭開畫面層次的神秘面紗
外觀缺陷檢測原理

評論