Komputerowe rozpoznawanie obrazów przechodzi dziś fazę burzliwego rozwoju. Przyczyniają się do tego ogromna popularność cyfrowych aparatów fotograficznych, wielka liczba grafik zgromadzonych w obszernych internetowych bazach danych, a przede wszystkim coraz doskonalsze algorytmy przetwarzania obrazu. W rozwijaniu tej technologii wielką rolę odegrała biblioteka OpenCV , usprawniając pracę setek tysięcy ludzi. OpenCV 3.x ułatwia efektywne rozwijanie projektów dzięki opartej na języku C++ spójnej architekturze, która doskonale działa na wielu platformach.
Ta książka, przeznaczona dla osób znających język C++ , jest praktycznym wprowadzeniem do otwartej biblioteki OpenCV w wersji 3.x . Zawiera też podstawowe informacje na temat komputerowego rozpoznawania obrazu, co powinno ułatwić efektywne posługiwanie się tą biblioteką. Sama biblioteka OpenCV została przedstawiona w sposób umożliwiający bardzo szybkie rozpoczęcie pracy. Książka ułatwia naturalne zrozumienie działania algorytmów, dzięki czemu projektowanie i debugowanie aplikacji nie powinno sprawiać problemów. W ten sposób książka ta staje się świetnym przygotowaniem do zgłębienia bardziej zaawansowanych zagadnień komputerowego rozpoznawania obrazu i uczenia maszynowego.
Najważniejsze zagadnienia:
Przegląd biblioteki OpenCV i zawarte w niej funkcje
Praca z plikami obrazów, filmów i danych oraz przekształcanie obrazów
Ważniejsze algorytmy do pracy na obrazach
Punkty kluczowe: wykrywanie i filtrowanie
Trójwymiarowe widzenie, ruch, określanie pozycji
Uczenie maszyn w OpenCV
OpenCV: poznaj i stosuj algorytmy przetwarzania obrazów!
Adrian Kaehler jest naukowcem i założycielem start-upów. Zajmuje się uczeniem maszynowym, modelowaniem statystycznym i komputerowym rozpoznawaniem obrazu. Pracuje w Intel Corporation i w Laboratorium Sztucznej Inteligencji Uniwersytetu Stanforda. Współzakładał Silicon Valley Deep Learning Group.
Gary Rost Bradski jest naukowcem i konsultantem. Zajmuje się robotyką, uczeniem maszynowym i komputerowym rozpoznawaniem obrazów. Pracuje w Laboratorium Sztucznej Inteligencji Uniwersytetu Stanforda. Współtworzył takie biblioteki jak Open Source Computer Vision Library, Machine Learning Library i Probabilistic Network Library (PNL).
Znajdź podobne książki
Ostatnio czytane w tej kategorii
Darmowy fragment publikacji:
Tytuł oryginału: Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library
Tłumaczenie: Łukasz Piwko
ISBN: 978-83-283-1656-0
© 2018 Helion S.A.
Authorized Polish translation ofthe English edition of Learning OpenCV 3, ISBN 9781491937990 ©
2017 Adrian Kaehler, Gary Bradski
This translation is published and sold by perrnission of O Reilly Media, Inc., which owns or controls all
rights to publish and sell the same.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any
means, electronic or mechanical, including photocopying, recording or by any information storage
retrieval system, without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje
były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za
związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo
HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe
z wykorzystania informacji zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Pliki z przykładami omawianymi w książce można znaleźć pod adresem:
ftp://ftp.helion.pl/przyklady/opencv.zip
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/opencv
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
• Kup książkę
• Poleć książkę
• Oceń książkę
• Księgarnia internetowa
• Lubię to! » Nasza społeczność
Spis treści
Wstęp ....................................................................................................................... 15
Przeznaczenie książki ...................................................................................................................15
Adresaci książki .........................................................................................................................16
Czym nie jest ta książka ............................................................................................................17
O przykładowych programach ....................................................................................................17
Warunki .........................................................................................................................................17
Jak najlepiej korzystać z tej książki .............................................................................................18
Konwencje typograficzne .............................................................................................................19
Podziękowania ..............................................................................................................................20
Podziękowania za pomoc przy tworzeniu biblioteki OpenCV ...........................................20
Podziękowania za pomoc przy pisaniu książki .....................................................................21
Kilka słów od Adriana ..............................................................................................................21
Kilka słów od Gary’ego .............................................................................................................22
1. Wprowadzenie .......................................................................................................... 25
Czym jest OpenCV? .....................................................................................................................25
Kto używa biblioteki OpenCV? ..................................................................................................26
Czym jest komputerowe rozpoznawanie obrazu? ....................................................................27
Pochodzenie biblioteki OpenCV ................................................................................................30
Schemat blokowy OpenCV ......................................................................................................31
Przyspieszanie działania biblioteki OpenCV za pomocą IPP .............................................32
Do kogo należy OpenCV? ........................................................................................................33
Pobieranie i instalowanie OpenCV ............................................................................................33
Instalacja .....................................................................................................................................34
Pobieranie najnowszej wersji OpenCV przez Git ....................................................................36
Kompletna dokumentacja OpenCV ...........................................................................................37
Dokumentacja dołączona do biblioteki .................................................................................37
Dokumentacja internetowa i strona wiki ..............................................................................37
Repozytorium kodu od społeczności .........................................................................................39
Pobieranie i kompilowanie modułów z repozytorium opencv_contrib ...........................40
Przenośność ...................................................................................................................................40
Podsumowanie ..............................................................................................................................41
Ćwiczenia .......................................................................................................................................42
3
Poleć książkęKup książkę2. Wprowadzenie do OpenCV ......................................................................................... 43
Pliki dołączane .............................................................................................................................. 43
Zasoby ........................................................................................................................................ 44
Pierwszy program — wyświetlanie obrazu ............................................................................... 44
Drugi program — wideo ............................................................................................................. 47
Przegląd ......................................................................................................................................... 48
Prosta transformacja .................................................................................................................... 52
Trochę bardziej skomplikowana transformacja ....................................................................... 53
Dane z kamery .............................................................................................................................. 55
Zapisywanie w pliku AVI ............................................................................................................ 56
Podsumowanie ............................................................................................................................. 57
Ćwiczenia ...................................................................................................................................... 58
3. Typy danych OpenCV ................................................................................................. 59
Wiadomości podstawowe ........................................................................................................... 59
Typy danych OpenCV ................................................................................................................. 59
Przegląd podstawowych typów danych ................................................................................. 60
Typy podstawowe — szczegóły ............................................................................................... 61
Obiekty pomocnicze ................................................................................................................ 68
Funkcje pomocnicze ................................................................................................................ 75
Struktury szablonowe ............................................................................................................... 81
Podsumowanie ............................................................................................................................. 82
Ćwiczenia ...................................................................................................................................... 83
4. Obrazy i duże typy tablicowe ..................................................................................... 85
Pamięć dynamiczna i zmienna ................................................................................................... 85
Klasa cv::Mat — n-wymiarowe tablice gęste ......................................................................... 85
Tworzenie tablicy ...................................................................................................................... 86
Indywidualny dostęp do elementów tablicy ......................................................................... 90
N-arny iterator tablicowy — NAryMatIterator .................................................................... 93
Dostęp do elementów tablicy według bloków ...................................................................... 95
Wyrażenia macierzowe — algebra i klasa cv::Mat ............................................................... 97
Rzutowanie nasyceniowe ......................................................................................................... 98
Co jeszcze potrafią tablice? ...................................................................................................... 99
Klasa cv::SparseMat — tablice rzadkie ................................................................................100
Dostęp do elementów tablicy rzadkiej .................................................................................101
Funkcje dostępne tylko dla tablic rzadkich .........................................................................103
Struktury szablonowe dla dużych typów tablicowych .......................................................104
Podsumowanie ........................................................................................................................... 106
Ćwiczenia .................................................................................................................................... 106
4
Spis treści
Poleć książkęKup książkę5. Operacje na tablicach ...............................................................................................109
Co jeszcze można zrobić z tablicami? ......................................................................................109
cv::abs() .................................................................................................................................... 112
cv::absdiff() .............................................................................................................................. 113
cv::add() ................................................................................................................................... 113
cv::addWeighted() .................................................................................................................. 113
cv::bitwise_and() .................................................................................................................... 115
cv::bitwise_not() ..................................................................................................................... 115
cv::bitwise_or() ....................................................................................................................... 116
cv::bitwise_xor() ..................................................................................................................... 116
cv::calcCovarMatrix() ............................................................................................................ 116
cv::cartToPolar() .................................................................................................................... 118
cv::checkRange() .................................................................................................................... 119
cv::compare() .......................................................................................................................... 119
cv::completeSymm() .............................................................................................................. 120
cv::convertScaleAbs() ............................................................................................................ 120
cv::countNonZero() ............................................................................................................... 121
cv::cvarrToMat() .................................................................................................................... 121
cv::dct() .................................................................................................................................... 122
cv::dft() ..................................................................................................................................... 122
cv::cvtColor() .......................................................................................................................... 123
cv::determinant() .................................................................................................................... 126
cv::divide() ............................................................................................................................... 127
cv::eigen() ................................................................................................................................ 127
cv::exp() ................................................................................................................................... 128
cv::extractImageCOI() ........................................................................................................... 128
cv::flip() .................................................................................................................................... 128
cv::gemm() .............................................................................................................................. 128
cv::getConvertElem() i cv::getConvertScaleElem() ........................................................... 129
cv::idct() ................................................................................................................................... 130
cv::idft() ................................................................................................................................... 130
cv::inRange() ........................................................................................................................... 130
cv::insertImageCOI() ............................................................................................................. 131
cv::invert() ............................................................................................................................... 131
cv::log() .................................................................................................................................... 132
cv::LUT() ................................................................................................................................. 132
cv::Mahalanobis() ................................................................................................................... 133
cv::max() .................................................................................................................................. 133
cv::mean() ................................................................................................................................ 135
cv::meanStdDev() ................................................................................................................... 135
cv::merge() ............................................................................................................................... 136
cv::min() .................................................................................................................................. 136
cv::minMaxIdx() ..................................................................................................................... 137
cv::minMaxLoc() .................................................................................................................... 137
cv::mixChannels() .................................................................................................................. 138
Spis treści
5
Poleć książkęKup książkęcv::mulSpectrums() ................................................................................................................140
cv::multiply() ...........................................................................................................................140
cv::mulTransposed() ..............................................................................................................140
cv::norm() ................................................................................................................................141
cv::normalize() ........................................................................................................................142
cv::perspectiveTransform() ...................................................................................................143
cv::phase() ................................................................................................................................144
cv::polarToCart() ....................................................................................................................145
cv::pow() ..................................................................................................................................145
cv::randu() ...............................................................................................................................145
cv::randn() ...............................................................................................................................146
cv::randShuffle() .....................................................................................................................146
cv::reduce() ..............................................................................................................................147
cv::repeat() ...............................................................................................................................148
cv::scaleAdd() ..........................................................................................................................148
cv::setIdentity() .......................................................................................................................148
cv::solve() .................................................................................................................................149
cv::solveCubic() .......................................................................................................................150
cv::solvePoly() .........................................................................................................................150
cv::sort() ...................................................................................................................................151
cv::sortIdx() .............................................................................................................................151
cv::split() ..................................................................................................................................151
cv::sqrt() ...................................................................................................................................152
cv::subtract() ............................................................................................................................153
cv::sum() ..................................................................................................................................153
cv::trace() .................................................................................................................................153
cv::transform() ........................................................................................................................154
cv::transpose() .........................................................................................................................154
Podsumowanie ........................................................................................................................... 154
Ćwiczenia .................................................................................................................................... 155
6. Rysowanie i pisanie ................................................................................................. 157
Rysowanie .................................................................................................................................... 157
Linie i wypełnione wielokąty ................................................................................................157
Czcionki i tekst ........................................................................................................................163
Podsumowanie ........................................................................................................................... 165
Ćwiczenia .................................................................................................................................... 166
7. Funktory w OpenCV ................................................................................................. 167
Obiekty, które „coś” robią ......................................................................................................... 167
Analiza składowych głównych — cv::PCA .........................................................................167
Rozkład według wartości osobliwych — cv::SVD ..............................................................170
Generator liczb losowych — cv::RNG .................................................................................173
Podsumowanie ........................................................................................................................... 175
Ćwiczenia .................................................................................................................................... 176
6
Spis treści
Poleć książkęKup książkę8. Pliki obrazów, filmów i danych .................................................................................179
HighGUI — przenośny zestaw narzędzi GUI .........................................................................179
Praca z plikami obrazów ............................................................................................................180
Ładowanie i zapisywanie obrazów ....................................................................................... 181
Uwaga na temat kodeków ..................................................................................................... 183
Kompresja i dekompresja ..................................................................................................... 183
Praca z plikami wideo ................................................................................................................184
Odczytywanie wideo za pomocą obiektu cv::VideoCapture ............................................ 184
Zapisywanie wideo za pomocą obiektu cv::VideoWriter ................................................. 190
Zapisywanie danych ...................................................................................................................191
Zapisywanie danych w obiekcie cv::FileStorage ................................................................. 191
Odczytywanie danych z obiektu cv::FileStorage ................................................................ 193
cv::FileNode ............................................................................................................................ 194
Podsumowanie ............................................................................................................................197
Ćwiczenia .....................................................................................................................................197
9. Okna wieloplatformowe i macierzyste ......................................................................201
Praca z oknami ............................................................................................................................201
Macierzysty graficzny interfejs użytkownika HighGUI ................................................... 201
Praca z biblioteką Qt .............................................................................................................. 212
Integracja OpenCV z kompletnymi bibliotekami GUI .................................................... 221
Podsumowanie ............................................................................................................................233
Ćwiczenia .....................................................................................................................................234
10. Filtry i sploty ............................................................................................................235
Informacje ogólne .......................................................................................................................235
Zanim zaczniesz ..........................................................................................................................235
Filtry, jądra i splot .................................................................................................................. 235
Ekstrapolacja krawędzi i warunki brzegowe ...................................................................... 236
Operacje graniczne .....................................................................................................................240
Algorytm Otsu ........................................................................................................................ 242
Zmienna wartość graniczna .................................................................................................. 243
Wygładzanie ................................................................................................................................245
Proste rozmazanie i filtr prostokątny .................................................................................. 246
Filtr medianowy ..................................................................................................................... 247
Filtr Gaussa ............................................................................................................................. 248
Filtr bilateralny ....................................................................................................................... 250
Pochodne i gradienty ..................................................................................................................251
Pochodna Sobela .................................................................................................................... 251
Filtr Scharra ............................................................................................................................ 253
Laplasjan .................................................................................................................................. 254
Spis treści
7
Poleć książkęKup książkęMorfologia obrazu ...................................................................................................................... 255
Dylatacja i erozja .....................................................................................................................257
Ogólna funkcja morfologiczna .............................................................................................260
Otwieranie i zamykanie .........................................................................................................260
Gradient morfologiczny ........................................................................................................263
Top Hat i Black Hat ................................................................................................................265
Tworzenie własnego jądra .....................................................................................................267
Splot z dowolnym filtrem liniowym ........................................................................................ 268
Stosowanie ogólnego filtra przez funkcję cv::filter2D() ....................................................269
Stosowanie ogólnego filtra rozdzielnego za pomocą funkcji cv::sepFilter2D() .............270
Funkcje do tworzenia jąder ...................................................................................................270
Podsumowanie ........................................................................................................................... 271
Ćwiczenia .................................................................................................................................... 271
11. Ogólne przekształcenia obrazu ................................................................................ 277
Wprowadzenie ............................................................................................................................ 277
Rozciąganie, kurczenie, zniekształcanie i obracanie ............................................................. 277
Jednorodna zmiana rozmiaru ...............................................................................................278
Piramidy obrazów ...................................................................................................................279
Mapowanie niejednorodne ...................................................................................................282
Przekształcenia afiniczne .......................................................................................................285
Przekształcenie perspektywiczne ..........................................................................................289
Ogólne odwzorowania ............................................................................................................... 291
Odwzorowania biegunowe ....................................................................................................292
Współrzędne logarytmiczno-biegunowe ............................................................................294
Odwzorowania arbitralne ......................................................................................................297
Renowacja obrazów ................................................................................................................... 298
Inpainting ................................................................................................................................299
Usuwanie szumów ..................................................................................................................300
Wyrównywanie histogramu ..................................................................................................... 303
cv::equalizeHist() — wyrównywanie kontrastu .................................................................304
Podsumowanie ........................................................................................................................... 305
Ćwiczenia .................................................................................................................................... 306
12. Analiza obrazu ........................................................................................................ 307
Wprowadzenie ............................................................................................................................ 307
Dyskretna transformacja Fouriera ........................................................................................... 307
cv::dft() — dyskretna transformacja Fouriera ....................................................................308
cv::idft() — odwrotna dyskretna transformacja Fouriera .................................................310
cv::mulSpectrums() — mnożenie widm ..............................................................................311
Splot przy użyciu dyskretnej transformacji Fouriera ........................................................311
cv::dct() — dyskretna transformacja cosinusowa ..............................................................312
cv::idct() — odwrotna dyskretna transformacja cosinusowa ...........................................313
8
Spis treści
Poleć książkęKup książkęObrazy całkowe ...........................................................................................................................314
cv::integral() — obliczanie standardowego obrazu całkowego ........................................ 316
cv::integral() — suma kwadratowa ...................................................................................... 316
cv::integral() — suma nachylona ......................................................................................... 317
Detektor krawędzi Canny’ego ...................................................................................................317
cv::Canny() .............................................................................................................................. 319
Transformacja Hougha ..............................................................................................................319
Transformacja liniowa Hougha ........................................................................................... 319
Transformacja kołowa Hougha ............................................................................................ 323
Transformacja odległościowa ...................................................................................................327
cv::distanceTransform() — transformacja odległościowa bez etykiet ............................ 327
cv::distanceTransform() — transformacja odległościowa z etykietami ......................... 328
Segmentacja .................................................................................................................................329
Algorytm flood fill .................................................................................................................. 329
Algorytm wododziałowy ....................................................................................................... 332
Algorytm Grabcuts ................................................................................................................ 334
Metoda segmentacji mean-shift ........................................................................................... 336
Podsumowanie ............................................................................................................................338
Ćwiczenia .....................................................................................................................................338
13. Histogramy i szablony ..............................................................................................341
Reprezentacja histogramów w OpenCV ..................................................................................344
cv::calcHist() — tworzenie histogramu z danych .............................................................. 344
Podstawowe operacje na histogramach ...................................................................................346
Normalizacja histogramu ...................................................................................................... 347
Próg histogramu ..................................................................................................................... 347
Znajdowanie najbardziej zapełnionego przedziału ........................................................... 347
Porównywanie histogramów ................................................................................................ 349
Przykłady użycia histogramów ............................................................................................. 351
Zaawansowane metody pracy z histogramami .......................................................................354
Algorytm EMD ....................................................................................................................... 354
Rzutowanie wstecz ................................................................................................................. 358
Dopasowywanie szablonów .......................................................................................................362
Metoda porównywania kwadratu różnicy — cv::TM_SQDIFF ...................................... 363
Znormalizowana metoda porównywania kwadratu różnicy —
cv::TM_SQDIFF_NORMED ............................................................................................ 364
Metody korelacji krzyżowej — cv::TM_CCORR ............................................................... 364
Znormalizowana metoda korelacji krzyżowej — cv::TM_CCORR_NORMED ........... 364
Metody dopasowywania współczynnika korelacji — cv::TM_CCOEFF ........................ 364
Znormalizowana metoda dopasowywania współczynnika korelacji
— cv::TM_CCOEFF_NORMED ...................................................................................... 365
Podsumowanie ............................................................................................................................367
Ćwiczenia .....................................................................................................................................368
Spis treści
9
Poleć książkęKup książkę14. Kontury .................................................................................................................. 371
Znajdowanie konturów ............................................................................................................. 371
Hierarchie konturów ..............................................................................................................372
Rysowanie konturów ..............................................................................................................376
Przykład rysowania konturów ..............................................................................................377
Inny przykład rysowania konturów .....................................................................................378
Szybka analiza komponentów połączonych .......................................................................380
Inne zastosowania konturów .................................................................................................... 382
Aproksymacja wielokątów ....................................................................................................382
Geometria i różne rodzaje sumowania ................................................................................383
Testy geometryczne ................................................................................................................389
Dopasowywanie konturów i obrazów ..................................................................................... 390
Momenty ..................................................................................................................................390
Więcej o momentach .............................................................................................................392
Dopasowywanie a momenty Hu ..........................................................................................395
Porównywanie kształtów za pomocą algorytmu Shape Context .....................................396
Podsumowanie ........................................................................................................................... 400
Ćwiczenia .................................................................................................................................... 401
15. Odejmowanie tła ..................................................................................................... 403
Wiadomości podstawowe ......................................................................................................... 403
Wady operacji odejmowania tła ............................................................................................... 404
Modelowanie sceny .................................................................................................................... 405
Wycinek pikseli .......................................................................................................................405
Różnicowanie klatek ..............................................................................................................408
Metoda uśredniania tła .............................................................................................................. 409
Akumulowanie średnich, wariancji i kowariancji ..............................................................414
Bardziej zaawansowana metoda odejmowania tła ................................................................. 422
Struktury ..................................................................................................................................425
Poznawanie tła ........................................................................................................................426
Nauka w obecności ruchomych obiektów pierwszego planu ...........................................428
Różnicowanie tła — znajdowanie obiektów pierwszego planu .......................................429
Przykład użycia modelu tła opartego na księgach kodów ................................................430
Kilka dodatkowych uwag na temat modeli opartych na księgach kodów ......................430
Komponenty połączone dla czyszczenia pierwszego planu ................................................. 431
Szybki test ................................................................................................................................434
Porównanie dwóch metod rozpoznawania tła ....................................................................... 436
Implementacja techniki odejmowania tła w OpenCV .......................................................... 437
Klasa bazowa cv::BackgroundSubtractor ............................................................................437
Metoda Kaewtrakulponga i Bowdena ..................................................................................438
Metoda Zivkovica ...................................................................................................................439
Podsumowanie ........................................................................................................................... 442
Ćwiczenia .................................................................................................................................... 442
10
Spis treści
Poleć książkęKup książkę16. Punkty kluczowe i deskryptory .................................................................................445
Punkty kluczowe i podstawy śledzenia ....................................................................................445
Znajdowanie rogów ............................................................................................................... 446
Wprowadzenie do przepływu optycznego ......................................................................... 450
Rzadki przepływ optyczny — metoda Lucasa-Kanade’a .................................................. 451
Uogólnione punkty kluczowe i deskryptory ...........................................................................461
Przepływ optyczny, śledzenie i rozpoznawanie ................................................................. 462
Jak biblioteka OpenCV obsługuje punkty
kluczowe i deskryptory — przypadek ogólny ................................................................. 463
Podstawowe metody wykrywania punktów kluczowych ................................................. 474
Filtrowanie punktów kluczowych ........................................................................................ 512
Metody dopasowywania ........................................................................................................ 513
Wyświetlanie wyników .......................................................................................................... 519
Podsumowanie ............................................................................................................................521
Ćwiczenia .....................................................................................................................................522
17.
Śledzenie ................................................................................................................525
Pojęcia dotyczące śledzenia .......................................................................................................525
Gęsty przepływ optyczny ...........................................................................................................526
Algorytm rozwinięcia wielomianu Farnebäcka ................................................................. 527
Algorytm Dual TV-L1 ............................................................................................................ 529
Algorytm Simple Flow ........................................................................................................... 533
Algorytmy mean-shift i Camshift .............................................................................................536
Algorytm mean-shift ............................................................................................................. 537
Algorytm Camshift ................................................................................................................ 540
Szablony ruchu ............................................................................................................................541
Estymatory ...................................................................................................................................548
Filtr Kalmana .......................................................................................................................... 549
Kilka słów na temat rozszerzonego filtra Kalmana ........................................................... 564
Podsumowanie ............................................................................................................................565
Ćwiczenia .....................................................................................................................................565
18. Modele kamery i metody kalibracji ...........................................................................567
Model kamery ..............................................................................................................................568
Podstawy geometrii rzutowej ............................................................................................... 570
Transformacja Rodriguesa .................................................................................................... 572
Zniekształcenia soczewek ...................................................................................................... 573
Kalibracja .....................................................................................................................................576
Macierz obrotu i wektor przesunięcia ................................................................................. 578
Plansze kalibracji .................................................................................................................... 580
Homografia ............................................................................................................................. 587
Kalibracja aparatu .................................................................................................................. 591
Korekcja zniekształceń ...............................................................................................................602
Spis treści
11
Poleć książkęKup książkęMatryce likwidacji zniekształceń ..........................................................................................602
Konwertowanie reprezentacji matryc likwidacji zniekształceń
za pomocą funkcji cv::convertMaps() ..............................................................................604
Obliczanie matryc likwidacji zniekształceń za pomocą funkcji
cv::initUndistortRectifyMap() ...........................................................................................604
Likwidowanie zniekształceń obrazu za pomocą funkcji cv::remap() ..............................606
Likwidacja zniekształceń za pomocą funkcji cv::undistort() ............................................606
Rzadkie likwidowanie zniekształceń za pomocą funkcji cv::undistortPoints() .............607
Podsumowanie technik kalibracji ............................................................................................ 607
Podsumowanie ........................................................................................................................... 610
Ćwiczenia .................................................................................................................................... 611
19. Rzutowanie i trójwymiarowe widzenie .................................................................... 613
Rzutowanie .................................................................................................................................. 614
Przekształcenia afiniczne i perspektywiczne .......................................................................... 615
Przykład przekształcenia na widok z góry ..........................................................................616
Określanie pozycji trójwymiarowych obiektów ..................................................................... 621
Określanie pozycji za pomocą jednej kamery .....................................................................621
Obrazowanie stereo .................................................................................................................... 623
Triangulacja .............................................................................................................................624
Geometria epipolarna ............................................................................................................628
Macierz zasadnicza i macierz fundamentalna ....................................................................630
Obliczanie linii epipolarnych ................................................................................................638
Kalibracja stereo ......................................................................................................................639
Rektyfikacja stereo ..................................................................................................................643
Korespondencja stereo ...........................................................................................................652
Kalibracja stereo, rektyfikacja i korespondencja — przykładowy program ...................665
Matryce głębi z trójwymiarowej reprojekcji .......................................................................671
Struktura z ruchu ........................................................................................................................ 673
Dopasowywanie linii w dwóch i trzech wymiarach .............................................................. 673
Podsumowanie ........................................................................................................................... 676
Ćwiczenia .................................................................................................................................... 677
20. Podstawy uczenia maszyn w OpenCV ....................................................................... 679
Czym jest uczenie maszyn? ....................................................................................................... 679
Szkolenie i zbiory danych testowych ...................................................................................680
Uczenie nadzorowane i nienadzorowane ............................................................................681
Modele generacyjne i dyskryminacyjne ..............................................................................683
Algorytmy ML w OpenCV ....................................................................................................683
Zastosowania metod uczenia maszyn w komputerowym rozpoznawaniu obrazu .......685
Znaczenie zmiennej ................................................................................................................687
Diagnozowanie usterek w algorytmach uczenia maszyn ..................................................688
12
Spis treści
Poleć książkęKup książkęStare procedury w bibliotece ML ..............................................................................................694
K-średnich ............................................................................................................................... 694
Odległość Mahalanobisa ....................................................................................................... 699
Podsumowanie ............................................................................................................................703
Ćwiczenia .....................................................................................................................................703
21. StatModel — standardowy model uczenia w OpenCV ...............................................705
Podstawowe procedury biblioteki ML .....................................................................................705
Szkolenie i struktura cv::ml::TrainData .............................................................................. 707
Prognozowanie ....................................................................................................................... 713
Algorytmy uczenia maszyn oparte na interfejsie cv::StatModel ..........................................714
Naiwny lub normalny klasyfikator Bayesa ......................................................................... 714
Binarne drzewa decyzyjne ..................................................................................................... 719
Boosting ................................................................................................................................... 732
Drzewa losowe ........................................................................................................................ 738
Maksymalizacja oczekiwań ................................................................................................... 742
K najbliższych sąsiadów ........................................................................................................ 745
Wielowarstwowy perceptron ................................................................................................ 748
Maszyna wektorów nośnych ................................................................................................ 756
Podsumowanie ............................................................................................................................765
Ćwiczenia .....................................................................................................................................766
22. Wykrywanie obiektów .............................................................................................771
Techniki wykrywania obiektów oparte na drzewach .............................................................771
Klasyfikatory kaskadowe ....................................................................................................... 772
Uczenie nadzorowane i teoria wzmacniania ...................................................................... 774
Uczenie się nowych obiektów .............................................................................................. 782
Wykrywanie obiektów za pomocą maszyn wektorów nośnych ...........................................790
Wykrywanie obiektów metodą Latent SVM ...................................................................... 790
Algorytm Bag of Words i kategoryzacja semantyczna ..................................................... 793
Podsumowanie ............................................................................................................................798
Ćwiczenia .....................................................................................................................................798
23. Przyszłość biblioteki OpenCV ....................................................................................801
Przeszłość i teraźniejszość ..........................................................................................................801
OpenCV 3.x ............................................................................................................................ 802
Czy nasze prognozy się sprawdziły? .........................................................................................803
Przyszłość .....................................................................................................................................804
Najświeższe wiadomości o GSoC ......................................................................................... 805
Wsparcie ze strony społeczności .......................................................................................... 807
Strona OpenCV.org ............................................................................................................... 808
Spekulacje na temat sztucznej inteligencji ..............................................................................809
Posłowie .......................................................................................................................................812
Spis treści
13
Poleć książkęKup książkęA Rodzaje podziału płaszczyzn .................................................................................... 813
Triangulacja Delaunaya, teselacja Woronoja ......................................................................... 813
Tworzenie podziałów Delaunaya lub Woronoja ................................................................816
Poruszanie się po podziałach Delaunaya ............................................................................817
Przykłady .................................................................................................................................823
Ćwiczenia .................................................................................................................................... 824
B Repozytorium opencv_contrib ................................................................................ 825
Przegląd modułów repozytorium opencv_contrib ................................................................ 825
Zawartość katalogu opencv_contrib ....................................................................................825
C Wzory kalibracji ...................................................................................................... 829
Wzory kalibracji wykorzystywane w bibliotece OpenCV .................................................... 829
Bibliografia ............................................................................................................. 835
Skorowidz .............................................................................................................. 849
14
Spis treści
Poleć książkęKup książkęROZDZIAŁ 11.
Ogólne przekształcenia obrazu
Wprowadzenie
W poprzednich rozdziałach opisaliśmy klasę przekształceń obrazu, które można przedstawić na
podstawie splotu. Oczywiście istnieje wiele operacji, których w ten sposób nie da się wyrazić (tzn.
przy użyciu małego okienka przesuwanego nad obrazem i wykonującego jakieś czynności). Za-
sadniczo przekształcenia, które można wyrażać jako sploty, mają charakter lokalny, to znaczy choć
mogą zmieniać cały obraz, sposób przetworzenia konkretnego piksela zależy tylko od niewielkiej
liczby otaczających go pikseli. Transformacje opisywane w tym rozdziale są pozbawione tej wła-
ściwości.
Niektóre z najbardziej przydatnych przekształceń obrazu są proste (np. zmiana rozmiaru) i stosuje
się je bardzo często. Inne są przeznaczone do znacznie bardziej zaawansowanych zastosowań.
Przedstawione przez nas w tym rozdziale przekształcenia powodują przekonwertowanie jednego
obrazu w inny. Obraz wynikowy często będzie miał inny rozmiar niż oryginał albo będzie się od
niego różnił pod innym względem, ale zawsze będzie zasadniczo obrazem w takim samym sensie
jak grafika wejściowa. W rozdziale 12. omawiamy także operacje, które w wyniku mogą zwrócić
całkiem nową reprezentację.
W komputerowym rozpoznawaniu obrazu jest kilka przekształceń, których używa się bardzo często.
Biblioteka OpenCV zawiera kompletne implementacje niektórych najpopularniejszych spośród nich
oraz składniki potrzebne do implementacji własnych, bardziej zaawansowanych transformacji.
Rozciąganie, kurczenie, zniekształcanie i obracanie
Najprostszym możliwym rodzajem przekształcenia jest zmiana rozmiaru obrazu w celu jego powięk-
szenia lub zmniejszenia. Operacje te jednak nie są wcale tak banalne, jak się wydaje, ponieważ zmiana
rozmiaru natychmiast implikuje pytania o sposób interpolacji (w przypadku powiększania) lub
łączenia (w przypadku zmniejszania) pikseli.
277
Poleć książkęKup książkęJednorodna zmiana rozmiaru
Często otrzymujemy obraz o określonym rozmiarze i chcemy go zmniejszyć lub powiększyć. Oba
te zadania możemy wykonać za pomocą jednej funkcji.
cv::resize()
Funkcja cv::resize() zaspokaja wszystkie potrzeby programisty w dziedzinie zmiany rozmiaru
obrazów. Należy jej przekazać na wejściu obraz i określić rozmiar docelowy, a funkcja wygeneruje
nowy obraz o żądanym rozmiarze.
void cv::resize(
cv::InputArray src, // obraz wejściowy
cv::OutputArray dst, // obraz wynikowy
cv::Size dsize, // nowy rozmiar
double fx = 0, // skala wymiaru x
double fy = 0, // skala wymiaru y
int interpolation = CV::INTER_LINEAR // metoda interpolacji
);
Rozmiar o
Pobierz darmowy fragment (pdf)
Gdzie kupić całą publikację:
Opinie na temat publikacji:
Inne popularne pozycje z tej kategorii:
Czytaj również:
Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką :