收到一封email,有個學員求助
去除衣服上紋理的干擾,然后提取衣服上徽章的邊緣的方法。
我想他肯定是個很努力上進的boy,在求助以前也許已經試過各種方法,通過二值化不斷的調試閾值,
尋找各種邊緣檢測的算子不斷的實驗,或者更高階的用FFT試圖去掉背景等等,我想起了我剛入門的時候
那股不達目的絕不罷休的狠勁,在網絡上或者圖書館搜索相關的書籍,
試圖找到答案,
然而受制於自身知識體系的不完善,
並不能得到滿意的答案。所以在忙完手頭的工作,我認真的看了他的需求,並回復了幾種方法供其參考。
來信:
小馬哥,你好!
我是Halcon的初學者,看了你們的免費視頻和實戰講解系列視頻。現在有個問題想向你尋求一下幫助,我想去除衣服上紋理的干擾,
然后提取衣服上圖案的邊緣,請問該如何做?希望你能在百忙之中抽空給予我一些幫助,十分感謝!
回信:
你好:
工作繁忙,今日才得空仔細看你的郵件。
一、不知道你提取一幅徽章的目的,如果是要匹配定位會有更好的方法,這里先不說此。
二、根據你的需求列出幾種方法供你參考
2.1 省力的方法,借助halcon的邊緣提取
edges_color_sub_pix
這種方法需要設置合適的 filtersize 和 low high閾值
下圖是edges_color_sub_pix(Image, Edges, 'canny', 15, 40, 60)的效果

2.2 加大點難度,放入一些自己的思考進去
對於彩色圖像,彩色信息是一個不容忽視的有利條件。
我們將其轉入 HSV空間 取 S通道 ,至於何為HSV ,為何取S通道,可看我的基礎課程。
decompose3(Image, r, g, b)
trans_from_rgb(b, g, r, h, s, v, 'hsv')
S通道是這樣的

做簡單二值化

2.3 相對於2.2思考的更多一些
從rgb通道入手,根據通道運算去除紋理。
放入halcon中處理的效果,代碼為
sub_image(b, g, ImageSub, 1, -40)

二值化后結果

至於用FFT去除紋理的方法太過繁瑣,效果有不會好,不做介紹。
最后希望你自己體會、琢磨,世上無難事只怕有心人
祝:工作順利,身體健康
小馬_xiao
關注微信:halconhub,每日獲取halcon精華文章

附件列表