色彩追蹤說明#

什麼是追蹤色彩,CMUcam4 又是如何做到的?#

色彩追蹤是指擷取一張影像、隔離出特定色彩,並擷取影像中僅包含該色彩之區域位置資訊的能力。舉例來說,假設有人給您一張照片,其中有一顆紅色的球放在泥土路上。如果有人要求您在影像中所有紅色的物體周圍畫一個框,您會相當輕易地在球的周圍畫出一個矩形。這就是色彩追蹤背後的基本概念。您不需要知道該物體是一顆球。您只需要有紅色的概念,就能在照片中隔離出該物體。在下方,我們將簡要說明 CMUcam4 實際上如何利用相機影像中的資訊來執行色彩追蹤。

為了指定色彩,您需要為三個色彩通道定義最小與最大的允許值。每一種獨特的色彩都由一個紅、綠、藍值來表示,這些值指出各通道有多少混入該獨特色彩中。指定色彩的棘手之處在於,您需要為所有三個色彩通道定義一個允許值的範圍。由於光線並非完全均勻,物體的色彩也並非完全均勻,您必須容納這些變化。然而,您不會想把這些範圍放寬得太多,否則許多不想要的色彩也會被接受。由於以 CMUcam4 而言,每個色彩通道都被轉換成 0 到 255 之間的數字,您可以用兩個數字(一個上限與一個下限)來界定每個通道。如果三個通道各有兩個界限,這表示可以用六個值來限制您想追蹤的整個色彩空間。如果您想像色彩由一個立方體來表示,其中每一面是不同的色彩通道(紅、綠與藍),那麼用來選擇您色彩的六個值,將會在該立方體內畫出一個三維的方塊,用以定義您想要的色彩集合。

一旦您有了想追蹤色彩的界限,CMUcam4 便會取用這些界限並處理影像。在影像中追蹤色彩有許多方法,有些可能相當複雜。CMUcam4 使用一種簡單的單次遍歷演算法,獨立處理來自相機的每個新影像畫格。它從影像的左上角開始,逐列依序檢查每一個像素。如果它正在檢查的像素落在使用者所指定的色彩範圍內,它便將該像素標記為被追蹤。它也會檢查目前被追蹤像素的位置,看看它是否是影像中目前為止所找到的所有被追蹤像素中最上方、最下方、最左方或最右方的位置。如果它發現該像素位於被追蹤區域目前邊界框之外,它便會擴大邊界框以容納這個新像素。由於即使只是單一被追蹤像素的位置也可能改變邊界框,邊界框有時會在畫格與畫格之間波動相當大。雜訊濾波(見下一段)可用於減少部分這種波動。另一個被儲存的主要資訊是被追蹤像素的水平與垂直座標總和。在影像的最後,CMUcam4 會取被追蹤像素的水平總和與垂直總和,各除以被追蹤像素的總數,得到一個顯示被追蹤物體中心位置的值。由於每個被追蹤像素對最終水平與垂直總和只貢獻一小部分,被追蹤像素的中心(通常稱為形心)通常是比邊界框穩定得多的測量值。一旦影像中所有像素都檢查完畢,被追蹤像素的總數也可以與邊界框的面積搭配使用,以計算被追蹤物體的信賴度及其像素數。

雜訊濾波讓我們可以將色彩追蹤範圍放得更大,如此便能容納影像像素值中較大的變化,而不會導致影像中其他隨機的變化也被追蹤。雜訊濾波背後的理念是,我們只有在某個像素屬於一群位於色彩追蹤範圍內的像素時,才會將它視為被追蹤色彩。在 CMUcam4 中,我們以只需對影像進行單次遍歷的方式來實作此功能。在處理影像中的像素時,CMUcam4 會維護一個計數器,用以追蹤在目前像素之前,目前列中有多少連續像素位於被追蹤色彩範圍內。如果該值高於雜訊濾波值,則目前像素會被標記為被追蹤像素。

什麼是直方圖,它有什麼用處?#

直方圖是一種顯示資料頻率與分佈的圖表。以 CMUcam4 為例,直方圖顯示影像中所發現色彩值的頻率與分佈。每一條長條代表特定通道的一段色彩值範圍。CMUcam4 可以將 0 到 255 之間可能的色彩值劃分為 1、2、4、8、16、32 與 64 個不同的區間。每個區間包含影像中落在某些色彩範圍內的像素數量。因此,某個特定區間中的數值很大,即表示影像中發現了許多這類色彩。每個直方圖只代表一個選定的色彩通道。

直方圖是一種抽象化影像內容的方法。它們有許多用途,例如基本的物體辨識、閾值處理或色彩平衡。它們對於區分不同的紋理特別有用。試著在關閉自動增益的情況下,將 CMUcam4 對準兩個不同紋理的表面,並注意它們色彩分佈的差異。此效果可用於區分地板表面或偵測障礙物。