圓心座標的提取

2021-06-05 07:35:26 字數 2372 閱讀 1060

用opencv的話,這樣的活兒也就那麼兩三行**,而且靈活可靠。但是,玩影象處理只懂玩成這樣就悲哀了,就如同遊戲引擎之於計算機圖形學,太依賴影象庫是不利於自己的成長和知識的提公升的。

圓心提取的本質是從一張含有圓形/橢圓標誌物的(見下圖1,現實經各種處理到達這種圓與背景分明的樣態)中,選擇一定座標系,提取出各個標誌圓的圓心在這個座標系中的座標。

因此這個座標系的選擇將是影響最終結果的形式的關鍵。一般來說選擇影象座標系,以畫素為單位。本實驗的格式是bmp,因此可以按照bmp自身的座標特點,以左下角為座標原點,向右為x軸,向上為y軸。當然若想與windows視窗座標系一致(以左上角為原點),直接用高度減上座標系的結果就行了。

關於結果的精度是很值得考究的事情。事實上,若考慮到素材是相機所拍成像的,某個圓的圓心與座標原點的距離應該是乙個含一定精度的浮點實數。但是計算機影象的結構限定了座標系只能以畫素為單位,因此其可能達到的最高精度只有0. 5畫素。在此以上的精度在本素材影象中是沒有意義的。因為相機會自動對物理場景(連續)的取樣點(離散取樣)進行向輸出影象的一一對映,形成畫素(乙個畫素只包含一款顏色)。相鄰畫素的值是非連續(離散)的,注定影象座標系中每個「值」(座標)都只能與畫素相容。這樣,圓心位置也就只能存在於某個畫素上或某2個或4個畫素之間,因此實際中最高只有0.5的精度。

(圖1  

圓心提取素材)

2 數字影象本質——被離散化取樣,導致精度最高僅

0.5)

但是,如果圓心不是通過直接尋找的,而是採用數值計算得到(譬如本實驗中用到的徑向誤差判斷結合法),那麼計算結果就會存在比較高的精度的可能性。這是理論可得結果與實際可得結果的差別。但就「計算機影象」這層意義來說,高於0.5的精度意義不大。

演算法的設計:

在分析之後對演算法的設計和選擇就清晰了——立足於影象的本質上的話,只需要把圓心所在的畫素位置找到,或者把包圍圓心位置的幾個畫素找到即可。

參見圖2,可知,影象中的參照物為乙個圓或橢圓。在把它看作理想的圓/橢圓的話,可以認為圓點必然是在x方向橫跨最多畫素點的那一行中。因此演算法設計上,針對每個圓,首先找出滿足這個條件的一行(或幾行,取中間行或中間兩行),然後在y方向上找到該畫素行的中間位置,即為圓心——綜合來說,圓心位置可能是落在某乙個畫素上,或x方向兩個畫素之間,或y方向兩個畫素之間,或xy方向的4個畫素之間。演算法必須考慮這幾種情況,算出精度為0.5的圓心位置。

演算法的實現重點在於怎樣分離出乙個乙個的圓,我採用的是逐畫素法,先處理完最開頭的乙個圓(底部座標靠近左下角原點),然後把這個圓從影象中去除(對二值化影象,就是把該圓的白色畫素變黑),之後再處理下乙個圓(尋得條件同樣是,底部座標靠近左下角原點)……直到處理完。怎麼判斷處理完呢?具體就是當該影象完全黑化的時候停止繼續尋覓圓。

圓心座標用乙個容器鍊錶儲存起來,作為輸出——輸出到檔案或作為乙個/幾個白畫素塗入被完全黑化的影象上。

該演算法為自主設計,自稱為逐畫素處理。應用條件是:

(1) 為二值化黑白,8bit。(可以通過簡單的預處理達到)

(2) 中僅含圓形。(本實驗素材滿足,若不滿足可進行一定的預處理,如形態學處理,空間模板處理)

上方法另外作出的乙個假設:該圓為理想的圓/橢圓。但是從圖2這個放大圖來說,事實上並不理想——雖然也可滿足以上演算法能找到圓心。把該圓規範化成乙個標準的圓,這樣可使找出的圓心具有更高的可信度。

按照某文獻資料(影象處理中圓心演算法研究

雷家勇,

達飛鵬,

孟廣猛,東南大學自動化研究所)中所敘述的方法,可採用「徑向誤差預處理的最小二乘」進行擬合計算。

演算法可分為三部分:

1. 找出初始圓心(此圓心作為徑向誤差判斷的基準,在本實驗中可直接取用逐畫素處理法所得的結果)。

2. 找出擬合用的畫素座標。首先這些畫素必須是圓形的邊緣單畫素(即八鄰域內最多3個畫素);然後進行篩選,這主要通過徑向誤差範圍判斷,去除無效的邊界點和誤差大的邊界點。

3. 根據上述處理後的邊界點,用最小二乘法擬合圓心。

因為經歷了數值計算,因此結果將具有高精度,但不一定有意義(見4.1)。本方法結合了「逐畫素法找初始圓心」——「徑向誤差篩選出擬合資料」——「最小二乘法擬合、修正圓心」,得到可信度更高的圓心方位。

該演算法(徑向誤差最小二乘法)的適用條件為:

(1) 處理的影象元素必須是嚴格的圓或近似圓。如果是橢圓且偏心太厲害的話,全部基於圓的擬合演算法會不適用,徑向誤差方法也變得無效。

(2) 因為採用了逐畫素處理,因此也必須滿足之前所述該演算法的條件。

有此設計的處理結果是:

3  程式介面,圓心提取對話方塊)

(圖4  結果

)(圖5  直觀一點)

(圖6另一張測試

)(圖7處理結果

)最後這裡只是說明對於這種雜亂排布的圓也能檢測出而已。不過掃瞄演算法裡的遞迴終結條件就得好好掂量了~

座標的轉換

各地圖api座標系統比較與轉換 wgs84座標系 即地球座標系,國際上通用的座標系。裝置一般包含gps晶元或者北斗晶元獲取的經緯度為wgs84地理座標系,谷歌地圖採用的是wgs84地理座標系 中國範圍除外 gcj02座標系 即火星座標系,是由中國國家測繪局制訂的地理資訊系統的座標系統。由wgs84座...

OpenGL座標的問題?

include stdafx.h include static glfloat xrot 0.0f static glfloat yrot 0.0f 繪製場景 void renderscene void this function does any needed initialization on ...

邏輯座標和裝置座標的區別

在 windows 中,文件座標系稱作邏輯座標系,檢視座標系稱為裝置座標系。它們之間的關係如下圖所示 圖7 11 文件座標和檢視座標 在檢視滾動後,如果使用者在檢視中單擊滑鼠,那麼會得到滑鼠位置的裝置 檢視 座標。在使用這個資料處理文件 比如畫點或畫線 時,需要把它轉化為文件座標。這是因為利用 mf...