Wyjaśnienie śledzenia koloru#
Czym jest śledzenie koloru i jak robi to CMUcam4?#
Śledzenie koloru to zdolność do pobrania obrazu, wyizolowania określonego koloru i wyodrębnienia informacji o położeniu obszaru tego obrazu, który zawiera właśnie ten kolor. Jako przykład załóżmy, że otrzymujesz fotografię, na której znajduje się czerwona piłka leżąca na polnej drodze. Gdyby ktoś poprosił Cię o narysowanie ramki wokół wszystkiego, co ma na obrazie kolor czerwony, dość łatwo narysowałbyś prostokąt wokół piłki. To jest podstawowa idea śledzenia koloru. Nie musiałeś wiedzieć, że obiekt jest piłką. Musiałeś jedynie mieć pojęcie o kolorze czerwonym, aby wyizolować obiekt na zdjęciu. Poniżej pokrótce omówimy, jak CMUcam4 faktycznie wykorzystuje informacje z obrazu kamery do wykonywania śledzenia koloru.
Aby określić kolor, musisz zdefiniować minimalną i maksymalną dopuszczalną wartość dla trzech kanałów koloru. Każdy unikalny kolor jest reprezentowany przez wartość czerwoną, zieloną i niebieską, która wskazuje, ile z każdego kanału jest zmieszane w unikalnym kolorze. Trudność w określaniu koloru polega na tym, że musisz zdefiniować zakres dopuszczalnych wartości dla wszystkich trzech kanałów koloru. Ponieważ światło nie jest idealnie jednorodne, a kolor obiektu nie jest idealnie jednorodny, musisz uwzględnić te wariacje. Nie chcesz jednak zbytnio rozluźniać tych granic, bo zostanie zaakceptowanych wiele niepożądanych kolorów. Ponieważ w przypadku CMUcam4 każdy kanał koloru jest konwertowany na liczbę od 0 do 255, możesz ograniczyć każdy kanał dwiema liczbami: górnym i dolnym limitem. Jeśli masz dwa limity dla każdego z trzech kanałów, oznacza to, że sześć wartości można wykorzystać do ograniczenia całej przestrzeni kolorów, którą chcesz śledzić. Jeśli wyobrazisz sobie kolory reprezentowane przez sześcian, w którym każdy bok to inny kanał koloru (czerwony, zielony i niebieski), to sześć wartości użytych do wyboru koloru narysowałoby trójwymiarowy prostopadłościan wewnątrz tego sześcianu, który definiuje pożądany zestaw kolorów.
Gdy masz już granice dla koloru, który chcesz śledzić, CMUcam4 pobiera te granice i przetwarza obraz. Istnieje wiele sposobów śledzenia kolorów w obrazie, które mogą być dość złożone. CMUcam4 używa prostego jednoprzebiegowego algorytmu, który przetwarza każdą nową klatkę obrazu z kamery niezależnie. Zaczyna od lewego górnego rogu obrazu i sekwencyjnie bada każdy piksel, wiersz po wierszu. Jeśli badany piksel mieści się w zakresie kolorów określonym przez użytkownika, oznacza ten piksel jako śledzony. Bada również pozycję bieżącego śledzonego piksela, aby sprawdzić, czy jest to najbardziej górna, najbardziej dolna, najbardziej lewa lub najbardziej prawa pozycja spośród wszystkich śledzonych pikseli znalezionych dotychczas w obrazie. Jeśli stwierdzi, że piksel znajduje się poza bieżącą ramką ograniczającą śledzonego obszaru, powiększa ramkę ograniczającą, aby objąć ten nowy piksel. Ponieważ położenie nawet pojedynczego śledzonego piksela może zmienić ramkę ograniczającą, ramka ta może czasami dość mocno fluktuować z klatki na klatkę. Filtrowanie szumów (patrz następny akapit) można wykorzystać do zredukowania części tych fluktuacji. Jedyną inną istotną informacją, która jest przechowywana, jest suma poziomych i pionowych współrzędnych śledzonych pikseli. Na końcu obrazu CMUcam4 bierze sumę poziomą i sumę pionową śledzonych pikseli i dzieli każdą z nich przez całkowitą liczbę śledzonych pikseli, uzyskując wartość pokazującą, gdzie znajduje się środek śledzonego obiektu. Ponieważ każdy śledzony piksel wnosi tylko niewielką część do końcowych sum poziomej i pionowej, środek (często nazywany środkiem ciężkości) śledzonych pikseli jest zazwyczaj znacznie bardziej stabilnym pomiarem niż ramka ograniczająca. Po sprawdzeniu wszystkich pikseli w obrazie całkowita liczba śledzonych pikseli może być również wykorzystana w połączeniu z powierzchnią ramki ograniczającej do obliczenia pewności oraz liczby pikseli w śledzonym obiekcie.
Filtrowanie szumów pozwala nam poszerzyć zakresy śledzenia koloru, dzięki czemu możemy uwzględnić większe wariacje wartości pikseli obrazu bez powodowania śledzenia innych przypadkowych wariacji w obrazie. Ideą filtrowania szumów jest to, że chcemy uznawać piksel za piksel śledzonego koloru tylko wtedy, gdy jest on częścią grupy pikseli mieszczących się w granicach śledzenia koloru. W CMUcam4 implementujemy to w sposób, który wymaga tylko jednego przebiegu przez obraz. Podczas przetwarzania pikseli w obrazie CMUcam4 utrzymuje licznik, który śledzi, ile kolejnych pikseli w bieżącym wierszu, przed bieżącym pikselem, mieściło się w granicach śledzonego koloru. Jeśli ta wartość jest wyższa niż wartość filtra szumów, bieżący piksel jest oznaczany jako piksel śledzony.
Czym jest histogram i do czego się przydaje?#
Histogram to rodzaj wykresu, który przedstawia częstość i rozkład danych. W przypadku CMUcam4 histogram pokazuje częstość i rozkład wartości kolorów znalezionych w obrazie. Każdy słupek reprezentuje zakres wartości kolorów dla określonego kanału. CMUcam4 może podzielić możliwe wartości kolorów od 0 do 255 na 1, 2, 4, 8, 16, 32 i 64 różne przedziały (bins). Każdy przedział zawiera liczbę pikseli znalezionych w obrazie, które mieszczą się w pewnych granicach koloru. Duża wartość w jednym konkretnym przedziale oznacza więc, że wiele z tych kolorów znaleziono w obrazie. Każdy histogram reprezentuje tylko jeden wybrany kanał koloru.
Histogramy to sposób abstrahowania zawartości obrazu. Mają wiele zastosowań, takich jak prymitywne rozpoznawanie obiektów, progowanie czy balansowanie kolorów. Są szczególnie przydatne do rozróżniania różnych tekstur. Spróbuj skierować CMUcam4 z wyłączonym automatycznym wzmocnieniem na dwie różnie teksturowane powierzchnie i zauważ różnicę w ich rozkładach kolorów. Efekt ten można wykorzystać do rozróżniania powierzchni podłogi lub wykrywania przeszkód.