Analiza i przetwarzanie obrazo w Temat projektu: Aplikacja na system ios rozpoznająca tekst Michał Opach 1. Cel projektu Celem projektu było stworzenie aplikacji mobilnej na system operacyjny ios, która rozpoznaje tekst ze zdjęcia. Program pozwala na wybranie fotografii z albumu lub zrobienie zdjęcia. Po wybraniu obrazu źródłowego aplikacja w zależności od wybranej metody prezentuje wykryty tekst zaznaczając go w ramki, lub wykrywa całe linijki tekstu 2. Wykorzystane narzędzia Projekt został zrealizowany w środowisku programistycznym Xcode 6 z wykorzystaniem ios SDK 8. Aplikacja do działania wymaga wersji systemowej 8.0 lub wyższej. W projekcie wykorzystano bibliotekę OpenCV w wersji 2.4.9. Do zarządzania zewnętrznymi bibliotekami użyto managera zewnętrznych zależności cocoapods. 3. Sposób kompilacji Do kompilacji potrzebny jest komputer z systemem operacyjnym OS X w wersji co najmniej 10.10 wyposażony w procesor firmy Intel. Aby skompilowad projekt potrzebny nam jest program cocoapods. Poprzez terminal będąc w katalogu projektu gdzie znajduje się plik o nazwie Podfile uruchamiamy komendę pod install. Gdy program zakooczy działanie w tym samym folderze powinien wygenerowad się nowy plik z rozszerzeniem.xcworkspace, który zawiera właściwy projekt oraz projekt z podami. Przy pomocy Xcode kompilujemy cały workspace. 4. Sposób uruchomienia aplikacji Aby uruchomid program na fizycznym urządzeniu od niedawna nie trzeba byd zarejestrowanym deweloperem. Po zalogowaniu się na swoje Apple ID w Xcode należy wybrad free provisioning w ustawieniach generalnych projektu.
5. Interface Powyższy zrzut ekranu przedstawia widok, który pojawia się zaraz po uruchomieniu aplikacji. Pozwala on wybrad metodę oraz źródło obrazu. Przycisk kamery przenosi nas do aparatu, którym możemy zrobid zdjęcie. Natomiast ikona fotografii przenosi nas do albumu, gdzie możemy wybrad już zrobioną wcześniej fotografie.
Jeśli wybierzemy metodę 2, jesteśmy proszeni o ustawienie nachylenia tekstu przy pomocy slidera na dole ekranu. Zakres nachylenia to od -90 do +90
Po wyborze metody oraz zdjęcia następuje przeniesienie użytkownika do wyniku, który w przypadku pierwszej metody nanosi na obraz obszary, w których znajduje się tekst. Natomiast druga metoda zaznacza linijki tekstu
6. Implementacja Metoda 1 pierwsza przetwarzająca obraz: - zmniejszenie rozmiaru obrazu wejściowego - konwersja obrazu do skali szarości - gradient morfologiczny, którego elementem strukturalnym jest elipsa o rozmiarze 3x3 - binaryzacja przy pomocy progowania metodą Otsu - operacja zamknięcia, element strukturalny to prostokąt o rozmiarze 9x1 - znalezienie konturów - wypełnienie konturów białym kolorem - jeśli kontuar wypełniony jest białym kolorem więcej niż w 45% procentach obszaru i jest większy niż prostokąt o rozmiarze 8x8 to jest tekstem (na obrazie wejściowym rysowany jest czerwony prostokąt) Metoda 2 przetwarzająca obraz (wykrywanie linii): - konwersja oryginalnego obrazu do skali szarości - binaryzacja przy pomocy progowania metodą Otsu - przy pomocy funkcji liniowej sprawdzamy każdy wiersz, gdy w linii wstępuje tekst(czarny) a wiersz wyżej nie występował to jest to początek linijki tekstu, natomiast jeżeli wiersz jest cały biały a we wcześniejszym wstępował tekst to jest to koniec linii
7. Porównanie wyników dla obu metod Porównanie 1 - gdy obraz z tekstem jest dobrej jakości bez pochylenia Jak widad w tym przypadku obie metody wykonały swoje zadanie. Metoda 1 wykonała swoje obliczenia w czasie 0.054355 s. Natomiast rezultat widoczny po prawej stronie został osiągnięty w 0.029495 s. Obrazek wejściowy miał wymiary 637x468.
Porównanie 2 - gdy obraz z tekstem jest dobrej lecz jest pochyły Jaki widad metoda pierwsza nie poradziła sobie z wykryciem tekstu, czas jej wykonania wynosił 0.041580 s. Natomiast metoda wykrywająca linijki tekstu poradziła sobie z zadaniem. Linijki są trochę krzywe spowodowane jest to różnicą w doborze kąta pochylenia tekstu przez użytkownika a rzeczywistym kątem. Metoda 2 wykonała zadanie w czasie 0.052348 s. Obraz wejściowy miał wymiary 944x828.
Porównanie 3 fotografia z kamery telefonu przy złym oświetleniu Pierwsza metoda odnalazła prawie wszystkie znaki tekstowe z fotografii. Natomiast metoda druga wykryła tylko dwie pierwsze linijki tekstu oraz zaznaczyła wiele pustych linijek. Spowodowane jest to słabym, nierównym oświetleniem przez co metoda binaryzacji zwraca ciemne obszary w słabiej oświetlonych miejscach. Czas wykonania pierwszej metody to 0.321487 s, z kolei druga metoda wykonała się w 0.436242 s. Fotografia wejściowa miała rozmiar 2448x3264 8. Wnioski Założenia projektu zostały wykonane. Aplikacja prezentuje dwa podejścia do wykrywania tekstu na obrazach. Obie metody radzą sobie doskonale gdy obraz wejściowy jest dobrej jakości (np. pochodzi z programu graficznego lub edytora tekstowego). Jednak jeżeli tekst na obrazie źródłowym znacząco pochylimy wyłącznie metoda druga wykrywa tekst (wymaga to dodatkowego wprowadzenia przez użytkownika kąta pochylenia tekstu). Z kolei w przypadku
fotografii z kamery urządzenia metoda 1 w przeciwieostwie do metody 2 daje zadowalające rezultaty. Czasy wykonania obu metod są zadowalające użytkownik nie ma wrażenia oczekiwania na rezultat (średni czas animacji przejścia między jednym ekranem a drugim to 0.2 0.3 sekundy, w tym czasie metody realizowane są na bocznym wątku). Natomiast warto tu nadmienid ze w wyniku metody pierwszej obraz źródłowy zostaje zmniejszony. Nie jest to tak istotne jeżeli obraz jest dużych rozmiarów (większych niż rozdzielczośd natywna ekranu), natomiast w przypadku mniejszych obrazów użytkownik może zauważyd różnicę w jakości otrzymanego rezultatu (bardzo widoczne w pierwszym porównaniu).