Napisałem program komputerowy, który potrafi wykrywać monety na obrazie statycznym (.jpeg, .png itp.) Przy użyciu standardowych technik wizji komputerowej (rozmycie gaussowskie, progowanie, transformata Hougha itp.). Używając proporcji monet zebranych z danego obrazu, mogę z całą pewnością ustalić, które monety są. Chciałbym jednak dodać do moich poziomów ufności, a także ustalić, czy moneta, którą dedykuję, że jest typu A (ze współczynników promienia), również ma poprawne kolory. Problem polega na tym, że w przypadku monet brytyjskich i in. (miedź, srebro, złoto), odpowiednie kolory (zwłaszcza miedzi do złota) są bardzo podobne.
Mam procedurę, która wyodrębnia średni kolor danej monety w kategoriach „przestrzeni kolorów” RedGreenBlue (RGB) i procedury przekształcania tego koloru w „przestrzeń kolorów” HueSaturationBrightness (HSB lub HSV).
RGB nie jest zbyt przyjemny w pracy przy rozróżnianiu trzech kolorów monet (patrz przykład w załączonym [podstawowym] obrazie). Mam następujące zakresy i typowe wartości kolorów różnych typów monet:
Uwaga: typową wartością tutaj jest wartość wybrana za pomocą „rzeczywistego obrazu w pikselach”.
**Copper RGB/HSB:** typicalRGB = (153, 117, 89)/(26, 0.42, 0.60).
**Silver RGB/HSB:** typicalRGB = (174, 176, 180)/(220, 0.03, 0.71).
**Gold RGB/HSB:** typicalRGB = (220, 205, 160)/(45, 0.27, 0.86)
Najpierw próbowałem użyć „odległości euklidesowej” między danym średnim kolorem monety (używając RGB) a typowymi wartościami dla każdego rodzaju monety podanymi powyżej, traktując wartości RGB jako wektor; dla miedzi mielibyśmy:
gdzie najmniejsza wartość różnicy ( ) powiedziałaby nam, jaki typ będzie prawdopodobnie dana moneta. Ta metoda okazała się bardzo niedokładna.
Próbowałem też po prostu porównać odcień monet z typowymi wartościami typów podanymi powyżej. Chociaż teoretycznie zapewnia to znacznie lepszą „przestrzeń kolorów” do radzenia sobie ze zmiennymi poziomami jasności i nasycenia obrazów, to jednak również nie była wystarczająco dokładna.
Pytanie: Jaka jest najlepsza metoda określenia rodzaju monet na podstawie koloru (na podstawie obrazu statycznego)?
Bardzo dziękuje za twój czas.
Edytuj 1
Uwaga: Wypróbowałem wszystkie omówione poniżej pomysły i osiągnąłem prawie nic. Różnice w warunkach oświetleniowych (nawet na tym samym obrazie) sprawiają, że ten problem jest bardzo trudny i należy go wziąć pod uwagę.
Edycja 2 (Podsumowanie wyniku)
Dziękuję Ci za Twoje odpowiedzi. Dalsze własne badania (w tym twoje odpowiedzi i komentarze) pokazały, jak trudny jest ten problem w ogólnym przypadku arbitralnego oświetlenia, dowolnej kamery (urządzenia mobilnego), wahań koloru monety (nawet dla tego samego gatunku / typu) itd. Najpierw spojrzałem na rozpoznawanie koloru skóry (bardzo aktywna dziedzina badań) jako punkt wyjścia i wciąż istnieje wiele problemów, nawet z rozpoznawaniem koloru skóry dla samych Kaukazów (zobacz ten artykuł, aby przejrzeć obecne techniki), a fakt, że ten problem zawiera trzy różne kolorowe obiekty, z których wszystkie mogą mieć ciągłe i różne chromacje, sprawia, że ten temat wizji komputerowej jest bardzo trudny do sklasyfikowania i odpowiednio sobie z nim poradzić (w rzeczywistości możesz zrobić na nim dobry doktorat !).
Spojrzałem na Metodę Ograniczenia Gamuty z bardzo pomocnego postu DW poniżej. Na pierwszy rzut oka było to bardzo obiecujące jako etap wstępnego przetwarzania obrazu i osobnych monet w kolory niezależne od warunków oświetleniowych. Jednak nawet ta technika nie działa idealnie (i obejmuje bibliotekę obrazów / histogramów dla mapowań - do których nie chcę wchodzić) i nie robi to również o wiele bardziej skomplikowana metodologia architektury sieci neuronowej. W rzeczywistości ten dokument stwierdza w sposób abstrakcyjny, że:
"current machine colour constancy algorithms are not good enough for colour-based
object recognition.".
Nie oznacza to, że nie ma tam o wiele więcej aktualnych artykułów na ten temat, ale nie mogę ich znaleźć i nie wydaje się, aby był to obecnie bardzo aktywny obszar badawczy.
Odpowiedź przez AVB był również pomocny i mam spojrzał na L B * krótko.
"The nonlinear relations for L*, a*, and b* are intended to mimic the nonlinear
response of the eye. Furthermore, uniform changes of components in the L*a*b* colour
space aim to correspond to uniform changes in perceived colour, so the relative
perceptual differences between any two colours in L*a*b* can be approximated by
treating each colour as a point in a three dimensional space."
Z tego, co przeczytałem, transformacja do tej przestrzeni kolorów dla obrazów zależnych od urządzenia będzie trudna - ale przyjrzę się temu szczegółowo (z myślą o jakiejś implementacji), kiedy będę miał trochę więcej czasu.
Nie wstrzymuję oddechu na konkretne rozwiązanie tego problemu i po próbie z L A B * będę zaniedbywał kolor monety i chciałbym sprawdzić moje obecne algorytmy detekcji geometrycznej (dokładna eliptyczna transformacja Hougha itp.).
Dziękuję wam wszystkim. I na koniec do tego pytania, oto ten sam obraz z nowym algorytmem detekcji geometrycznej, który nie ma rozpoznawania kolorów: