2013-05-17 14 views
0

我有一個根據數據編碼方案改變顏色的圓圈。例如,我想在該圓圈的顏色變化中對消息「Hello」進行編碼。這意味着從紅色到綠色的過渡(實心圓的顏色從紅色變爲綠色)可以解碼爲二進制1,從綠色到藍色的過渡可以解碼爲0.因此,我的消息可以是以這種格式編碼。這部分是我的發射器已準備就緒。與Android相機的可見光通信方法

現在我希望能夠使用Android攝像頭通過圖像處理算法接收此編碼數據。我是圖像處理新手,經過一些研究後,我發現我可以使用OpenCV或JavaCV作爲我的應用程序。你認爲我應該使用哪一個,我應該遵循什麼樣的應用?我已經能夠創建一個可以實時檢測圓圈的應用程序。但是我無法想象接下來要做什麼。 我遵循opencv示例中的color_blob_detection示例,我知道如何檢測幀中的特定顏色。

在這裏,我感到困惑。

  1. 我應該不斷檢查所有幀中的紅,綠,藍三種顏色嗎?有沒有一種方法來確定每個幀的相同的百分比,這樣我可以用兩個連續的幀比較百分比和說,一直存在一個過渡?**

  2. 我應該緩衝的幾號例如500幀的幀緩衝區中的幀,然後從緩衝區開始逐個處理我的幀。這可以考慮爲了增加幀速率,因爲在這種情況下,我的onPreviewFrame()方法代碼將被減少到最小值**

請建議我應該怎麼做呢?發射機會一直髮送同樣的信息,我不介意確定我發送的比特數/字節數。我只需要識別以這種方式傳輸的'身份證'。

+0

感謝您的編輯邁克爾.. – Ricky

+0

幫助我在此上實現相同的實現。我的用例是從相機的閃光燈中讀取編碼的數字(數字)。 –

回答

0

我真的很困惑你的第一個問題。計算某種顏色的圖像比例是不是圖像處理?你爲什麼認爲檢查三種顏色可能會更昂貴?

關於第二個問題,所需的幀速率取決於您的協議。如果轉換髮生在10 Hz,則只需要10 FPS即可對其進行解密。另一方面,可以將幀數據複製到一邊,並在一個單獨的線程的隊列中處理它,以便onPreviewFrame()循環(這是Android應用程序的主線程)不會被卡住。

+0

謝謝你的回覆,是的,檢查dor的百分比確實是圖像處理,我只是想知道如何用opencv實現。其次,是的,我確實認爲檢查所有三種顏色將會很昂貴,因爲對於所有三種顏色必須重複相同的程序。你不覺得它會很貴嗎? – Ricky

+0

@Alex Cohn,你可以給我一個在Receiver端處理LED數據轉換的概述..我發現從接收端的下面的鏈接的一些片段..在哪裏ndk代碼是完整的..這是感激的,如果你建議我從pdf執行接收ndk代碼https://www.researchgate.net/file.PostFileLoader.html?id=5759370596b7e49f4d75ff68&assetKey=AS%3A370999498428416%401465464581089 –

+0

@SenthilMg恐怕這不是一個問題我可以回答站在一隻腳:( –