2012-03-16 109 views
3

我正在致力於識別電視頻道的項目。 我正在拍照的渠道吸我試圖避免背景,並從標誌的中心採取樣品。 我承認4個不同的標誌,這裏的模板:標識識別 - 如何提高性能

Channel1Channel2Channel3Channel4

怎麼我的模板匹配算法的工作:
由於尺寸100×100的4個模板,分別代表不同的電視頻道,每個具有不同的閾值(概率)。 用戶正在從電視機捕捉徽標,然後算法如下: - 在每個模板上運行4個獨立模板匹配,以接收每個模板匹配捕獲圖像的概率。 - 對於每個信道概率,如果信道的概率低於信道的閾值,則概率變爲0; - 宣佈認可的標誌是最有可能的標誌。如果所有概率都是0,則宣佈「不承認」。例如,如果我有一個概率爲0.85,閾值爲0.9的通道,第二個通道的概率爲0.8,閾值爲0.75,則第二個通道「勝利」。

當我拍攝其中一個標誌的照片時,95%的時間認可照片。

目前的結果:

  • 當試圖檢測第一( 「笑臉」 標誌),從10所檢測的我得到了10個正確的檢測。對於正確的模板和圖像之間的模板匹配,我得到0.91到0.94之間的概率。對於其他標誌,我的概率在0.77到0.91之間。
  • 當試圖檢測第二個(「綠色」標誌)時,在10次檢測中,我得到了10次正確的檢測結果。對於正確的模板和圖像之間的模板匹配,我得到的概率在0.78到0.91之間。對於其他徽標,我的概率介於0.71到0.83之間(但由於閾值高,檢測成功)。
  • 當試圖檢測第三個(「圓形」標誌)時,在10次檢測中,我得到了9次正確的檢測結果。對於正確的模板和圖像之間的模板匹配,我得到0.83到0.92之間的概率。對於其他標誌,我的概率介於0.73至0.91之間。
  • 當試圖檢測到第四個(「黑白」標誌)時,在10次檢測中,我得到了10次正確的檢測結果。對於正確的模板和圖像之間的模板匹配,我得到0.91到0.94之間的概率。對於其他標誌,我的概率在0.78到0.92之間。
  • 當試圖檢測到一個「負面」的圖像,很多時候我得到一個標誌檢測(這是不好的)。例如,如果我拿一張完整白紙的圖像,它會檢測第一個,第三個和第四個標識的概率大於0.9

如何改進我的算法或改變它以獲得更好的結果在「負面」圖像?

感謝您的幫助,

的Eyal

+0

您的模板匹配到底如何工作? – TomP89 2012-03-16 11:13:50

+0

請看看編輯 - 我已經添加了決策算法和我做的測試結果。 – Eyal 2012-03-16 13:23:50

+0

@Eyal,看來你的模板匹配算法不夠好。白紙與您的徽標不相似。 – 2012-03-16 14:17:30

回答

3

這一切都取決於你如何計算從模板的通道概率。您是使用顏色直方圖還是梯度直方圖,然後查看模板和測試圖像之間的直方圖差異?

另一種方法是計算測試圖像的特徵向量,例如梯度直方圖和顏色直方圖的連接。然後,手動創建一個訓練數據庫,在該數據庫中您知道標籤(1,2,3或4,具體取決於哪個標籤在圖像中可見),您可以將硬編碼標籤和直方圖特徵一起輸入到分類器例程。爲此,我建議使用LIBSVM,並且scikits.learn實現在Python中很容易使用。

這將產生一個支持向量機分類器,它將比較新圖像的特徵向量和來自訓練集的支持向量,並確定最有可能出現在圖像中的正確標籤。如果你想要產生概率而不僅僅是預測標籤的東西,那麼你可以在這個支持向量機的頂部擬合邏輯模型。

Duda,Hart和Stork的Pattern Classification以及Bishop的Pattern Recognition and Machine Learning兩本好書可供您閱讀。

我爲實現Python中的Poselets and Histogram of Oriented Gradients而編寫的一些凌亂的Python代碼可以找到linked here;也許你可以在那裏獲取一些代碼段,它將適合你的任務。