本發(fā)明涉及圖像處理領域,具體是一種規(guī)則多邊形的識別方法和裝置。
背景技術:
在工業(yè)場景識別中,經常需要識別場景圖像中的多邊形,例如對圓和多邊形的識別等。目前常用的多邊形識別方法是霍夫變換(Hough Transform)。
霍夫變換是圖像處理中從圖像中識別多邊形的基本方法之一,應用很廣泛,也有很多改進算法。主要用來從圖像中分離出具有某種相同特征的多邊形,如,直線,圓等。最基本的霍夫變換是從黑白圖像中識別直線(線段)。當要識別圖像中的多邊形時,可以先用霍夫線變換識別圖像中的直線然后求直線的交點,最后判斷是否有待識別多邊形存在。但是,霍夫線變換會將復雜自然場景圖像中的眾多邊緣以及非目標直線檢測出來,在眾多直線中分別計算兩條直線交點,然后判斷多條直線是否形成目標多邊形是一個工作量巨大,且很繁瑣的工作。因此,該方法比較適合在純色背景下識別數(shù)量有限的多邊形,并不適用于在復雜的工業(yè)場景中識別多邊形。
由此可見,目前在規(guī)則多邊形識別方面,存在著識別誤差大、通用性差、計算量大、耗時長、效率低的缺陷。
技術實現(xiàn)要素:
本發(fā)明為了克服現(xiàn)有技術的不足,提出一種規(guī)則多邊形的識別方法和裝置,目的旨在解決規(guī)則多邊形識別的識別過程中存在的誤差大、計算量大、耗時長、效率低的問題。
為了解決上述的技術問題,本發(fā)明提出的基本技術方案為:
一種規(guī)則多邊形的識別方法,包括以下步驟:
對原始圖像進行預處理操作;
對預處理操作后的圖像進行邊緣檢測,得到邊緣圖像;
提取所述邊緣圖像的輪廓,得到輪廓圖像;
將所述輪廓圖像中的輪廓擬合為規(guī)則多邊形,并去掉非凸多邊形;
獲取所述規(guī)則多邊形的邊數(shù),與待識別的規(guī)則多邊形對比。
一種規(guī)則多邊形的識別裝置,包括:
圖像預處理模塊,用于對原始圖像進行預處理操作;
邊緣檢測模塊,用于對預處理操作后的圖像進行邊緣檢測,得到邊緣圖像;
輪廓提取模塊,用于對所述邊緣圖像進行輪廓提取,得到輪廓圖像;
多邊形擬合模塊,用于對所述輪廓圖像進行多邊形擬合,并去掉非凸多邊形;以及
特征獲取模塊,用于獲取多邊形擬合模塊得到的凸多邊形的邊數(shù)與待識別的多邊形進行對比以判斷是否是待識別的多邊形。
在上述的規(guī)則多邊形的識別方法和裝置中,通過對原始圖像進行預處理、邊緣檢測、輪廓提取,然后將提取到的輪廓近似為規(guī)則多邊形,將得到的規(guī)則多邊形與待識別的多邊形對比,若邊數(shù)基本相同,則判定其為待識別的多邊形。由此解決了目前在多邊形識別方面,存在著識別誤差大、通用性差、計算量大、耗時長、效率低的問題,取得了識別準確率高、通用性強、效率高的有益效果。
附圖說明
圖1是本發(fā)明實施例提供的規(guī)則多邊形的識別方法的實現(xiàn)流程圖;
圖2是本發(fā)明實施例提供的規(guī)則多邊形的識別裝置的結構圖。
具體實施方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,本發(fā)明提供一種規(guī)則多邊形的識別方法,包括:
步驟S101,將原始圖像進行預處理操作。
本發(fā)明的原始圖像通過數(shù)碼相機、手機或其它掃描裝置拍攝進行采集,由于圖像采集環(huán)境的不同,如光照明暗程度以及設備性能的優(yōu)劣等,原始圖像往往存在有噪聲,對比度不夠等缺點,必須對圖像進行預處理。圖像預處理的主要目的是消除圖像中無關的信息,濾除干擾、噪聲,恢復有用的真實信息,增強有關信息的可檢測性和最大限度地簡化數(shù)據,從而改進特征抽取的可靠性。
在本發(fā)明的一實施例中,預處理操作包括圖像灰度化、圖像增強、圖像濾波,其中,圖像濾波采用的是高斯濾波。
在其他實施例中,也可采用中值濾波、均值濾波等其他方式對圖像進行降噪處理。
步驟S102,對預處理操作后的圖像進行邊緣檢測,得到邊緣圖像。
在本發(fā)明的一實施例中,對預處理操作后的圖像進行邊緣檢測的采用的是canny算子邊緣檢測法。
在另一實施例中,對預處理操作后的圖像進行邊緣檢測的操作采用的是sobel算子邊緣檢測法。
S103,提取所述邊緣圖像的輪廓,得到輪廓圖像。
在本發(fā)明的一實施例中,對邊緣圖像使用opencv的findcontours函數(shù)得到輪廓圖,該函數(shù)的原型如下:
void findContours(InputOutputArray image,OutputArrayOfArrays contours,OutputArray hierar-chy,int mode,int method,Point offset=Point())
S104,將所述輪廓圖像中的輪廓近似為規(guī)則多邊形,并去掉其中的非凸多邊形。
在本發(fā)明的一實施例中,該步驟調用的是opencv中的approxPolyDP函數(shù)對步驟S103中得到的輪廓點集進行多邊形擬合,approxPolyDP函數(shù)的調用形式如下:
void approxPolyDP(InputArray curve,OutputArray approxCurve,double epsilon,bool closed)
應理解,凸多邊形指如果對于一個多邊形的所有邊中,有一條邊向兩方無限延長成為一直線時,其他各邊都在此直線的同旁,那么這個多邊形就叫做凸多邊形。根據多邊形的這個特性就能夠將不是凸多邊形的多邊形排除掉。
在本發(fā)明的另一個實施例中,步驟S104中還可對得到的凸多邊形進行以下優(yōu)化操作:
計算所述規(guī)則多邊形所有邊的邊長,找出最長邊;
若某條邊的邊長小于該最長邊的0.1倍,則判斷該邊為異常短的邊;
將異常短的邊的兩個頂點合并為一個頂點。
通過上述優(yōu)化操作后得到的凸多邊形,其形狀更規(guī)則,提高識別的準確率。
在本發(fā)明的另一個實施例中,步驟S104中還可對得到的凸多邊形進行以下優(yōu)化操作:
將任意兩個規(guī)則多邊形進行比較,若兩個規(guī)則多邊形每對相近的點之間的距離小于兩個規(guī)則多邊形中最短邊長的0.05倍,則將這兩個多邊形近似為一個多邊形。
通過上述優(yōu)化操作后,擬合得到的凸多邊形數(shù)量減少,識別效率大大提高。
S105,獲取所述規(guī)則多邊形的邊數(shù),與待識別的規(guī)則多邊形對比。
在本實施例中,當輸出的規(guī)則多邊形的邊數(shù)與待識別的規(guī)則多邊形的邊數(shù)基本相同時,則可判斷該規(guī)則多邊形即為待識別的規(guī)則多邊形。
在另一實施例中,當待識別的規(guī)則多邊形為正多邊形時或矩形時,則獲取所述規(guī)則多邊形的邊數(shù)進行對比后,還應當獲取所述規(guī)則多邊形的角度與待識別的規(guī)則多邊形的角度對比,若所述凸多邊形的各個頂角可近似為直角,則可判斷其為矩形;若所述凸多邊形的各個頂角近似相等,則可判斷其為正多邊形。
圖2示出了本發(fā)明實施例提供的規(guī)則多邊形的識別裝置的結構示意圖,為了便于說明,僅示出了與本發(fā)明實施例相關的部分。
一種規(guī)則多邊形的識別裝置,包括圖像預處理模塊201、邊緣檢測模塊202、輪廓提取模塊203、多邊形擬合模塊204、特征獲取模塊205,其中:
所述圖像預處理模塊201用于對原始圖像進行預處理操作;所述邊緣檢測模塊202用于對預處理操作后的圖像進行邊緣檢測,得到邊緣圖像;所述輪廓提取模塊203用于對邊緣圖像進行輪廓提取,得到輪廓圖像;所述多邊形擬合模塊204用于對輪廓圖像進行多邊形擬合,并去掉非凸多邊形;所述特征獲取模塊205用于獲取多邊形擬合模塊得到的凸多邊形的邊數(shù)與待識別的多邊形進行對比以判斷是否是待識別的多邊形。
作為本發(fā)明的一個實施例,所述多邊形擬合模塊204還包括優(yōu)化模塊,所述優(yōu)化模塊包括
邊長計算單元,用于獲取所述規(guī)則多邊形的所有邊長并找出最長邊;
判斷單元,用于判斷所述規(guī)則多邊形是否存在異常短邊,即邊長小于最長邊的0.1倍;
頂點合并單元,用于將異常短邊的兩個頂點合并為一個頂點。
作為本發(fā)明的一個實施例,所述優(yōu)化模塊還包括多邊形合并單元,用于將每對相近的點之間的距離小于兩個規(guī)則多邊形中最短邊長的0.05倍的兩個多邊形合并為一個多邊形。
作為本發(fā)明的一個實施例,所述特征獲取模塊205還用于獲取所述凸多邊形的角度,以識別矩形和正多邊形。
根據上述說明書的揭示和教導,本發(fā)明所屬領域的技術人員還可以對上述實施方式進行變更和修改。因此,本發(fā)明并不局限于上面揭示和描述的具體實施方式,對本發(fā)明的一些修改和變更也應當落入本發(fā)明的權利要求的保護范圍內。此外,盡管本說明書中使用了一些特定的術語,但這些術語只是為了方便說明,并不對本發(fā)明構成任何限制。