Detekcja kodów kreskowych w obrazach za pomocą filtrów gradientowych i transformacji morfologicznych

Podobne dokumenty
Spośród licznych filtrów nieliniowych najlepszymi właściwościami odznacza się filtr medianowy prosty i skuteczny.

Implementacja filtru Canny ego

Filtracja obrazu operacje kontekstowe

Analiza obrazów - sprawozdanie nr 2

Przetwarzanie obrazu

Filtracja obrazu operacje kontekstowe

Segmentacja przez detekcje brzegów

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 8 AiR III

Algorytmy Laplacian of Gaussian i Canny ego detekcji krawędzi w procesie analizy satelitarnych obrazów procesów atmosferycznych.

System rozpoznawania cyfr oparty na histogramie zorientowanych gradientów

Analiza obrazu. wykład 4. Marek Jan Kasprowicz Uniwersytet Rolniczy 2009

Przetwarzanie obrazów wykład 4

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 7 AiR III

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

Detekcja twarzy w obrazie

Parametryzacja obrazu na potrzeby algorytmów decyzyjnych

zna wybrane modele kolorów i metody transformacji między nimi zna podstawowe techniki filtracji liniowej, nieliniowej dla obrazów cyfrowych

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat

Przetwarzanie obrazów rastrowych macierzą konwolucji

Przekształcenia kontekstowe. Filtry nieliniowe Typowy przykład usuwania zakłóceń z obrazu

Filtracja splotowa obrazu

E-I2G-2008-s1. Informatyka II stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

PRZETWARZANIE SYGNAŁÓW

Ćwiczenia z grafiki komputerowej 5 FILTRY. Miłosz Michalski. Institute of Physics Nicolaus Copernicus University. Październik 2015

Rozpoznawanie Twarzy i Systemy Biometryczne

WYKŁAD 7. Obraz z wykrytymi krawędziami: gdzie 1 - wartość konturu, 0 - wartość tła.

Laboratorium. Cyfrowe przetwarzanie sygnałów. Ćwiczenie 11. Filtracja sygnałów wizyjnych

dr inż. Tomasz Krzeszowski

Cyfrowe Przetwarzanie Obrazów i Sygnałów

Zbigniew Sołtys - Komputerowa Analiza Obrazu Mikroskopowego 2016 część 5

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 10 AiR III

Filtracja liniowa (metody konwolucyjne, tzn. uwzględniające pewne otoczenie przetwarzanego piksla):

Cyfrowe przetwarzanie obrazów. Dr inż. Michał Kruk

Metody kodowania wybranych cech biometrycznych na przykładzie wzoru naczyń krwionośnych dłoni i przedramienia. Mgr inż.

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 9 AiR III

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Analiza obrazów. Segmentacja i indeksacja obiektów

maska 1 maska 2 maska 3 ogólnie

Optymalizacja ciągła

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

ALGORYTMY WYKRYWANIA KRAWĘDZI W OBRAZIE

Przetwarzanie obrazu

Grafika Komputerowa Wykład 2. Przetwarzanie obrazów. mgr inż. Michał Chwesiuk 1/38

POB Odpowiedzi na pytania

Rozpoznawanie obrazów na przykładzie rozpoznawania twarzy

Akademia Górniczo - Hutnicza im. Stanisława Staszica w Krakowie. Projekt. z przedmiotu Analiza i Przetwarzanie Obrazów

Zygmunt Wróbel i Robert Koprowski. Praktyka przetwarzania obrazów w programie Matlab

Grafika komputerowa. Dr inż. Michał Kruk

Operacje przetwarzania obrazów monochromatycznych

Metody systemowe i decyzyjne w informatyce

Diagnostyka obrazowa

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

Przetwarzanie obrazu

Detekcja punktów zainteresowania

Rozpoznawanie obiektów z użyciem znaczników

Instalacja. pip install opencv-python. run pip install opencv-contrib-python CZĘŚĆ II

Diagnostyka obrazowa

Segmentacja obrazów cyfrowych z zastosowaniem teorii grafów - wstęp. autor: Łukasz Chlebda

10. Redukcja wymiaru - metoda PCA

Wyższa Szkoła Informatyki Stosowanej i Zarządzania

Elektronika i Telekomunikacja I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Samochodowy system detekcji i rozpoznawania znaków drogowych. Sensory w budowie maszyn i pojazdów Maciej Śmigielski

WSTĘP DO PRZETWARZANIA OBRAZÓW. Jak znaleźć ciekawe rzeczy na zdjęciu? mgr Krzysztof Szarzyński

Raport. Bartosz Paprzycki UMK 2009/2010

Operacje morfologiczne w przetwarzaniu obrazu

Techniki Optymalizacji: Stochastyczny spadek wzdłuż gradientu I

Optymalizacja systemów

Przetwarzanie obrazów. Grupy metod przetwarzania obrazu. Przetwarzanie jednopunktowe. Przetwarzanie jednopunktowe. Przetwarzanie jednopunktowe

Transformata Fouriera i analiza spektralna

Przetwarzanie obrazów wykład 7. Adam Wojciechowski

Szacowanie wartości monet na obrazach.

Rok akademicki: 2017/2018 Kod: RIA s Punkty ECTS: 2. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Metody komputerowego przekształcania obrazów

Politechnika Świętokrzyska. Laboratorium. Cyfrowe przetwarzanie sygnałów. Ćwiczenie 8. Filtracja uśredniająca i statystyczna.

ANALIZA SEMANTYCZNA OBRAZU I DŹWIĘKU

PROJECT OF FM TUNER WITH GESTURE CONTROL PROJEKT TUNERA FM STEROWANEGO GESTAMI

Transformata Fouriera

WOJSKOWA AKADEMIA TECHNICZNA

Laboratorium Cyfrowego Przetwarzania Obrazów

PRZEWODNIK PO PRZEDMIOCIE

Automatyka i Robotyka II stopień ogólno akademicki

Proste metody przetwarzania obrazu

Deskryptory punktów charakterystycznych

OPERACJE MORFOLOGICZNE NA OBRAZACH W ODCIENIACH SZAROŚCI ZASTOSOWANIE NA POTRZEBY WIZJI KOMPUTEROWEJ

Przekształcenia widmowe Transformata Fouriera. Adam Wojciechowski

Komputerowe obrazowanie medyczne

KARTA PRZEDMIOTU. W5/1;W16/1 W5 Zna podstawowe metody przetwarzania wstępnego EP WM K_W9/3; obrazów barwnych.

i ruchów użytkownika komputera za i pozycjonujący oczy cyberagenta internetowego na oczach i akcjach użytkownika Promotor: dr Adrian Horzyk

Projekt 2: Filtracja w domenie przestrzeni

CECHY BIOMETRYCZNE: ODCISK PALCA

WYKŁAD 9 METODY ZMIENNEJ METRYKI

WYBÓR PUNKTÓW POMIAROWYCH

Cyfrowe Przetwarzanie Obrazów i Sygnałów

SYSTEM WIZYJNY ROBOTA KLASY LINEFOLLOWER

Metoda określania pozycji wodnicy statków na podstawie pomiarów odległości statku od głowic laserowych

Politechnika Świętokrzyska. Laboratorium. Przetwarzanie obrazów medycznych. Ćwiczenie 5. Filtracja kontekstowa obrazów.

Laboratorium Przetwarzania Sygnałów

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

Obliczenia Naukowe. Wykład 12: Zagadnienia na egzamin. Bartek Wilczyński

Transkrypt:

ZACNIEWSKI Artur 1 Detekcja kodów kreskowych w obrazach za pomocą filtrów gradientowych i transformacji morfologicznych WSTĘP Kod kreskowy (ang. barcode) to graficzna reprezentacja informacji, w postaci kombinacji ciemnych i jasnych elementów (najczęściej prostokątów lub innych dwuwymiarowych figur). Każdy kod można scharakteryzować poprzez jego wymiary, zbiór kodowanych znaków, algorytm obliczania sumy kontrolnej itp. Kod kreskowy odczytywany jest przy pomocy specjalnych urządzeń (tzw. czytników), a jego główną rolą jest automatyczna identyfikacja produktu, na którym jest umieszczony. Stosowany jest z powodzeniem w szeroko rozumianej logistyce [6]. Przegląd metod stosowanych w detekcji kodów kreskowych, wraz z porównaniem wydajności zastosowanych algorytmów przedstawiono w [2]. Dokonano analizy algorytmów detekcji kodów, które znajdowały się w różnych położeniach (orientacjach kątowych), były zaszumione lub też liczba kodów kreskowych była większa niż jeden. W artykule [2] pokazano, że nie istnieje metoda, która pozwalałaby wykryć kod kreskowy w każdym z wymienionych przypadków, aczkolwiek wybór odpowiedniej metody w zależności od sytuacji pozwala na niemal optymalną detekcję. W poniższym artykule przedstawiono algorytm detekcji kodów kreskowych za pomocą wybranych filtrów gradientowych i operacji morfologicznych, stosowanych w cyfrowym przetwarzaniu obrazu. Przeprowadzono badania, których celem była realizacja detekcji kodu kreskowego z wybranych obrazów. Do implementacji przedstawionego algorytmu użyto biblioteki OpenCV. 1. FILTRY GRADIENTOWE Detekcja krawędzi to bardzo ważny element analizy obrazu. Często wystarczające jest otrzymanie obrazu w formie wyróżnionych krawędzi, co pozwala na przeprowadzenie jego logicznej interpretacji. Krawędź jest granicą między dwoma regionami o różnych odcieniach jasności, czyli przejścia między regionami mogą być określone na podstawie różnic odcieni szarości pikseli z różnych regionów [3]. U podstaw większości technik wykrywania krawędzi leży idea porównywania lokalnych pochodnych. Pierwsza pochodna może służyć do stwierdzenia obecności krawędzi w obrazie, natomiast druga pochodna pozwala stwierdzić, czy piksel krawędzi leży po stronie ciemnej czy jasnej krawędzi. Cechy te predestynują użycie pochodnych w procesie detekcji kodu kreskowego [1][3]. Gwałtowna zmiana funkcji jasności wyznacza krawędź, stąd do wydzielenia jej z obrazu stosuje się metody gradientowe. Duża wartość gradientu funkcji jasności w danym punkcie wskazuje, że jest to punkt krawędzi [1][3]. Gradient funkcji jasności obrazu f ( x, w punkcie ( x, dany jest wzorem: Gx f (2.1) Gy Wektor gradientu (2.1) wygodnie opisuje się za pomocą modułu i kąta (czyli kierunku wektora gradientu): f G ( x, arg( G x / G x y 2 ) 2 G ( x, y G G x y (2.2) 1 Akademia Marynarki Wojennej w Gdyni, Wydział Nawigacji i Uzbrojenia Okrętowego; 81-103 Gdynia; ul. Śmidowicza 69, Tel/fax: + 48 58 626-27-78, a.zacniewski@amw.gdynia.pl 6914

Należy pamiętać, że położenie konturu jest zawsze prostopadłe do wektora gradientu, co oznacza, że kąt konturu jest przesunięty w stosunku do obliczonego kąta gradientu o -/+ 90 o. Istnieje wiele metod obliczania gradientu. Ze względu na prostotę implementacji i szerokie zastosowanie, do wyznaczenia składowych gradientu na potrzeby artykułu wybrano operatory gradientu Sobela i Scharra [1][3]. 1.1 Operator Sobela Operator Sobela oblicza aproksymację gradientu funkcji jasności obrazu. Kierunek gradientu określa się za pomocą maski, która daje największą wartość. Na rysunku 2.1 przedstawiono operatory Sobela, które są względem siebie obrócone o 90 o. Należy zauważyć, że wszystkie współczynniki maski sumują się do zera, co jest oczekiwanym efektem w przypadku operatora różniczkowego. -1-2 -1-1 0 1 0 0 0-2 0 2 1 2 1-1 0 1 Rys. 2.1. Operatory Sobela w postaci masek 3x3 [2][4] Aby obliczyć gradient należy obliczyć pochodne G i x Gy poprzez realizację splotu obrazu I z tzw. jądrem (ang. kernel), utworzonym na podstawie ww. maski: 1 0 1 dla zmian poziomych: G x 2 0 2 * I 1 0 1 (2.3) 1 2 1 dla zmian pionowych: G y 0 0 0 * I 1 2 1 (2.4) 1.2 Operator Scharra Wadą operatora Sobela jest to, że w niektórych zastosowaniach dla rozmiarów maski 3x3, uzyskiwane wyniki są za mało dokładne. Dla masek o takim rozmiarze zaleca się stosowanie filtrów Scharra, które są tak samo szybkie jak filtry Sobela, ale nie powodują wystąpienia ww. niedogodności [1]. Na rysunku 2.3 przedstawiono operator Scharra w postaci maski 3x3. -3-10 -3-3 0 3 0 0 0-10 0 10 3 10 3-3 0 3 Rys. 2.3. Operatory Scharra w postaci masek 3x3 [1] 1.3 Rozmiar maski Na rysunku 2.2 przedstawiono poszczególne składowe gradientu dla wybranego obrazu, otrzymane po zastosowaniu operatora Sobela, dla masek 3x3 oraz 5x5. Należy zauważyć, że im mniejszy rozmiar maski (szczególnie jest to widoczne na przykładzie masek o rozmiarze 2x2, tzw. operatorach Robertsa) tym większa wrażliwość na szumy. Większy rozmiar jądra pozwala na lepszą aproksymację 6915

pochodnej, przede wszystkim ze względu na większa liczbę pikseli branych pod uwagę przy obliczeniach [1][3]. a) b) c) d) e) Rys. 2.2. Filtrowanie przy użyciu operatora Sobela: a) oryginalny obraz, b) maska pozioma 5x5, c) maska pionowa 5x5, d) maska pozioma 3x3, e) maska pionowa 3x3 [opracowanie własne] 2. BADANIA Celem badań była detekcja kodu kreskowego z wybranych produktów, przy pomocy filtrów gradientowych oraz wybranych operacji przetwarzania obrazów. Rysunek 2.3 przedstawia obraz produktu spożywczego, na którym znajduje się kod kreskowy oraz jego wersja w skali szarości, na której będą dokonywane dalsze operacje. Poniżej przedstawiono poszczególne kroki zastosowanego algorytmu wraz z rezultatami otrzymanymi po każdym z etapów. 2.1 Obliczenie składowych wektora gradientu w kierunku poziomym i pionowym W celu realizacji dalszych kroków algorytmu konieczne jest obliczenie składowych wektora gradientu w obu kierunkach. Na rysunku 2.4 przedstawiono uzyskane obrazy. Zastosowano filtr Scharra o rozmiarze maski 3x3. 6916

a) b) Rys. 2.3. Badany produkt: a) oryginalny obraz, b) obraz w skali szarości [opracowanie własne] a) b) Rys. 2.4. Składowe wektora gradientu: a) składowa G x, b) składowa G y [opracowanie własne] 2.2 Różnica składowych wektora gradientu W kolejnym etapie algorytmu dokonywana jest operacja odjęcia składowej G y od G x wektora gradientu w celu ujawnienia obszaru, w którym znajduje się kod kreskowy. Po zastosowaniu ww. działania na przetworzonym obrazie pozostają rejony z wysokim gradientem poziomym i niskim gradientem pionowym. Rezultat przedstawiono na rysunku 2.5.a. 2.3 Wygładzenie obrazu i progowanie W celu usunięcia szumu wysokiej częstotliwości z gradientowej reprezentacji obrazu zastosowano uśrednianie przy pomocy znormalizowanego filtra o wymiarach 9x9. Oprócz usunięcia wspomnianego szumu, kolejnym rezultatem jest rozmycie (ang. blur) krawędzi. Następnie wszystkie piksele, których wartość funkcji jasności jest mniejsza od założonej wartości progowej (w tym przypadku było to 225) ustawiane są na wartość 0, czyli na czarny kolor. Na rysunku 2.5.b przedstawiono obraz po zastosowaniu wygładzenia i progowania [1][5]. 6917

a) b) Rys. 2.5. Kolejne etapy przetwarzania obrazu: a) zobrazowanie różnicy składowych wektora gradientu, b) wygładzenie przetwarzanego obrazu [opracowanie własne] 2.4 Zastosowanie transformacji morfologicznych Należy zauważyć, że między pionowymi paskami kodu mogą pojawić się przerwy (ang. gaps). Zależy to m.in. od rodzaju badanego kodu oraz parametrów użytych metod. Aby pozbyć się tych obszarów można zastosować morfologiczną operację zamykania (ang. closing), której celem jest usunięcie wybranych małych obszarów. Transformacja ta realizowana jest poprzez wykonanie dwóch innych transformacji morfologicznych w wymienionej kolejności: a) operacji dylatacji (ang. dilation), która realizowana jest poprzez splot obrazu z jądrem o teoretycznie dowolnym kształcie i rozmiarze (w tym przypadku jest to prostokąt o ustalonych wymiarach, dopasowanych do obszaru poszukiwanego kodu). Celem transformacji jest rozszerzenie zasięgu jednego obszaru względem drugiego. a) b) Rys. 2.6. Kolejne etapy przetwarzania obrazu:a) operacja zamykania, b) obraz po serii dylatacji i erozji [opracowanie własne] b) operacji erozji (ang. erosion), która w literaturze przedmiotu często nazywana jest siostrą dylatacji. Jej celem z kolei jest zawężenie zasięgu jednego obszaru względem drugiego [1][4]. Na rysunku 2.6.a przedstawiono rezultat zastosowania operacji zamykania na przetwarzanym obrazie. Nie wszystkie niepożądane obszary zostały usunięte, dlatego zastosowano serię dylatacji i erozji. Pierwsza z nich ma za zadanie usunąć białe piksele (lub niewielkie obszary białych pikseli), natomiast druga operacja pozwala rozszerzyć obszar białych pikseli, które pozostały. Rezultat 6918

przedstawiono na rysunku 2.6.b. W przypadku powodzenia ww. operacji, obszary które zostały usunięte podczas erozji nie pojawią się już podczas dylatacji [1][3]. Jeżeli kolejne kroki algorytmu przebiegły pomyślnie, ostatnim etapem jest znalezienie największego konturu w przetwarzanym obrazie. Należy określić tzw. pole ograniczenia (ang. boundingbox), które pozwoli na skuteczne wskazanie poszukiwanego kodu kreskowego. Efekt końcowy działania algorytmu przedstawiono na rysunku 2.7.a. Udana realizacja algorytmu dla innego obrazu przedstawiona została na rysunku 2.7.b. Omówiony algorytm nie zawsze jednak jest skuteczny. Na rysunkach 2.7.c i 2.7.d przedstawiono efekt działania algorytmu dla innego obrazu z kodem kreskowym i z identycznymi parametrami. W tym przypadku obszar występowania kodu kreskowego nie został wskazany właściwie. a) b) c) d) Rys. 2.7. Detekcja kodu kreskowego: a, b) realizacje prawidłowe, c, d) realizacje nieprawidłowe [opracowanie własne] WNIOSKI Opisana metoda detekcji kodu kreskowego w przetwarzanym obrazie jest stosunkowo prosta, dlatego nie zawsze możliwe jest uniknięcie błędów. W algorytmie założona jest gradientowa reprezentacja obrazu, stąd może mieć on zastosowanie tylko do odpowiednio usytuowanego kodu kreskowego. Istnieje szereg sposobów na poprawę skuteczności opisywanego algorytmu. Na pewno wart rozważenia jest wybór innego filtru (np. filtru Gaussa lub medianowego) w celu wygładzenia obrazu lub zmiana wybranych parametrów filtrów i funkcji użytych w czasie detekcji kodu. Aczkolwiek te proste zabiegi mogą okazać się niewystarczające. Interesującym i bardziej prawdopodobnym sposobem na poprawę detekcji kodu kreskowego jest zastosowanie technik uczenia maszynowego (ang. Machine Learning) takich jak histogram 6919

zorientowanych gradientów HOG (ang. Histogram of OrientedGradients) w połączeniu z klasyfikatorem SVM lub kaskady Haara [4][5]. Pokazany algorytm może stanowić podstawę do dalszych badań dotyczących detekcji kodów kreskowych z wykorzystaniem filtrów gradientowych i transformat morfologicznych. Streszczenie W artykule przedstawiono krótką charakterystykę kodów kreskowych. Omówiono gradient funkcji jasności i sposoby jego wyznaczania, a także wybrane filtry gradientowe stosowane w cyfrowym przetwarzaniu obrazów, takie jak operator Sobela i operator Scharra. Pokazano ich praktyczne zastosowanie w procesie detekcji kodu kreskowego, umieszczonego na obrazie wybranego produktu. Przedstawiony został algorytm, który pozwala na wykrycie obszaru, w którym znajduje się kod kreskowy. Omówiono praktyczne działanie wybranych transformacji morfologicznych, takich jak dylatacja, erozja i zamknięcie w kontekście realizacji poszczególnych kroków algorytmu. Wskazane zostały wady i zalety zastosowanej metody oraz pokazano możliwości poprawy i rozwoju algorytmu detekcji kodów kreskowych poprzez użycie bardzie zaawansowanych technik uczenia maszynowego. Słowa kluczowe: filtry gradientowe, transformaty morfologiczne, cyfrowe przetwarzanie obrazów. Detection of barcodes in images with gradient filters and morphology transformations Abstract In the article a brief description of barcodes was presented. Luminosity function gradient and ways of its determination were discussed, as well as selected gradient filters used in digital image processing, such as Sobel operator and the Scharr operator. Their practical application in the detection of bar code stamped on the product image was shown. The algorithm which can detect the area of the barcode was presented. The practical effect of the selected morphological transformation, such as dilation, erosion and closing in the context of the individual steps of the algorithm was discussed. Advantages and disadvantages of the used method were presented. Also ways to improve and develop of barcode detection algorithm by using of more advanced machine learning techniques were discussed. Keywords: gradient filters, morphology transforms, digital images processing. BIBLIOGRAFIA 1. G. Bradski, A. Kaehler, Learning OpenCV, O Reilly, Sebastopol, 2008. 2. R. Maini, S. Kaur, Implementation of Barcode Localization Technique using Morphological Operations, International Journal of Computer Applications, Volume 97 No.13, July 2014, pp. 42-47. 3. W. Malina, M. Smiatacz, Cyfrowe przetwarzanie obrazów, Akademicka Oficyna Wydawnicza EXIT, Warszawa, 2012. 6. OpenCV, http://docs.opencv.org/, oficjalna dokumentacja biblioteki OpenCV, dostęp luty 2015. 7. R. Woods, R. Gonzalez, Digital Image Processing, Pearson, 2010. 8. C. Zhang, J. Wang, S. Han, Automatic Real-Time Barcode Localization in Complex Scenes,Proceedings of the International Conference on Image Processing, ICIP 2006, October 8-11, Atlanta, Georgia, USA. 6920