※ 引述《popen (快樂的工作)》之銘言:
: 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
: 額外使用到的函數庫(
: Library Used): (Ex: OpenGL, ...)
: OpenCV
: 如標題,
: 如果在粗糙的金屬表面或粗糙的背景上面有
: 刮痕或有斑點,要檢測上面的刮痕或斑點,
: 有人做過類似的東西嗎?
: 我是先用gaussian blur降噪,再用二值化分割出缺陷,
: 但發覺還是有些缺陷分不出來,
: 不知有沒有比較強健的方法
光學檢測有很多種,像這種需要檢測細微瑕疵的應用,一般絕不會用 blur,
使用 blur 直接把原本看得到的細節給抹掉了,解析度直接下降一級,
那為什麼不一開始就買低解析度的相機和鏡頭就好了,多浪費一筆錢
想想如果你要檢測的瑕疵比正常背景點點還要細 (卻很長) 怎麼辦
blur 完什麼都看不見了。
因為你的敘述很模糊,也很難給什麼具體的建議,你自己大概也還沒有深思過這些,
總之設法去分辨正常的粗糙背景和不正常的瑕疵就是了。
可能是形狀 (正常背景是顆粒狀,刮痕是長條狀),
可能是光影 (打某角度某形式的光時凹凸不平會看不見,但污漬還是看得見)
也可能是陰影區塊面積,或者顏色,或者密度
光源、相機、鏡頭先弄好,否則軟體這邊也只是 GIGO (garbage-in garbage-out)