KursyPoradnikiInspirujące DIYForum

Detekcja koloru obiektów

Detekcja koloru obiektów

Pomiar koloru obiektu to ciekawe zagadnienie, jednak nie należy do zadań łatwych.

W tym artykule przybliżyłem problem detekcji koloru oraz możliwości konstrukcji własnego lub zastosowania gotowego czujnika koloru.

O czym w artykule?

Zacznę od najprostszej konstrukcji monochromatycznego czujnika koloru wykrywającego intensywność jako nasycenie określonego koloru. W tym przypadku będzie to kolor niewidoczny dla ludzkiego oka – podczerwony (IR). Dalej wyjaśnię trochę teorię rozkładania koloru na składowe. Przedstawię dwie konstrukcje czujników koloru. Na koniec zwrócę uwagę na istotne trudności związane z detekcją koloru. Mam nadzieję, że artykuł zachęci Was do wyposażania swoich robotów w opisywane czujniki.

W chwili obecnej na portalu jest opisany tylko jeden robot wyposażony w czujnik koloru… ale czy na pewno… ?

Najprostszym detektorem koloru jest pojedynczy czujnik linii linefollowera. Służy on do wykrycia koloru obiektu (podłoża) nad którym się znajduje. Czujnik linii można więc nazwać monochromatycznym detektorem koloru. Jak więc działa czujnik linefollowera i jak rozszerzyć jego działanie na detekcję dowolnego koloru?

Czujnik składa się z dwóch elementów oświetlacza i detektora. Rolę oświetlacza spełnia dioda (najczęściej podczerwona - IR). Dioda IR emituje światło podczerwone (monochromatyczne) w stronę obiektu, część promieniowania odbija się. W zależności od współczynnika światła odbitego do pochłoniętego, zależnego od koloru obiektu, do detektora dociera więcej lub mniej światła odbitego. Określona wielkość elektryczna detektora (rezystancja dla fotorezystora lub otwarcie złącza P-N dla fotodiody lub fototranzystora) jest zależna od oświetlenia powierzchni czynnej detektora. Na tej podstawie można określić jasność obiektu dla długości fali, jaką generuje emiter. Czujnik linii jest zatem detektorem intensywności określonego koloru obiektu gdzie badany kolor zależny jest od koloru emitera (najczęściej IR).

Metody detekcji kolorów

Określenie koloru obiektu jest trochę bardziej skomplikowane. Należy wybrać model koloru tzn. opisać sposób określania koloru. Najpopularniejsze modele koloru opisane są za pomocą modelu przestrzennego CIE XYZ opracowanego w 1931r. przez organizację CIE. Dwuwymiarowy model jest bardzo popularny wśród grafików komputerowych i ludzi zajmujących się cyfrowym przetwarzaniem obrazów, model ten jest przedstawiony poniższym rysunku.

model barw

Dwuwymiarowy model CIE XYZ [2].

Na bazie modelu CIE opracowano dwa podstawowe modele koloru to RGB (stosowany w urządzeniach wyświetlających) i CMY (stosowany w urządzeniach drukujących). Związane są one z dwoma typami mieszania koloru. W obydwu przypadkach kolor obiektu opisany jest za pomocą trzech składowych o wypełnieniu każdego od 0 do 100%. Co jednak różni te dwa modele?

Model RGB (Red-Green-Blue – czerwony-zielony-niebieski) związany jest z addytywnym mieszaniem koloru. W wyniku zmieszania wszystkich składowych, każdej w 100%, otrzymuje się kolor biały.

Model RGB

Model RGB

Jest on wykorzystywany w urządzeniach wyświetlających takich jak monitory czy telewizory.
Model CMY (Cyan-Magneta-Yellow – cyjan-magneta-żółty) związany jest z substrakcyjnym mieszaniem kolorów. W wyniku zmieszania wszystkich składowych, każdej w 100%, otrzymuje się kolor prawie czarny. Model ten stosowany jest w urządzeniach drukujących, aby drukarki kolorowe mogły drukować kolor czarny wymagana jest dodatkowa kaseta zawierająca kolor czarny – model ten to CMYK (K – Black – czarny).

model_cmyk

Model CMY

Czujniki koloru

W detekcji koloru przyjmuje się model koloru RGB, ponieważ to kolor biały powoduje maksymalne odbicie wszystkich składowych koloru i najwięcej światła odbitego trafia do detektora.

A) Można oświetlać obiekt światłem białym i nałożyć na detektor filtry RGB. W takim przypadku proces pomiaru można zrównoleglić, jeśli mamy trzy detektory. W przypadku posiadania jednego detektora należy przełączać filtry.

detektorkoloru1B) W drugim przypadku można wykorzystać trójkolorowe źródło światła i jeden detektor. W tym przypadku pomiar każdej składowej musi być dokonywany osobno.

detektorkoloru2

Domowa metoda konstrukcji czujnika koloru

Najprostszą metodą pomiaru składowych koloru jest wykorzystanie diody RGB oraz fotorezystora. Całość należy zabezpieczyć przed dostępem światła zewnętrznego. Pomiar składowej koloru polega na pomiarze rezystancji fotorezystora lub napięcia fototranzystora (lub fotodiody) przy oświetleniu obiektu pojedynczym źródłem światła: czerwonym lub zielonym lub niebieskim, i odniesieniu do rezystancji przy braku oświetlenia (tzw. rezystancja ciemna). W przypadku wykorzystania, jako sterownika, mikrokontrolera – rezystancję można mierzyć w układzie rezystancyjnego dzielnika napięcia, za pomocą przetwornika ADC lub w układzie czasowym rc (w językach basicowych jest to komenda getrc lub rctime). W drugim przypadku ważna jest stabilność parametrów kondensatora – zwykły elektrolit najprawdopodobniej nie sprawdzi się.

Czujnik prefabrykowany TCS3200

Scalony detektor koloru TCS3200 składa się z oświetlacza koloru białego oraz matrycy fotoelementów, na których nałożone są filtry RGB. Sygnał wyjściowy to sygnał częstotliwościowy, zoptymalizowany do współpracy z mikrokontrolerami. Zasada pomiaru to zliczanie liczby impulsów w określonym przedziale czasu – im więcej impulsów tym więcej światła dotarło do detektora. Zaletą tego czujnika jest duża dokładność i powtarzalność pomiarów. Detektor pracuje szeregowo tzn. każdą składową mierzy się osobno.

Scalony czujnik TCS3200 posiada matrycę szesnastu fotoelementów w układzie 4x4. Matryca jest podzielona na cztery sektory, na trzy z nich nałożone są filtry RGB, czwarty sektor nie posiada żadnego filtra czyli umożliwia pomiar sumaryczny. Cztery wejścia konfiguracyjne S0 – S3 przełączają między sektorami matrycy (S2 i S3) oraz ustawiają dzielnik częstotliwości sygnału wyjściowego (S0 i S1) w celu dopasowania do częstotliwości próbkowania mikrokontrolera współpracującego z czujnikiem.

Scalony detektor koloru TCS3200:

Podsumowanie

Na zakończenie zostawiłem dwie informacje o których należy pamiętać przy konstruowaniu czujników koloru.

Elementy światłoczułe mają charakterystykę zależną od długości fali (tzn. koloru), nazywa się to charakterystyką widmową (spektralną) czujnika. Przykładowa charakterystyka przedstawiona jest poniżej.

kolor_charakterystyki

Odczytane wartości dla koloru białego będą różniły się od siebie.Należy o tym pamiętać w trakcie każdego pomiaru lub tak skalibrować czujnik, aby zneutralizować wpływ charakterystyki spektralnej. Przykład kalibracji podany jest w nocie katalogowej czujnika TCS3200. Wartość każdej składowej jest mierzona przez inny przedział czasu są to stałe pRED, pGREEN, pBLUE podane w przykładowym listingu zawartym w nocie czujnika [5] (przypominam, że czujnik ma wyjście częstotliwościowe).

Drugą istotną sprawą jest tłumienie i rozpraszanie wiązki światła. Jeżeli pomiar wykonywany jest przy zmiennej odległości obiektu od czujnika, im obiekt jest dalej tym zmierzone wartości są mniejsze. Jednak pewna wartość pozostaje stała – jest to udział procentowy każdej składowej koloru. Aby wyliczyć udział procentowy składowej należy posłużyć się wzorem (przykład dla składowej czerwonej - R):

barwy_wzor

gdzie:
R% - procentowa wartość składowej czerwonej,
Rzm, Gzm, Bzm – zmierzona wartość składowej odpowiednio czerwonej, zielonej, niebieskiej,
S – suma składowych zmierzonych.

Drugą trudnością przy zmiennej odległości między czujnikiem a obiektem jest zakres odległości z jakiej może być dokonywany pomiar. Dla obiektów ciemnych zakres ten jest mniejszy, niż dla obiektów jasnych. Wiąże się to z mniejszą ilością światłą odbitego trafiającego do detektora. Można powiedzieć, że zakres pomiarowy czujnika dla danego koloru to zakres odległości, w którym udział składowych procentowych jest stały. Wyjście poza zakres można poznać, jeżeli najmniejsza składowa koloru nagle zaczyna rosnąć lub osiąga wartość zero.

Na zakończenie chciałbym wyjaśnić jedną nieścisłość jaką można zauważyć w tekście. Kolor biały dla modelu RGB powstaje ze zmieszania trzech składowych, każdej z wypełnieniem 100% - sumarycznie otrzymujemy więc kolor o wypełnieniu 300% - skąd to się bierze? Intensywność każdej składowej opisana jest inną zmienną, każda zmienna jest niezależna od pozostałych. W zależności od typu zastosowanych zmiennych (bajt, Word, itp.) inny jest ich zakres. Załóżmy, że stosujemy zmienne typu bajt (0-255). Kolor biały uzyskuje się ze zmieszania wszystkich składowych w 100% ich udziału czyli 255R + 255G + 255B = biały. W przypadku innych, lecz jednakowych wartości składowych uzyskujemy odcienie szarości. W przypadku 0R + 0G + 0B = czarny.

[1] http://www.fizyka.umk.pl/~milosz/PSPiZK/graf/kolor.html
[2] http://www.forum.high-heels.com.pl/index.php?topic=318.0
[3] http://www.parallax.com
[4] http://www.taosinc.com/Productfamily.aspx?id=5&SD=cs
[5] http://www.parallax.com/Portals/0/Downloads/docs/prod/acc/TCS3200_doc.pdf
[6] Zrobotyzowany system do sortowania elementów kolorowych z wykorzystaniem robota Lynx 6. Instrukcja do ćwiczenia laboratoryjnego z przedmiotu Roboty i Manipulatory

barwy, cmy, cmyk, kolory, rgb, TCS3200

Trwa ładowanie komentarzy...