真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

OpenCV中幾何形狀識別與測量-創(chuàng)新互聯(lián)

最近使用OpenCV3.3.0構(gòu)建了一個識別圖形的C/C++項目,可以識別的圖形如下:三角形、正方形、長方形、菱形、圓形、五邊形、六邊形、五角星以及由不同顏色的兩個三角形構(gòu)成的特殊矩形。

創(chuàng)新互聯(lián)專注于中小企業(yè)網(wǎng)站建設(shè)、策劃制作、運行維護,主要提供一站式的企業(yè)網(wǎng)站建設(shè)服務。建站類型:公司網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站制作獨立站等。創(chuàng)新互聯(lián)不是單一的建網(wǎng)站,而是結(jié)合企業(yè)的建站目標去規(guī)劃網(wǎng)站怎么建,如何利于運營,尋求適合的建站方案。其次,網(wǎng)站后臺操作的便捷性也是網(wǎng)站制作過程中的重點,創(chuàng)新互聯(lián)的網(wǎng)站后臺簡單便捷,真正實現(xiàn)了零基礎(chǔ)操作。

OpenCV中幾何形狀識別與測量

中值濾波

中值濾波法是一種非線性平滑技術(shù),它將每一像素點的灰度值設(shè)置為該點某鄰域窗口內(nèi)的所有像素點灰度值的中值.

中值濾波是基于排序統(tǒng)計理論的一種能有效抑制噪聲的非線性信號處理技術(shù),中值濾波的基本原理是把數(shù)字圖像或數(shù)字序列中一點的值用該點的一個鄰域中各點值的中值代替,讓周圍的像素值接近的真實值,從而消除孤立的噪聲點。方法是用某種結(jié)構(gòu)的二維滑動模板,將板內(nèi)像素按照像素值的大小進行排序,生成單調(diào)上升(或下降)的為二維數(shù)據(jù)序列。二維中值濾波輸出為g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分別為原始圖像和處理后圖像。W為二維模板,通常為3*3,5*5區(qū)域,也可以是不同的的形狀,如線狀,圓形,十字形,圓環(huán)形等。

中值濾波對脈沖噪聲有良好的濾除作用,特別是在濾除噪聲的同時,能夠保護信號的邊緣,使之不被模糊。這些優(yōu)良特性是線性濾波方法所不具有的。此外,中值濾波的算法比較簡單,也易于用硬件實現(xiàn)。所以,中值濾波方法一經(jīng)提出后,便在數(shù)字信號處理領(lǐng)得到重要的應用。

Canny邊緣檢測

Canny邊緣檢測于1986年由JOHN CANNY首次在論文《A Computational Approach to Edge Detection》中提出,就此拉開了Canny邊緣檢測算法的序幕。Canny邊緣檢測是從不同視覺對象中提取有用的結(jié)構(gòu)信息并大大減少要處理的數(shù)據(jù)量的一種技術(shù),目前已廣泛應用于各種計算機視覺系統(tǒng)。

Canny邊緣檢測算法可以分為以下五個步驟:
(一)使用高斯濾波器,以平滑圖像,濾除噪聲
為了盡可能減少噪聲對邊緣檢測結(jié)果的影響,所以必須濾除噪聲以防止由噪聲引起的錯誤檢測。為了平滑圖像,使用高斯濾波器與圖像進行卷積,該步驟將平滑圖像,以減少邊緣檢測器上明顯的噪聲影響。大小為(2k+1)x(2k+1)的高斯濾波器核的生成方程式由下式給出:
OpenCV中幾何形狀識別與測量
下面是一個sigma = 1.4,尺寸為3*3的高斯卷積核的例子(需要注意歸一化):
OpenCV中幾何形狀識別與測量
若圖像中一個3*3的窗口為A,要濾波的像素點為e,則經(jīng)過高斯濾波之后,像素點e的亮度值為:
OpenCV中幾何形狀識別與測量
其中*為卷積符號,sum表示矩陣中所有元素相加求和。重要的是需要理解,高斯卷積核大小的選擇將影響Canny檢測器的性能。尺寸越大,檢測器對噪聲的敏感度越低,但是邊緣檢測的定位誤差也將略有增加。一般5*5是一個比較不錯的trade off。

(二)計算圖像中每個像素點的梯度強度和方向
圖像中的邊緣可以指向各個方向,因此Canny算法使用四個算子來檢測圖像中的水平、垂直和對角邊緣。邊緣檢測的算子(如Roberts,Prewitt,Sobel等)返回水平Gx和垂直Gy方向的一階導數(shù)值,由此便可以確定像素點的梯度G和方向theta 。
OpenCV中幾何形狀識別與測量
其中G為梯度強度, theta表示梯度方向,arctan為反正切函數(shù)。下面以Sobel算子為例講述如何計算梯度強度和方向。x和y方向的Sobel算子分別為:
OpenCV中幾何形狀識別與測量
其中Sx表示x方向的Sobel算子,用于檢測y方向的邊緣; Sy表示y方向的Sobel算子,用于檢測x方向的邊緣(邊緣方向和梯度方向垂直)。在直角坐標系中,Sobel算子的方向如下圖所示:
OpenCV中幾何形狀識別與測量
若圖像中一個3x3的窗口為A,要計算梯度的像素點為e,則和Sobel算子進行卷積之后,像素點e在x和y方向的梯度值分別為:
OpenCV中幾何形狀識別與測量
其中*為卷積符號,sum表示矩陣中所有元素相加求和。根據(jù)公式(3-2)便可以計算出像素點e的梯度和方向。
(三)應用非極大值(Non-Maximum Suppression)抑制,以消除邊緣檢測帶來的雜散響應
非極大值抑制是一種邊緣稀疏技術(shù),非極大值抑制的作用在于“瘦”邊。對圖像進行梯度計算后,僅僅基于梯度值提取的邊緣仍然很模糊。對于標準3,對邊緣有且應當只有一個準確的響應。而非極大值抑制則可以幫助將局部大值之外的所有梯度值抑制為0,對梯度圖像中每個像素進行非極大值抑制的算法是:

  1. 將當前像素的梯度強度與沿正負梯度方向上的兩個像素進行比較。

  2. 如果當前像素的梯度強度與另外兩個像素相比大,則該像素點保留為邊緣點,否則該像素點將被抑制。

通常為了更加精確的計算,在跨越梯度方向的兩個相鄰像素之間使用線性插值來得到要比較的像素梯度,現(xiàn)舉例如下:

OpenCV中幾何形狀識別與測量

如圖所示,將梯度分為8個方向,分別為E、NE、N、NW、W、SW、S、SE,其中0代表00~45o,1代表450~90o,2代表-900~-45o,3代表-450~0o。像素點P的梯度方向為theta,則像素點P1和P2的梯度線性插值為:

OpenCV中幾何形狀識別與測量

因此非極大值抑制的偽代碼描寫如下:

OpenCV中幾何形狀識別與測量

需要注意的是,如何標志方向并不重要,重要的是梯度方向的計算要和梯度算子的選取保持一致。

(四)應用雙閾值(Double-Threshold)檢測來確定真實的和潛在的邊緣

在施加非極大值抑制之后,剩余的像素可以更準確地表示圖像中的實際邊緣。然而,仍然存在由于噪聲和顏色變化引起的一些邊緣像素。為了解決這些雜散響應,必須用弱梯度值過濾邊緣像素,并保留具有高梯度值的邊緣像素,可以通過選擇高低閾值來實現(xiàn)。如果邊緣像素的梯度值高于高閾值,則將其標記為強邊緣像素;如果邊緣像素的梯度值小于高閾值并且大于低閾值,則將其標記為弱邊緣像素;如果邊緣像素的梯度值小于低閾值,則會被抑制。閾值的選擇取決于給定輸入圖像的內(nèi)容。雙閾值檢測的偽代碼描寫如下:
OpenCV中幾何形狀識別與測量

(五)通過抑制孤立的弱邊緣最終完成邊緣檢測

到目前為止,被劃分為強邊緣的像素點已經(jīng)被確定為邊緣,因為它們是從圖像中的真實邊緣中提取出來的。然而,對于弱邊緣像素,將會有一些爭論,因為這些像素可以從真實邊緣提取也可以是因噪聲或顏色變化引起的。為了獲得準確的結(jié)果,應該抑制由后者引起的弱邊緣。通常,由真實邊緣引起的弱邊緣像素將連接到強邊緣像素,而噪聲響應未連接。為了跟蹤邊緣連接,通過查看弱邊緣像素及其8個鄰域像素,只要其中一個為強邊緣像素,則該弱邊緣點就可以保留為真實的邊緣。抑制孤立邊緣點的偽代碼描述如下:
OpenCV中幾何形狀識別與測量

霍夫圓檢測

Hough 變換的原理就是利用圖像全局特征將邊緣像素連接起來組成區(qū)域封閉邊界,它將圖像空間轉(zhuǎn)換到參數(shù)空間,在參數(shù)空間對點進行描述,達到檢測圖像邊緣的目的。該方法把所有可能落在邊緣上的點進行統(tǒng)計計算,根據(jù)對數(shù)據(jù)的統(tǒng)計結(jié)果確定屬于邊緣的程度。Hough 變換的實質(zhì)就是對圖像進行坐標變換,把平面坐標變換為參數(shù)坐標,使變換的結(jié)果更易識別和檢測。

已知圓的一般方程為:(x - a)^2 + (y - b)^2 = r^2,其中,(a, b)為圓心,r為圓的半徑。

把X-Y平面上的圓轉(zhuǎn)換到a-b-r參數(shù)空間,則圖像空間中過(x, y)點圓對應參數(shù)空間中,高度r變化下的一個三維錐面,如下圖:

OpenCV中幾何形狀識別與測量

同理,過圖像空間中任意一點的圓對應于參數(shù)空間中的一個三維錐面。因此,過圖像空間上同一圓上的點,對應的參數(shù)空間中的三維錐面,在r高度必然相交于一點(a, b, r)。這樣通過檢測這一點可以得到圓的參數(shù),相應的圓也可求得了。圖像平面的方程轉(zhuǎn)化為參數(shù)平面上的示意圖如圖所示:

OpenCV中幾何形狀識別與測量

霍夫直線檢測

霍夫直線檢測就比較簡單了。
OpenCV中幾何形狀識別與測量

如上圖所以,將一條直線由截距是表示為在極坐標系下:

OpenCV中幾何形狀識別與測量

可以化簡為:

OpenCV中幾何形狀識別與測量

對于一個點(x0,y0)來說,可以通過這個點的一族直線統(tǒng)一定義為:

OpenCV中幾何形狀識別與測量

每一對(r0, theta)代表一條通過點(x0,y0)的直線。如果對于一個給定點(x0,y0),我們在極坐標對極徑極角平面繪制出所有通過它的直線,將會得到一條正弦曲線。例如x0=8, y0=6的曲線如下所示:
OpenCV中幾何形狀識別與測量

上圖是r>0 theta(0,2*PI)。對圖像中所有的點進行上述操作,如果兩個點在一條直線上,那么兩條正弦曲線將會交于一點:

OpenCV中幾何形狀識別與測量

上圖所有的三個點在一條直線上,一條直線能夠通過在平面theta-r尋找交于一點的曲線數(shù)量來檢測, 越多的 曲線交于一點就意味著這個交點表示的直線由更多的點組成,通過設(shè)置交于一點的曲線數(shù)的閾值來決定是否檢測到一條直線。霍夫變換即追蹤圖像中每個點對應曲線間的交點,如果 交點數(shù)量超過了閾值,那么可以認為這個交點所代表的參數(shù)為原圖像中的一條直線。

圖像二值化

圖像二值化( Image Binarization)就是將圖像上的像素點的灰度值設(shè)置為0或255,也就是將整個圖像呈現(xiàn)出明顯的黑白效果的過程。在數(shù)字圖像處理中,二值圖像占有非常重要的地位,圖像的二值化使圖像中數(shù)據(jù)量大為減少,從而能凸顯出目標的輪廓。

將256個亮度等級的灰度圖像通過適當?shù)拈撝颠x取而獲得仍然可以反映圖像整體和局部特征的二值化圖像。在數(shù)字圖像處理中,二值圖像占有非常重要的地位,首先,圖像的二值化有利于圖像的進一步處理,使圖像變得簡單,而且數(shù)據(jù)量減小,能凸顯出感興趣的目標的輪廓。其次,要進行二值圖像的處理與分析,首先要把灰度圖像二值化,得到二值化圖像。

輪廓發(fā)現(xiàn)

當我們通過閾值分割提取到圖像中的目標物體后,我們就需要通過邊緣檢測來提取目標物體的輪廓,使用這兩種方法基本能夠確定物體的邊緣或者前景。接下來,我們通常需要做的是擬合這些邊緣的前景,如擬合出包含前景或者邊緣像素點的最小外包矩形、圓、凸包等幾何形狀,為計算它們的面積或者模板匹配等操作打下堅實的基礎(chǔ)。一個輪廓代表一系列的點(像素),這一系列的點構(gòu)成一個有序的點集,所以可以把一個輪廓理解為一個有序的點集。?

在OpenCV中,提供了一個函數(shù)返回或者輸出一個有序的點集或者有序的點集的集合(指多個有序的點集),函數(shù)findContour是從二值圖像中來計算輪廓的,它可以使用Canny()函數(shù)處理的圖像,因為這樣的圖像含有邊緣像素;也可以使用threshold()或者adaptiveThreshold()處理后的圖像,其邊緣隱含在正負區(qū)域的交界處。

多邊形擬合

主要功能是把一個連續(xù)光滑曲線折線化,對圖像輪廓點進行多邊形擬合。對比之前黑點連線,之后藍色連線:

OpenCV中幾何形狀識別與測量

起始曲線是有序的一組點或線,距離維度ε> 0。該算法遞歸地劃分線。 最初給出了第一點和最后一點之間的所有點。 它會自動標記要保存的第一個和最后一個點。 然后找到距離第一點和最后一點組成的線段的最遠的點作為終點; 這一點在距離終點之間的近似線段的曲線上顯然最遠。 如果該點比線段更接近于ε,那么當前未被標記的任何點將被保存,而沒有簡化的曲線比ε更差的可以丟棄。如果離線段最遠的點距離近似值大于ε,則必須保留該點。 該算法以第一個點和最遠點遞歸地調(diào)用自身,然后以最遠點和最后一個點(包括最遠點被標記為保留)遞歸調(diào)用自身。當遞歸完成時,可以生成一個新的輸出曲線,其中包括所有且僅標記為保留的點。

非參數(shù)Ramer-Douglas-Peucker :ε 的選擇通常是用戶定義的。 像大多數(shù)線擬合/多邊形近似/主點檢測方法一樣,通過使用由于數(shù)字化/量化的誤差界限作為終止條件,可以使其非參數(shù)化,這種非參數(shù)RDP算法的MATLAB代碼在這里可用。

識別結(jié)果

OpenCV中幾何形狀識別與測量

OpenCV中幾何形狀識別與測量

環(huán)境搭建講解視頻

https://gitee.com/bluemiaomiao/ImageFound/blob/master/video_x264.mp4

實現(xiàn)原理和項目代碼

https://gitee.com/bluemiaomiao/ImageFound

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


分享名稱:OpenCV中幾何形狀識別與測量-創(chuàng)新互聯(lián)
瀏覽地址:http://weahome.cn/article/dgpsdj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部