本發明涉及可見光通信領域,更具體地,涉及一種基于移動設備攝像頭檢測led光源的頻率的方法。
背景技術:
現有技術公開了一種基于可見光的通信技術,利用圖像傳感器分時逐行讀取圖像信息的特性,通過對led光源的驅動電流或驅動電壓進行調制,簡單的說就是改變led光源的頻率,在圖像傳感器輸出端獲取若干幀明暗條紋圖片,然后對明暗條紋圖片中一對明暗條紋的寬度進行檢測。而后,根據檢測到的圖像中一對明條紋暗條紋的寬度,通過計算來獲取led光源的頻率信息。而后,根據所述頻率信息來確定所傳輸的編碼。最后,根據特定的解碼方式恢復所傳輸信,該信息與室內位置之間的對應關系,獲得相應位置信息,從而實現移動設備的室內精確定位。現有技術提出的可見光定位系統如圖1所示。
如圖1所示,實現可見光定位系統實時可靠地實現定位的關鍵是對不同寬度的明暗條紋圖片進行正確的解碼,計算出其中一對明暗條紋的寬度,從而得到led光源的頻率。現有技術檢測一對明暗條紋的寬度的方法有:1.首先將有效光源區條紋圖片進一步縮減為發光面矩形,對發光面矩形圖片灰度值進行灰度值二元化,然后對二值矩形圖片中的每一行求和,再對和值求一階或二階偏導,最后對每行的偏導值進行處理得到圖片的條紋數目;2.首先獲取光源區條紋圖片,將條紋圖片轉換成灰度圖片,針對條紋圖片中每一行的所有像素計算平均灰度值,假定灰度明暗條紋圖片共有m行,將m個平均灰度值存儲在數組中,然后對數組進行m點的dft運算,除低頻分量以外的峰值所對應的k值即條紋圖片中的條紋數目,再用總行數m除以k得到一對明暗條紋的寬度。但是通過實際實驗的驗證,方法一,方法二的可靠性和穩定性并不是很理想。方法一中明暗條紋的數目是隨著led光源與移動設備之間距離的增加而減少的,而不是固定不變的,說以不能得到光源區的條紋圖片與led光源頻率的之間對應的光系。方法二用平均閾值法不能消除遠距離時在條紋圖片的外圈形成的個個不是很亮的光環,這個光環會對有效光源區的截取產生干擾,隨著距離的增加,誤碼率會越來越高,還有條紋圖片的每行進行求灰度值平均,在進行dft運算時,會引入更多的噪聲,這個方法還會真加很多的運算量,使對圖片的處理變慢,對移動設備的內存占用比變大,影響系統的可靠性和穩定性。現有技術把led-id信息與位置信息的對照表,當室內可見光定位技術應用范圍越來越廣的時候,led-id信息與位置信息的對照表就要頻繁的更新,移動設備上的app也就要同時頻繁的更新,隨著led-id信息與位置信息的對照表越來越龐大,會占用的大量的移動設備的內存資源。為了解決上述出現的問題,本發明提出一種基于移動設備攝像頭檢測led光源頻率并與服務器進行數據傳輸獲取位置的方法,有效的提高了可見光室內定位系統的穩定性。
技術實現要素:
本發明提供一種基于移動設備攝像頭檢測led光源的頻率的方法,該方法可有效提高對可見光源定位的穩定性和可靠性。
為了達到上述技術效果,本發明的技術方案如下:
一種基于移動設備攝像頭檢測led光源的頻率的方法,包括以下步驟:
s1:用移動設備的攝像頭對著經過led光源拍照,獲取條紋圖片,將條紋圖片轉換成灰度圖像,其中每一種led燈具的頻率都對應著一位或者多位的bit信息,在移動設備中生產一張頻率與bit信息對照表;
s2:采用otsu算法選取閾值將灰度圖像轉換成二值圖像,根據得到的二值圖像,進行行掃描,獲取每行的平均灰度值;
s3:對灰度值最大的一行進行行掃描,分別記錄第一次和最后一次出現大于閾值的像素點的縱坐標;
s4:根據記錄的第一次和最后一次出現大于閾值的像素點的縱坐標計算出led燈具的頻率;
s5:將得到的led燈具的頻率通過對照表,獲得相對應的bit信息進而獲得led光源的位置。
優選地,所述條紋圖片換成255級灰度圖像。
進一步地,所述步驟s4的具體過程如下:
其中,w為一對黑白條紋的寬度,c1為第一次出現大于閾值的像素點的縱坐標,c2為第二次出現大于閾值的像素點的縱坐標,row_n為灰度值最大的一行中條紋圖片的黑白條紋對的數目,frow為移動設備的攝像頭的行掃描頻率。
進一步地,所述led燈具通過發送不同頻率的光,可檢測到不同的bit信息,組合在一起就是一個完整的位置id從而得到led光源的位置。
與現有技術相比,本發明技術方案的有益效果是:
本發明通過對led光源的驅動電流或驅動電壓進行調制,簡單的說就是改變led光源的頻率,在圖像傳感器輸出端獲取若干幀明暗條紋圖片,然后對明暗條紋圖片一對明暗條紋的寬度進行檢測,可知所拍攝的明暗條紋圖片每行像素值的變化規律是周期性的,即用移動設備的攝像頭的行掃描頻率比上一對黑白條紋的寬度即為led光源的頻率,不同led頻率的組合,,就可以獲得led光源的位置信息,提高了對led光源定位的穩定性和可靠性。
附圖說明
圖1是現有技術提出的可見光定位系統的示意圖;
圖2是本發明技術提出的可見光定位系統的示意圖;
圖3a是經過tcl智能手機攝像頭對led光源拍照獲得的明暗條紋圖;
圖3b是明暗條紋圖片灰度化后,在經過otsu算法處理后的二值圖。
具體實施方式
附圖僅用于示例性說明,不能理解為對本專利的限制;
為了更好說明本實施例,附圖某些部件會有省略、放大或縮小,并不代表實際產品的尺寸;
對于本領域技術人員來說,附圖中某些公知結構及其說明可能省略是可以理解的。
下面結合附圖和實施例對本發明的技術方案做進一步的說明。
實施例1
獲取光信號對應的明暗條紋圖片。
如圖2所示,發射機能夠控制led燈具發送不同頻率的連續光信號,光信號的頻率可以是相同,也可以是不同,根據不同的led燈具的頻率來區分不同的碼元信息。設定led燈具的頻率為fled,用移動設備的攝像有對著led燈具拍照,得到與fled對應的明暗條紋圖片。
對得到的條紋圖片進行灰度化。
對每個像素點中rgb三個像素進行轉換,將彩色圖像轉化為黑白圖像(如圖3a),從黑到白的亮度區分,設定為灰度值;最小為0,最大為255。
將灰度圖像轉換成二值圖像(如圖3b),閾值選取采用otsu算法。該算法是在灰度直方圖的基礎上采用最小二乘法原理推導出來的,具有統計意義上的最佳分割。它的基本原理是以最佳閾值將圖像的灰度值分割成兩部分,使兩部分之間的方差最大時,決定閾值,即具有最大的分離性。
其數學模型如下:
設f(x,y)為條紋圖片im*n的位置(x,y)處的灰度值,灰度級為[k1,k2],則f(x,y)∈[k1k2]。若灰度級i的所有像素個數為ni,則第i級灰度出現的概率為:
其中并且i∈[k1,k2]。
然后用閾值k將其分成兩組,即背景c0∈[k1,k-1]和目標c1∈[k,k2]。
背景c0部分出現的概率為:
目標led光源區域c1部分出現的概率為:
其中ω0+ω1=1。背景c0部分的平均灰度值為:
目標led光源區域c1部分出現的平均灰度值為:
圖像的總平均灰度值為:
兩組間的方差為:
δ2(k)=ω0(μ-μ0)+ω1(μ-μ1)(8)
從k1到k2間改變k,使(8)式最大的那個k值即為閾值。
進行二值化。
當灰度值大于閾值時,灰度值二元化后的值為255;當灰度值小于閾值時,灰度值二元化后的值為0,灰度化后設g(x,y)為條紋圖片im*n的位置(x,y)處的灰度值。
對二值圖進行分析,假設led燈具形成的明暗條紋圖片的行數為m,每行有n個像素點。
記錄第一次出現大于閾值的像素點的縱坐標c1。定義一個變量s初始值記為0,掃描若有連續出現大于閾值的像素點,則s增加1;掃描到最后一次出現連續大于閾值的像素點,記下這段連續像素點的第一個像素點的縱坐標c2,此時的s等于row_n。
條紋圖片的黑白條紋對的數目為row_n,一對黑白條紋的寬度(一對黑白條紋包含的包含的像素點的列數)
計算條紋圖片的每行的所有像素計算平均灰度值,每行的平均灰度值為:
上式中的i帶表不同的行,從1到n之間變化,選取合適的i值,使(9)式中的
定位到第i行,i從1到n近行變化,對i行從左到右進行掃描,比較g(i,j)與閾值k的大小,記錄第一次出現大于閾值的像素點的縱坐標c1。定義一個變量s初始值記為0,掃描若有連續出現大于閾值的像素點,則s增加1;掃描到最后一次出現連續大于閾值的像素點,記下這段連續像素點的第一個像素點的縱坐標c2,此時的s等于row_n。
條紋圖片的黑白條紋對的數目為row_n,一對黑白條紋的寬度(一對黑白條紋包含的像素點的列數)
led燈具的頻率
本發明提出一種基于移動設備攝像頭檢測led光源的頻率的方法,通過對led光源的驅動電流或驅動電壓進行調制,簡單的說就是改變led光源的頻率,在圖像傳感器輸出端獲取若干幀明暗條紋圖片,然后對明暗條紋圖片一對明暗條紋的寬度進行檢測,可知所拍攝的明暗條紋圖片每行像素值的變化規律是周期性的,即用移動設備的攝像頭的行掃描頻率比上一對黑白條紋的寬度即為led光源的頻率,不通led頻率的組合,對應不通的編碼的信息,將信息發送給服務器,就可以獲得從服務器返回的位置。與現有技術相比,本發明技術的優勢是:
本發明提出的檢測led光源頻率的方法,可有效提高此類可見光定位系統的穩定性和可靠性。通過otsu算法,可以消除有效光源區最外圈的環帶的影響,提高了系統的穩定性;不需要截取有效光源區,可以消去截取產生的誤碼,提高抗各種環境光干擾的能力,不通過fft運算檢測明暗條紋的數目,算法簡更加潔明了,而且可大幅提高明暗條紋圖片的處理速度,減少對移動設備內存的占用,還可以減弱噪聲的干擾,可以不需要更高的led燈具的頻率,降低硬件成本,同過與服務器的傳輸,可以不用在移動設備端導入位置的數據表,減小對移動設備內存的占用,還有位置更新時,總是要實時的更新app帶來的不便,具有較大的應用價值。
采用一種現有的模型進行說明。發射機對led-id信息進行編碼設計。本實施例的發射機(led燈具)采用5種不同的led閃爍頻率代表1比特二進制數據,這樣接收機(移動設備)可以形成1種不同寬度的明暗條紋圖片和1個代表“幀頭”的條紋圖片,如表1所示,其中fledi表示第i個led閃爍頻率,li表示第i幅圖片所包含的明暗條紋寬度之和(以像素行數為單位計數)。
表1:led-id信息編碼示意圖
led-id信息的編碼規則為:
1)對連續相鄰的相同的2比特二進制數據組,交替使用不同的led閃爍頻率進行編碼;
2)對于非連續相鄰的相同的2比特二進制數據組,使用與前一個相鄰數據組所用led閃爍頻率差距較大的頻率進行編碼。
假設發射端led光源循環廣播一個4位led-id信息為“1010”。根據上述規則及表1定義的編碼,并加裝幀頭后的信號為“fled5fled1fled2fled3fled4”。
在移動設備端的app里調用攝像頭對led光源進行預覽,等間隔時間連續預覽12張圖片。用本文的方法對預覽的5張圖片進行解碼,解出不同圖片對應的頻率,則解出的明暗條紋像素值信息為l5l4l3l2l1,得到對應的led-id信息為1010。
將得到的led-id的信息通過移動設備發送給服務器,用一臺電腦做服務器,服務器上存放led-id與位置信息的對照表。服務器收到led-id信息后,返回一個位置信息給移動設備,這樣就完成了定位。通過服務器,可以免去app因為對照表的更新,app也要不斷地更新的麻煩,還可以減少移動設備要自己存儲對照表而過多的占用手機內存,app顯現的很龐大。
相同或相似的標號對應相同或相似的部件;
附圖中描述位置關系的用于僅用于示例性說明,不能理解為對本專利的限制;
顯然,本發明的上述實施例僅僅是為清楚地說明本發明所作的舉例,而并非是對本發明的實施方式的限定。對于所屬領域的普通技術人員來說,在上述說明的基礎上還可以做出其它不同形式的變化或變動。這里無需也無法對所有的實施方式予以窮舉。凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明權利要求的保護范圍之內。