AKADEMIA GÓRNICZO HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE Wydział Geologii, Geofizyki i Ochrony Środowiska PROJEKT INŻYNIERSKI IMIĘ i NAZWISKO: Zbigniew Winiarski Nr albumu: 237828 KIERUNEK: Informatyka Stosowana KATEDRA: Geoinformatyki i informatyki Stosowanej TYTUŁ PROJEKTU: Wykorzystanie metod analizy obrazu do detekcji urazów kości na zdjęciach rentgenowskich TYTUŁ PROJEKTU (w języku angielskim): Application of image analysis to detect bone fracture from x-rays OPIEKUN PROJEKTU: dr hab. inż. Mariusz Młynarczuk, prof. n. AGH Końcowa ocena projektu:...... Kierownik Katedry... Przewodniczący Komisji Egzaminacyjnej Kraków, 2014 r. Akademia Górniczo Hutnicza im. Stanisława Staszica; Wydział Geologii, Geofizyki i Ochrony Środowiska; al. Mickiewicza 30, 30 059 Kraków
Opinia opiekuna projektu........................... ocena opiekuna projektu... podpis opiekuna projektu OŚWIADCZENIE AUTORA PROJEKTU Oświadczam, świadoma/-y/ odpowiedzialności karnej za poświadczenie nieprawdy, że niniejszy projekt wykonałam/-em/ osobiście i samodzielnie, i nie korzystałam/-em/ ze źródeł innych, niż wymienione w tekście. Oświadczam również, że przedstawiony projekt nie był wcześniej przedmiotem procedur związanych z uzyskaniem tytułu zawodowego w wyższej uczelni. Ponadto przyjmuję do wiadomości, że projekt inżynierski lub jego część może być opublikowany jedynie po uzyskaniu pisemnej zgody opiekuna projektu....... data podpis autora projektu
Spis treści 1. Wstęp... 2 2. Przetwarzanie i analiza obrazu... 3 2.1 Operacje wstępne... 3 2.2 Zmiana palety barw obrazu wejściowego... 3 2.3 Wyszukanie ukierunkowania kości... 4 2.4 Gradient morfologiczny... 5 2.5 Binaryzacja... 5 2.6 Otwarcie... 6 2.7 Usuwanie wydłużonych obiektów... 6 2.8 Propagacja... 7 2.9 Zaznaczenie złamania na obrazie wejściowym... 7 3. Przypadki szczególne... 8 4. Inne przykłady działania algorytmu... 10 5. Podsumowanie... 12 6. Bibliografia... 12 7. Wykaz stron internetowych, z których zostały pobrane zdjęcia RTG... 12 1
1. Wstęp Komputerowa analiza oraz przetwarzanie obrazów znajdują szerokie zastosowanie w przemyśle, medycynie, geologii, astronomii oraz w systemach bezpieczeństwa. Przykładami zastosowań metod analizy obrazu w wyżej wymienionych dziedzinach są m. in. rozpoznawanie tekstu oraz etykiet (OCR), kontrola jakości wyrobów, analiza zdjęć lotniczych i satelitarnych, czy też pomiar organów wewnętrznych człowieka. Medycyna jest tą dziedziną nauki, w której analiza obrazów jest bardzo często stosowana. Urządzenia takie jak ultrasonograf, tomograf komputerowy, aparat rentgenowski oraz rezonans magnetyczny pozwalają zobaczyć organy człowieka bez konieczności ryzykownych operacji. Dzięki powyższym urządzeniom można wykryć najmniejsze zmiany w tkankach. Każde z tych urządzeń produkuje wyniki w postaci zdjęć bądź sekwencji obrazów. Komputerowa analiza obrazów oraz systemy CAD(Computer Aided Diagnosis) [1], które zdobywają coraz większą popularność w medycynie, pomagają człowiekowi w postawieniu prawidłowej diagnozy. Jednym z miejsc, w którym można wspomóc pracę ludzi w medycynie jest analizowanie zdjęć RTG. Celem pracy jest stworzenie algorytmu przetwarzania obrazów, który po zaimplementowaniu w środowisku MATLAB, wyszukiwałby pęknięcia, złamania bez przemieszczenia oraz złamania z przemieszczeniem na obrazach RTG. Algorytm powinien być w stanie analizować urazy kości długich takich jak kość ramienna, kość łokciowa, kość promieniowa, kość udowa lub kość piszczelowa. Powyższe założenie zostało wprowadzone, ponieważ autor nie posiada odpowiedniej wiedzy medycznej do stwierdzenia czy inne kości takie jak na przykład kości czaszki, kości nadgarstka lub śródstopia są uszkodzone. Przystępując do pracy założono, że skrypt implementujący algorytm powinien zwracać obraz wejściowy z zaznaczonymi złamaniami/pęknięciami kości. Wszystkie zdjęcia RTG użyte podczas implementacji oraz testów skryptu zostały pobrane z różnych stron internetowych. Odnośniki do tych stron znajdują się w bibliografii. Ze względu na ustawę o ochronie danych osobowych nie użyto w pracy żadnych zdjęć z placówek zajmujących się wykonywaniem tego typu zdjęć. 2
2. Przetwarzanie i analiza obrazu 2.1 Operacje wstępne Pierwszym krokiem przetwarzania zdjęć jest ręczne usunięcie opisów, które mogą wprowadzać błędy podczas działania skryptu. Bardzo często na zdjęciach RTG znajdują się imiona, nazwiska oraz dane techniczne dotyczące badania. Uznano, że operacja ta nie wymaga zautomatyzowania, gdyż dla każdego wykonanego badania wspomniane napisy umieszczane są w tym samym miejscu. Tak więc przy implementacji metody opisy te są proste do zamaskowania. Przykład zdjęcia z opisami zaprezentowano na figurze 1, natomiast efekt usuwania napisów na figurze 2. Fig. 1 Obraz przed usunięciem danych technicznych Fig. 2 Obraz po usunięciu danych technicznych 2.2 Zmiana palety barw obrazu wejściowego Wszystkie analizowane zdjęcia na wejściu do skryptu posiadają paletę barw RGB [2]. Każda barwa w palecie RGB składa się z trzech barw podstawowych: Red (czerwony), Green (Zielony) oraz Blue (niebieski). Barwa każdego piksela zapisywana jest na 24 bitach. Każde 8 bitów odpowiada barwie składowej z palety RGB. Wartości każdej ze składowej barwy przyjmują wartości z zakresu 0-255. Jeśli wszystkie składowe przyjmują wartość 0, to 3
oznacza, że reprezentowana jest barwa czarna. Natomiast, gdy wszystkie składowe przyjmują maksymalne wartości, czyli 255, otrzymujemy barwę białą. Podczas analizowania zdjęć informacja o wszystkich składowych jest zbędna. Należy dokonać konwersji z palety barwnej do skali szarości. Biblioteka środowiska Matlab Image Processing Toolbox [4] udostępnia funkcję rgb2gray, która dokonuje takiej konwersji. Obraz po przeprowadzeniu konwersji zaprezentowano na figurze 3. Fig. 3 Obraz po skonwertowaniu do skali szarości 2.3 Wyszukanie ukierunkowania kości Do wyszukania kąta, pod którym ukierunkowana jest kość na obrazie, została zliczona suma poziomów szarości po dylatacji liniowym elementem strukturalnym. Dylatacja [3] to operacja morfologiczna, która polega na przyłożeniu do każdego piksela na obrazie elementu strukturalnego. Wartość stopnia szarości pikseli znajdujących się pod elementem strukturalnym ustawiana jest na maksymalną wartość piksela znajdującego się pod przyłożonym elementem. Innymi słowy dylatacja działa jak filtr maksymalny. Wykonywana jest dylatacja pod kątami od 0 do 179 stopni. W przypadku przyłożenia elementu strukturalnego prostopadłego do kąta, pod którym jest położona kość, suma poziomów szarości pikseli będzie największa. Od kąta, pod którym suma poziomów szarości jest największa, zostaje odjęty kąt prosty. Ta operacja ma na celu obliczenie ukierunkowania kości. Następnie przeprowadza się dylatację liniowym elementem strukturalnym zgodnie z kątem ukierunkowania kości. Wynik przeprowadzonej operacji ilustruje figura 4. 4
Fig. 4 Obraz po dylatacji liniowym elementem strukturalnym ukierunkowanym zgodnie z kątem ukierunkowania kości 2.4 Gradient morfologiczny Kolejnym krokiem jest odjęcie obrazu przed dylatacją od obrazu po dylatacji. Dzięki zastosowaniu tak zdefiniowanego gradientu morfologicznego zostają uwidocznione różnice między dwoma obrazami. Im wyższy poziom szarości, tym większa jest różnica. Wynik operacji został przedstawiony na figurze 5. Fig. 5 Obraz po operacji gradientu morfologicznego Na figurze 5 widać, że najjaśniejsze są obszary wokół złamania, w miejscu stawu kolanowego oraz wokół główki kości. 2.5 Binaryzacja Binaryzacja [2] jest to przekształcenie obrazu w skali szarości, bądź obrazu barwnego na obraz binarny. Piksele na obrazie binarnym przyjmują wartości 0 dla czerni oraz 1 dla bieli. W pracy korzystano z binaryzacji z dolnym progiem, czyli takiej, w której piksele przyjmują wartość 0 jeśli są mniejsze lub równe od zadanego progu binaryzacji lub 1, gdy są większe. Podczas testów algorytmu ręcznie ustawiano progi binaryzacji. Spowodowane było to tym, że każde zdjęcie użyte podczas pisania pracy pochodziło z 5
innego źródła (było zrobione innym aparatem rentgenowskim). Jeśli istniałby dostęp do odpowiednio dużej bazy zdjęć zrobionych jednym urządzeniem, to prostym zadaniem byłoby opracowanie metody binaryzacji, która nie wymagałaby każdorazowej ingerencji w progi binaryzacji. Obraz po przeprowadzeniu binaryzacji został przedstawiony na figurze 6. Fig. 6 Obraz po binaryzacji 2.6 Otwarcie Otwarcie [3] zdefiniowane jest jako przeprowadzenie erozji a następnie dylatacji obrazu. Erozja jest to operacja odwrotna do dylatacji i działa jak filtr minimalny. Zastosowano otwarcie liniowym elementem strukturalnym skierowanym pod kątem prostym do ukierunkowania kości. Miało to na celu usunięcie małych i wąskich obiektów, które znajdowały się na krawędziach kości. Wynik tej operacji przedstawiony jest na figurze 7. Fig. 7 Obraz po operacji otwarcia liniowym elementem strukturalnym 2.7 Usuwanie wydłużonych obiektów Na obecnym etapie algorytmu na obrazie nadal znajdują się obiekty, które nie znajdują się w pobliżu złamania kości. Na obrazie widoczne są trzy obiekty: dwa obiekty znajdujące się wokół złamania oraz jeden obiekt znajdujący się w miejscu stawu 6
kolanowego. W wyeliminowania z obrazu podłużnych obiektów analizowano wydłużenie każdego obiektu, zdefiniowane jako stosunek dużej i małej osi elipsy, która jest opisana na obiekcie. Środowisko MATLAB oraz Image Processing Toolbox [4] umożliwia dostęp do tych parametrów. W wyniku testów przeprowadzonych na dostępnych obrazach uznano, że jeśli stosunek tych dwóch wartości wynosi 1:4, to najprawdopodobniej analizowany obiekt znajduję się w miejscu stawu i należy go usunąć, aby nie zakłócił dalszej analizy. Obraz po usunięciu podłużnych obiektów zaprezentowano na figurze 8. 2.8 Propagacja Fig. 8 Obraz po usunięciu podłużnych obiektów Kolejnym krokiem algorytmu jest dylatacja kołowym elementem strukturalnym. Operacja ma na celu połączenie dwóch obiektów, które znajdują się wokół złamania. Wynik przeprowadzonej operacji jest widoczny na figurze 9. Fig. 9 Obraz po przeprowadzeniu dylatacji 2.9 Zaznaczenie złamania na obrazie wejściowym Dzięki przeprowadzeniu dylatacji na przetwarzanym obrazie znajduje się tylko jeden obiekt. Zastosowanie funkcji regionprops [4] z parametrem Centroid pozwala na znalezienie centrum masy obiektu. Współrzędne centroidu wykorzystano do narysowania okręgu, który wskazuje miejsce złamania/pęknięcia kości. Wynik działania algorytmu przedstawiony jest na figurze 10. 7
Fig. 10 Obraz z zaznaczonym złamaniem kości 3. Przypadki szczególne Bardzo często na zdjęciach RTG kości długich znajdują się także małe kości nadgarstka lub śródstopia. Mogą one zakłócić działanie powyższego algorytmu, ponieważ podczas tworzenia gradientu morfologicznego, a następnie binaryzacji i segmentacji, wolne przestrzenie między kośćmi mogą zostać sklasyfikowane jako złamanie lub pęknięcie. Opisywaną sytuację obrazują figury 11 oraz 12. Fig. 11 Obraz w skali szarości, obraz po gradiencie morfologicznym, obraz po binaryzacji 8
Fig. 12 Obraz po otwarciu, obraz po propagacji, obraz z zaznaczonymi złamaniami Jak widać na ostatnim zdjęciu wykryte zostały trzy pęknięcia. Problem w tym, że ostatnie pęknięcie nie jest urazem kości. Jednym ze sposobów uniknięcia tego typu zakłóceń może być usuwanie dużych obiektów, które pojawiają się po dylatacji kołowym elementem strukturalnym. Można przyjąć pewien próg, powyżej którego obiekty będą usuwane z obrazu. W zaimplementowanym skrypcie został zastosowany warunek, który usuwa największy obiekt, którego powierzchnia w pikselach jest większa niż 1/5 ilości wszystkich pikseli. Wartość progowa została wyznaczona podczas testów. Powyższy warunek nie zaszkodzi w analizie obrazu opisanego w rozdziale drugim, ponieważ nie znajdują się tam tak duże obiekty. Wynik działania algorytmu, po dodaniu przedstawionego warunku, przedstawiony został na figurze 13. Fig. 13 Obraz po propagacji, obraz po usunięciu dużych obiektów oraz obraz wejściowy z wykrytymi urazami. 9
4. Inne przykłady działania algorytmu W tym rozdziale zostały przedstawione zdjęcia RTG, obrazy z poszczególnych kroków algorytmu oraz wyniki końcowe, czyli zdjęcia z zaznaczonymi urazami. Ma to na celu zademonstrowanie działania algorytmu dla różnych pęknięć i złamań kości. Zdjęcie widoczne na figurze 14 jest bardzo słabej jakości, widoczny jest duży szum. Pomimo tego, skrypt wykonujący algorytm działa poprawnie i w wyniku przeprowadzonych przekształceń morfologicznych znajduje prawidłowo złamanie kości. Wynik końcowy został zaprezentowany na figurze 15. Fig. 14 Obraz wejściowy, obraz po gradiencie morfologicznym, obraz po binaryzacji 10
Fig 15 Obraz po zastosowaniu otwarcia, obraz po propagacji, obraz z wykrytym złamaniem Na figurach 16 oraz 17 pokazano wyniki działania algorytmu dla różnych ukierunkowań i typów urazów kości. Fig. 16 Obraz z wykrytym pęknięciem kości Fig. 17 Obraz z wykrytym pęknięciem kości 11
5. Podsumowanie Celem pracy było stworzenie algorytmu przetwarzania obrazów, który wskazywałby pęknięcia oraz złamania kości na zdjęciach RTG. Skrypt, który został stworzony na potrzeby tej pracy działa na wszystkich zdjęciach, które zostały zgromadzone na potrzeby wykonania tego projektu. Skrypt poprawnie znajduje wszystkie urazy widoczne na zdjęciach. Z pewnością istnieją przypadki szczególne dla których opracowany algorytm może nie działać prawidłowo. Jednym z przypadków, dla których skrypt może zwracać błędne wyniki są pęknięcia w okolicy główki kości. Algorytm może wtedy nie zaznaczyć tego urazu na obrazie wynikowym. Rozwiązaniem tego problemu mogłoby być zastosowanie bardziej zaawansowanego algorytmu, który używałby metod sztucznej inteligencji takich jak na przykład sieć neuronowa. Podsumowując opisane badania należy stwierdzić, że algorytm spełnia swoją rolę i poprawnie działa na wszystkich obrazach, które były materiałem badawczym wykorzystywanym w niniejszych badaniach. 6. Bibliografia [1] Donnelley M., Knowlwes G., Hearn T., A CAD System for Long-Bone Segmentation and Fracture Detection, Springer Berlin Heidelberg 2008 [2] Gonzalez R., Woods R., Digital Image Processing Third Edition, Prentice Hall 2008 [3] Tadeusiewicz R., Korohoda P., Komputerowa analiza i przetwarzanie obrazów, Wydawnictwo Fundacji Postępu Telekomunikacji, Kraków 1997 [4] Matlab Documentation http://www.mathworks.com/help/matlab/index.html 7. Wykaz stron internetowych, z których zostały pobrane zdjęcia RTG http://www.foundationhouseng.com/osteoporosis.htm http://tihidi.com/2011/06/01/kicks-and-moans-and-broken-bones/ http://www.uwec.edu/kin/diglib/atvid/lowerextremity.htm http://www.nature.com/news/2010/100428/full/news.2010.209.html?s=news_rss http://nearpassfamilyinva.blogspot.com/2010/11/broken-arm-saga-come-toend.html http://www.city-data.com/forum/health-wellness/334603-fractured-tibia-fibulabroken-lower-leg-96.html 12