Rozpoznawanie obrazów

Z Wikipedii, wolnej encyklopedii
System rozpoznający obiekty wykrył na fotografii/wideo samochód.

Rozpoznawanie obrazu (także: widzenie komputerowe, od ang. computer vision) – przetwarzanie obrazu przez maszynę za pomocą urządzeń zewnętrznych (np. skaner) w opis cyfrowy tegoż obrazu w celu dalszego przetwarzania. Przykładem takiego działania jest OCR czy też OMR. Dalsze przetwarzanie i ostateczna klasyfikacja obrazu częstokroć dokonywana jest przy wykorzystaniu metod inteligencji obliczeniowej.

Wymagania[edytuj | edytuj kod]

Do poprawnego rozpoznania tego, co znajduje się na obrazie wymagana jest wstępna „wiedza”. Człowiek wiedzę potrzebną mu do poprawnego rozpoznawania i rozumienia istoty rzeczy zbiera bezwiednie poprzez całe swoje życie, maszynę zaś trzeba tej wiedzy „nauczyć”. Sam proces uczenia maszyny może w najprostszym przykładzie polegać na utworzeniu odpowiedniej bazy danych zawierającej niezbędne reguły i opis cech przedmiotu. np. że wszystko, co jest niebieskie, jest na 80% niebem, albo każda pionowa kreska może być literą „l”. Wiedza systemu rozpoznającego obrazy powinna zawierać wiedzę ekspercką w danym zakresie oraz informacje empiryczne[1], tj. zbierane na drodze „obcowania” z danym przedmiotem, czyli np. oglądania go pod różnym kątem, w różnym oświetleniu czy też w różnych przypadkach.

Prawdziwy cel[2][edytuj | edytuj kod]

W rozpoznawaniu obrazów bazującym na statystyce naszym celem jest oszacowanie prawdopodobieństwa, czy obiekt, któremu „się przyglądamy” jest tym czy innym obiektem którego opis w postaci wektora cech, bądź też bazowych elementów (podwzorców) połączonych gramatyką, znajduje się wśród wiedzy posiadanej przez nasz system. W związku z tym dążymy do osiągnięcia 100% pewności co do zaklasyfikowania obiektu, jednakże tej 100% pewności nigdy nie osiągamy[1].

Nawet nam ludziom w pewnych warunkach zdarza się nieodpowiednio zaklasyfikować obiekt, czy całą scenę, zwłaszcza gdy wygląda dla nas nietypowo. Bądź też klasyfikujemy obiekty/rzeczy/sceny/zachowania nieporadnie próbując zaklasyfikować je do jednej, czy też nawet kilku różnych klas obiektów które już dobrze znamy (mamy dobrze zakodowane w świadomości lub potrafimy je dobrze scharakteryzować). W ostatnim przypadku po pewnym czasie może wyodrębnić się osobna klasa klasyfikacji obiektu posiadająca mieszankę cech klas z których się wyłoniła.

Błąd klasyfikacji[edytuj | edytuj kod]

Zadaniem twórcy systemu rozpoznawania obrazu jest skonstruowanie takiego algorytmu, który będzie minimalizował błąd klasyfikacji obiektu prezentowanego na obrazie, bądź całego obrazu. Zadanie to nie należy do trywialnych, dlatego zakłada się minimalizację błędu klasyfikacji, a nie całkowite jego wyeliminowanie. W prawdziwym świecie, świecie nie cyfrowym, brakuje odpowiedniej wiedzy o rozkładzie prawdopodobieństwa cech i klas, i jedynie cząstkowe informacje są dostępne, w związku z tym nie sposób jest całkowicie uniknąć błędu, np. człowiek widząc rąbek ubrania jest w stanie rozpoznać co to za ubranie natomiast urządzenie cyfrowe miałoby z tym kłopot.

Ograniczenia narzucane systemowi[edytuj | edytuj kod]

Często aby usprawnić oraz uprościć działanie systemu rozpoznawania obrazów wprowadza się pewne ograniczenia:

  • pytania zadawane systemowi sprowadzają się do zapytań jaki obiekt najprawdopodobniej występuje na obrazie (co najprawdopodobniej przedstawia obraz/scena), a odpowiedzią jest nazwa klasy, która w drodze ewaluacji dostała najwyższą notę prawdopodobieństwa;
  • dane opisujące obiekt przeznaczony do rozpoznania ograniczone są do skończonego zbioru cech.[1]

Klasyfikacja obiektów i rozpoznawanie wzorców[edytuj | edytuj kod]

Jednym z etapów rozpoznawania obrazów jest klasyfikacja obiektu, o którym udało nam się zebrać odpowiednie, niezbędne informacje, do odpowiedniej predefiniowanej przez nas grupy. Np. obiekt, który ma cztery średniej długości proste i cienkie nogi, na których znajduje się prostokątna pozioma płaszczyzna, który także posiada prostopadłą do niej druga płaszczyznę, w większości przypadków zostałby zaklasyfikowany jako krzesło.

W tym momencie możemy powiedzieć, że naszym zadaniem jest na podstawie pozyskanych z obrazu cech obserwowanego obiektu zaklasyfikować go do odpowiedniej klasy obiektów, np. do krzeseł.

Istnieją dwa ogólne podejścia do klasyfikacji obrazów, które to dzieli się na pomniejsze, konkretyzujące sposób rozwiązywania tego problemu.

Podejście pierwsze: decyzyjno-teoretyczne[1][edytuj | edytuj kod]

W podejściu decyzyjno-teoretycznym (ang. decision-theoretical) zakładamy, że nasz wzór/obiekt jest reprezentowany poprzez wektor liczb zwanych wartościami cech. Cechy te możemy wyznaczyć samemu na podstawie wstępnej analizy obiektu, która ma na celu wyłonienie istotnych cech, bądź mogą być ona nam narzucone z góry. Mają one na celu ułatwienie nam jednoznacznego rozpoznania obiektu. Wartości cech mogą pochodzić bezpośrednio z przeprowadzonych pomiarów, próbkowania fali, czy skanowania obrazu w odpowiednim obszarze (zależnie od przypadku). Za pomocą wyznaczonego wektora cech przypisanego do konkretnego obiektu możemy jednoznacznie określić położenie tego obiektu w przestrzeni cech, która ma tyle wymiarów ile liczb zawiera wektor (ile jest cech). Od tego momentu pojmujemy obiekt jako punkt w tak wielowymiarowej przestrzeni cech. Warto nadmienić, że obiekty o zbliżonych cechach będą znajdować się w niewielkiej odległości od siebie, a obiekty o takich samych cechach będą znajdować się w tym samym miejscu w przestrzeni cech.

Przestrzeń cech jest z góry podzielona w taki sposób, aby odpowiednie jej regiony opisywały obiekty jednej klasy, np. krzesła albo niebo. Regiony takie nazywane są obszarami decyzyjnymi i każdy punkt, wyznaczony przez odpowiedni wektor, znajdujący się wewnątrz tego samego obszaru klasyfikowany jest do tej samej grupy/klasy.

Ostatecznie algorytm rozpoznawania wzorców/obrazów mapuje przestrzeń cech do zestawu klas, co jest równoważne podzieleniu przestrzeni cech na obszary decyzyjne zawierające punkty (opisane za pomocą wektorów), które zostały przypisane poprzez algorytm do tej samej klasy.

Podejście drugie: strukturalne (składniowe, lingwistyczne)[1][edytuj | edytuj kod]

W tym przypadku obiekt, tj. wzorzec, opisywany jest za pomocą ogromnej, ale skończonej ilości pod-wzorców/bazowych elementów oraz „gramatykę”, która określa w jaki sposób podwzorce/elementy bazowe budują obiekt. Nie ma więc już w sensie stricto wektora cech zbudowanego z liczb określającego pojedyncze cechy obiektu. W tym podejściu problem rozpoznania obiektu na obrazie sprowadzony jest więc do odpowiedzi na pytanie, czy dany wzór przynależy do języka tworzonego przez zdefiniowaną przez nas gramatykę.

Uczenie[edytuj | edytuj kod]

Uczenie jest sposobem pozyskiwania wiedzy przez system i jest niezbędnym etapem przygotowującym system do rozpoznawania obiektów.

Przygotowanie materiałów uczących[edytuj | edytuj kod]

Częstokroć dane za pomocą których będziemy uczyć system rozpoznawania obiektów wybranej kategorii/klasy poddawane są wstępnej obróbce mającej na celu uproszczenie obrazu do tego stopnia, aby zawierał jedynie minimalną ilość danych niezbędnych do rozpoznania obiektu.

Dane obrazowe[edytuj | edytuj kod]

Obraz stanowiący dane wejściowe dla systemu można poddać odpowiedniej obróbce; np. za pomocą graficznej erozji i dylatacji możliwe jest usunięcie zbędnych kresek w obrazie, lub wypełnienie zbędnych luk (małych plam)[3]. Często także dokonuje się skalowania w dół obrazu. Dajmy na to, fotografię przedstawiająca telewizor można zmniejszyć o 80% i nadal będzie zawierała minimum danych potrzebnych do stwierdzenia, że na danym zdjęciu znajduje się telewizor; wciąż będzie możliwe pozyskanie wiodących kresek z obrazu (np. opisujących zewnętrzne krawędzie telewizora) i innych niezbędnych informacji.

Dane nieobrazowe[edytuj | edytuj kod]

Szkieletyzacja[3][edytuj | edytuj kod]

Przykładowy kształt oraz jego szkielet

Szkieletyzacja (ang. skeletonization) – proces, który umożliwia uzyskanie szkieletu obiektu czyli jego punktów osiowych. Jest to technika o olbrzymim znaczeniu praktycznym w przetwarzaniu obrazów medycznych czy rozpoznawaniu pisma. Przez szkielet rozumiemy zbiór wszystkich możliwych środków maksymalnych okręgów, które można wpisać do wnętrza obiektu (którego krawędzie opisane są przez pewną ilość punktów). Mówiąc inaczej, szkielet to taki zbiór punktów, które znajdują się w jednakowej odległości od co najmniej dwóch krawędzi obiektu. W wyniku operacji szkieletyzacji cały obiekt zostaje zredukowany do zbioru linii o szerokości jednego punktu. Na rysunku obok przedstawiono jedynie trzy z wielu wpisanych w kształt okręgów. Okręgi najlepiej nadają się do wyznaczenia położenia punktu równo odległego od co najmniej dwóch krawędzi obiektu.

Przykłady realnych zastosowań rozpoznawania obrazu[edytuj | edytuj kod]

  • wykrywanie pieszych i pojazdów w systemach monitoringu wideo[4]
  • wykrywanie logo w systemach e-commerce
  • wykrywanie uszkodzeń samochodów dla firm ubezpieczeniowych

Zobacz też[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

  1. a b c d e Zbigniew Huzar, Marek Kurzyński, Jerzy Sas, Rule-based pattern recognition with learning : methodological fundamentals, computer implementation and practical applications in medical diagnosis, 1994, ISBN 83-7085-086-3.
  2. Ryszard Tadeusiewicz, Rozpoznawanie obrazów [online], winntbg.bg.agh.edu.pl [dostęp 2016-06-06].
  3. a b Marcin Denkowski, Paweł Mikołajczak, Przetwarzanie obrazów cyfrowych - laboratorium [online], 4 czerwca 2016.
  4. Real-time video analysis for surveillance and monitoring [online], NeuroSYS [dostęp 2021-04-28] [zarchiwizowane z adresu 2021-04-28] (ang.).

Linki zewnętrzne[edytuj | edytuj kod]