應(yīng)該是大半年前了,老師帶領(lǐng)我做的一個(gè)項(xiàng)目主體部分已經(jīng)完成了,但是投入運(yùn)行的時(shí)候有一個(gè)很小的問題,就是需要在圖像中知道一個(gè)圓形區(qū)域的邊緣,由于這個(gè)圓形區(qū)域的半徑是非遞減隨時(shí)間變化的而且圓心是固定的.當(dāng)時(shí)解決的辦法是找到變化的規(guī)律,然后將半徑設(shè)置成隨時(shí)間變化即可.不過此方法治標(biāo)不治本,萬一中途實(shí)際運(yùn)行過程中發(fā)生了暫停類似時(shí)間,而程序還在計(jì)時(shí),會(huì)有不同步的問題發(fā)生.后來希望由程序依托于圖像自動(dòng)找到變化的半徑來解決這個(gè)問題,不過盡管最終識(shí)別的結(jié)果還算理想,但是考慮到系統(tǒng)已經(jīng)投入測(cè)試運(yùn)行了,修改的過程涉及到多次的測(cè)試過程,而且發(fā)現(xiàn)設(shè)置為隨時(shí)間自動(dòng)變化的效果還挺不錯(cuò),就沒把這段代碼給嵌入進(jìn)實(shí)際運(yùn)行的系統(tǒng)中了.

半年過去了,當(dāng)我回顧這段代碼的時(shí)候,發(fā)現(xiàn)了以前寫代碼的一些問題,同時(shí)也希望再了解一下這個(gè)算法,下面就從要解決的問題和項(xiàng)目中的代碼中窺探過去.

要識(shí)別的原圖:

原圖

 黃線為需要識(shí)別出來的圓

 

可能這樣的圖會(huì)比較好識(shí)別,但是如果是下面的這幾副可能就沒那么好識(shí)別了:

 

 

當(dāng)時(shí)使用過大律法閾值判定,OpenCV的霍夫圓變換但效果都不是我想要的.

而且圖中需要識(shí)別出來的也并非為完整的圓.

前面也說過了,這個(gè)是在測(cè)試現(xiàn)場(chǎng)提出來的一個(gè)需求,時(shí)間比較緊迫.可能我也沒花太多時(shí)間去找更多的方法來適應(yīng)這個(gè)問題.

好,下面是具體問題: