2009 06 Analiza obrazu z wykorzystaniem ImageJ [Grafika]


Rozwiązania
Analiza obrazu z wykorzystaniem ImageJ
Analiza obrazu z
wykorzystaniem ImageJ
Paweł Wolniewicz
Popularne edytory grafiki rastrowej, na czele z GIMP-em, nie wyczerpują wszystkich możliwości pracy
ze zdjęciami i skanami. Dostępne są również bardziej wyspecjalizowane programy, pozwalające
na zaawansowane przetwarzanie oraz analizę obrazu. Służą one nie tyle do obróbki grafiki, ile do
wydobycia z niej jak największej ilości informacji.
ednym z dobrze znanych narzędzi tego typu jest (rozpoznawanie twarzy ludzkich), a także wielu dyscypli-
ImageJ. Zdobył on wielu zwolenników dzięki nach nauki i przemysłu wymagających badania obrazów
swojej dostępności i wieloplatformowości. Ima- mikroskopowych. Bardziej rozbudowaną listę dziedzin, w
JgeJ można zainstalować na dowolnym kompute- których sprawdzają się te techniki, znalezć można na an-
rze (licencja Public Domain), a także pobrać jego kod zró- glojęzycznych stronach Wikipedii (http://en.wikipedia.org/
dłowy (w języku Java). Wykorzystanie Javy gwarantuje, że wiki/Image_analysis).
aplikację uruchomimy w dowolnym systemie operacyjnym. Na potrzeby tego artykułu wykorzystany zostanie ze-
Program działa także na urządzeniach mobilnych (palmtop staw zdjęć mikroskopowych przedstawiających próbki skał
Sharp Zaurus). węglanowych. W praktyce możliwe jest użycie dowolnych
ImageJ został opracowany w laboratoriach amerykań- fotografii z widocznymi na nich licznymi obiektami, któ-
skiej agencji rządowej National Institutes of Health (NIH). rych cechy zamierzamy dokładnie pomierzyć. Zestaw te-
Instytucja ta zajmuje się badaniami biomedycznymi. To nie stowy nie pozwoli nam natomiast na wypróbowanie tech-
przypadek, że oprogramowanie do analizy obrazu powstało nik analizy obrazu w czasie rzeczywistym, na przykład z
właśnie w tym miejscu. Techniki te są stosowane dzisiaj w kamer internetowych.
medycynie na bardzo szeroką skalę. Ich zarys oraz przykła-
dy wykorzystania można już studiować na polskich uczel- Konfiguracja programu
niach wyższych, także w ramach osobnych studiów pody- Pracę z ImageJ zaczynamy od uruchomienia programu.
plomowych. Aplikacja nie wymaga instalacji. Trzeba jedynie pobrać pa-
Nie oznacza to, że z ImageJ skorzystają jedynie leka- kiet oznaczony jako Linux x86, dostępny na stronie domo-
rze i biolodzy. Komputerowa analiza obrazu znajduje tak- wej narzędzia. Warto również ściągnąć pokazny plik zawie-
że zastosowanie w przetwarzaniu dokumentów (OCR), ma- rający dokumentację. Osobno dostępne są wtyczki. Aktual-
teriałoznawstwie, biometrii oraz systemach bezpieczeństwa nie jest ich co najmniej kilkaset.
10 czerwiec 2009
linux@software.com.pl
Rozwiązania
Analiza obrazu z wykorzystaniem ImageJ
Plik zawierający edytor należy rozpako- nu File > Open Samples. Otwarcie tych obra- na użyć, jeśli otwarliśmy plik RGB. W takiej
wać. Kolejnym krokiem jest przejście do pod- zów wymaga łącza internetowego. Nie musi- sytuacji należy wydać polecenie 8-bit z menu
katalogu ImageJ i wydanie polecenia ./run. my rozpoczynać pracy właśnie od przykłado- Image > Type.
Na ekranie pojawi się wówczas niewielkie wych grafik, ale warto przejrzeć wszystkie za- ImageJ pozwala także na manipulowa-
okno należące do edytora, zawierające główny łączone fotografie, by uzmysłowić sobie, jak nie zestawem barw. Umożliwia to menu Co-
system menu oraz ikony podstawowych narzę- szeroki zakres zastosowań posiada ImageJ. lor. My jednak skupimy się na analizie obra-
dzi edycyjnych. Nieprzypadkowo wiele z obrazów zawiera zów w odcieniach szarości. Jeśli otwarty przez
Warto również zaopatrzyć się we wtyczki. elementy biologiczne i medyczne. Analizo- nas plik został zapisany z paletą RGB, to po-
Najprawdopodobniej będziemy je instalowali wać możemy jednak bardzo przeróżne dane, winniśmy od razu przekonwertować go za po-
w trakcie pracy, gdy już zorientujemy się, cze- nawet całkiem zwyczajne fotografie. Świad- mocą podmenu Type. W razie potrzeby może-
go brakuje nam w podstawowej wersji Ima- czy o tym chociażby załączony do programu my dodatkowo poprawić nieco jakość zdjęcia,
geJ. Wtyczki możemy pobrać ze strony do- portret o nazwie Lena, często wykorzystywa- modyfikując jasność oraz kontrast (Brightness
mowej ImageJ. Odnalezienie potrzebnego na- ny jako przykład obrazujący działanie metod / Contrast), a także balans kolorów, jeśli mi-
rzędzia ułatwia czytelny podział na kategorie. analizy obrazu. mo wszystko pozostaniemy przy obrazie RGB
Ściągnięte wtyczki należy skopiować do kata- Wśród wszystkich przykładów, najbar- (Color Balance). Unikajmy natomiast skalo-
logu plugins i podfolderu o takiej samej na- dziej zbliżony do grafik, które będziemy bada- wania fotografii (Size), gdyż pogorszy to jej
zwie, jak kategoria, do której należy wybrane li, jest plik blobs.gif (File > Open Samples jakość, utrudniając zarazem dobranie właści-
rozszerzenie. Niekiedy trzeba dodatkowo wy- > Blobs). Zawiera on sporą ilość kulistych i wej skali. Wszystkie wymienione polecenia
dać komendę Compile and Run z menu Plu- owalnych obiektów. Naszym zadaniem będzie znajdziemy w podmenu Image > Adjust.
gins. Po ponownym uruchomieniu edytora zmierzenie parametrów każdego z nich. W ty- Kolejnym krokiem powinno być określe-
wtyczka pojawi się w menu Plugins, w pod- powym programie graficznym wymagałoby nie skali obrazu. W tym celu narysujemy w
menu odpowiadającym właściwej kategorii. to ręcznego wskazania krawędzi, odczytania oknie programu linię prostą, a następnie wpro-
Pierwszym krokiem podczas pracy z ImageJ liczby pikseli dzielących wybrane punkty, a wadzimy jej długość (w milimetrach). Powin-
powinno być otwarcie obrazu do analizy (me- następnie przeliczenia ich z uwzględnieniem niśmy wiedzieć zatem, jak silnie powiększone
nu File > Open). Program obsługuje ograniczo- skali obrazu. ImageJ zrobi to wszystko za nas. (lub pomniejszone) są analizowane przez nas
ny zestaw formatów (między innymi TIFF, GIF, Dzięki temu poznamy średnice i powierzchnie obiekty. Skąd zdobyć takie informacje? Dobrą
JPEG, oraz BMP), jednak w większości przy- wszystkich elementów widocznych na zdję- metodę stanowi położenie obok fotografowa-
padków konwersja w zewnętrznym programie ciu. Bardziej zaawansowane funkcje progra- nych przedmiotów linijki. Niektóre mikrosko-
nie jest konieczna. Polecenia pozwalające na mu pozwolą natomiast na przeprowadzenie py wyposażone są też w podziałki. Jeżeli na-
otwieranie innych zródeł danych znajdują się w analizy kształtu każdego ze zidentyfikowa- tomiast obraz uzyskaliśmy w drodze skano-
podmenu File > Import. Standardowo umiesz- nych obiektów. wania, to wystarczy zapamiętać jego rozdziel-
czone jest tam narzędzie Raw. Umożliwia ono Zacznijmy jednak od podstawowych ope- czość w jednostkach dpi. Wartość ta informu-
import grafik zapisanych w formacie innym niż racji edycyjnych. W menu Edit oraz Image je nas, ile pikseli przypada na jeden cal. Tyle
wspierane przez ImageJ. Użytkownik powinien znajdziemy bardzo wiele funkcji znanych z ty- właśnie punktów powinna mieć linia o długo-
jednak określić typ oraz rozmiary obrazu. Dodat- powych edytorów grafiki. Możliwe jest prze- ści 25,4 mm. Jeśli analizowane przez nas zdję-
kowo program posiada też polecenia otwierające prowadzanie rozmaitych operacji na zazna- cie zostało wykonane w dużym powiększeniu
grafiki bezpośrednio z Internetu (URL) oraz fil- czeniach (podmenu Edit > Selection), co z ko- i jego krawędz nie przekracza długości 1 ca-
my w formacie AVI. lei pozwala na dowolne przycinanie i kopio- la, to obliczmy, ilu pikselom odpowiada poje-
ImageJ pozwala na rozbudowywanie ze- wanie zdjęć. Przy okazji warto zajrzeć także dynczy milimetr.
stawu obsługiwanych formatów. Ze strony do menu Edit > Options. Dzięki niemu zmie- Skalę zaznaczamy na obrazie za pomocą
domowej programu można pobrać wtyczkę nimy wiele z domyślnych ustawień aplikacji, narzędzia Straight line selections. Jego ikona
QuickTime Opener (http://rsb.info.nih.gov/ij/ dotyczących między innymi wyglądu, zapisu widoczna jest na pasku w górnej części okna
plugins/movie-opener.html). Pozwala ona na plików oraz zarządzania pamięcią.
otwieranie i pracę z filmami w formacie Qu- Menu Image służy z kolei do przepro-
ickTime. Wtyczka ta, podobnie jak inne narzę- wadzania wstępnej obróbki zdjęć i przygoto-
dzia do importu danych, pojawia się po zain- wania ich do właściwych analiz. Dzięki nie-
stalowaniu w podmenu File > Import. mu możemy między innymi w szybki sposób
zmienić typ obrazu. Dokonujemy tego za po-
Podstawowa edycja mocą podmenu Type. Niekiedy skorzystanie z
Program został wyposażony w zestaw przy- niego może okazać się wręcz konieczne. Czę-
kładowych grafik, dostępnych z poziomu me- ści funkcji (na przykład progowania) nie moż-
Rysunek 2. Segmentacja obrazu metodą progowa-
Rysunek 1. Główne okno ImageJ nia za pomocą funkcji Threshold
www.lpmagazine.org 11
Rozwiązania
Analiza obrazu z wykorzystaniem ImageJ
ImageJ. Po jej wskazaniu przeciągnijmy mysz simy sprawić, by ImageJ poprawnie odróżnił co powyżej znajdują się dwa suwaki, które po-
na odpowiednią odległość, w dowolnym miej- ziarna od tła (tak zwana segmentacja). W tym zwalają na wskazanie tego wycinka histogra-
scu obrazu. W głównym oknie na bieżąco wy- celu skorzystamy z funkcji progowania i bi- mu, który zawiera zakres barw odpowiadający
świetlane będą koordynaty punktów, nad któ- naryzacji. badanym obiektom. Zmiany można obserwo-
rym znajdzie się kursor. Jeśli na zdjęciu znaj- Aatwiejszym rozwiązaniem jest sięgnię- wać w czasie rzeczywistym, jak najlepiej do-
duje się linijka lub inna skala, to wystarczy za- cie po narzędzie, które automatycznie rozpo- stosowując wartość progu. Ostatnim krokiem
znaczyć odpowiedni fragment jej krawędzi. zna obiekty widoczne na fotografii. W tym jest naciśnięcie przycisku Apply, co spowodu-
W tym momencie powinniśmy przekazać celu wydajmy polecenie Process > Binary > je zatwierdzenie wprowadzonej wartości i wy-
do programu informację o długości wykreślo- Make Binary. Po chwili powinniśmy ujrzeć konanie binaryzacji.
nej linii. Umożliwia nam to narzędzie Set Sca- obraz zredukowany do jedynie dwóch barw W niektórych, nieco trudniejszych sytu-
le z menu Analyze. Po jego wybraniu na ekra-  czerni oraz bieli. Tło stanie się niewidoczne, acjach, obie metody progowania mogą nas za-
nie pojawi się niewielkie okienko. W jego gór- natomiast ziarna oznaczone będą jako jedno- wieść. Nie oznacza to, że fotografii po prostu
nej części zobaczmy długość zaznaczonej pro- lite, czarne obszary. Granice wszystkich ana- nie da się poddać analizie. Powinniśmy wów-
stej w pikselach (Distance in Pixels). Jeśli od- lizowanych przedmiotów powinny znajdować czas jednak zastosować dodatkowe filtry lub
biega ona od danych wyliczonych na podsta- się we właściwym miejscu. Jeśli mamy co do wybrać alternatywne metody binaryzacji.
wie wartości dpi, to możemy ją tutaj popra- tego wątpliwości, to lepiej cofnijmy wprowa- Możliwych sytuacji jest całkiem sporo, my
wić. W polu Known Distance powinniśmy na- dzone zmiany (Edit > Undo) i powróćmy do przyjrzymy się tylko wybranym z nich.
tomiast wpisać rzeczywistą długość linii. Po- obrazu w odcieniach szarości. Błędy popeł- Jeśli na obrazie znajdują się punktowe za-
nieważ operujemy na obrazie mikroskopo- nione na tym etapie mogą skutkować niepra- nieczyszczenia, to szumy będzie można praw-
wym, zatem konieczne będzie również wpro- widłowymi obliczeniami wykonanymi w póz- dopodobnie usunąć za pomocą filtra mediano-
wadzenie właściwej jednostki  milimetrów w niejszych etapach analiz. wego. Odpowiednie narzędzie jest dostępne w
miejsce centymetrów. Dokonamy tego za po- Alternatywną metodą binaryzacji obrazu programie ImageJ. Powinniśmy wydać pole-
mocą pola Unit of Length. Wszystkie zmiany jest skorzystanie z funkcji Threshold z me- cenie Process > Filters > Median. Następ-
zatwierdzmy przyciskiem OK. nu Image > Adjust. Daje ona o wiele większą nie program poprosi nas o określenie jedyne-
kontrolę nad procesem progowania. Użytkow- go parametru tego narzędzia  wielkości ma-
Segmentacja obrazów nik może śledzić położenie granic pomiędzy ski (Radius). Efekty możemy obejrzeć jeszcze
Teraz możemy przystąpić do właściwej pra- obiektami a tłem. Standardowo oznaczone są przed zatwierdzeniem jakichkolwiek zmian,
cy. Naszym celem będzie pomierzenie śred- one barwą czerwoną, co można jednak zmie- wystarczy zaznaczyć opcję Preview. Filtr me-
nicy oraz powierzchni wszystkich obiektów nić za pomocą rozwijanej listy widocznej w dianowy zmniejszy ostrość zdjęcia, ale zara-
widocznych na zdjęciu. Najpierw jednak mu- dolnej części okna narzędzia Threshold. Nie- zem powinien usunąć niewielkie artefakty.
Sprawdzmy, czy jego zastosowanie zlikwidu-
je nasze problemy z binaryzacją obrazu.
Innym rodzajem problemu, na który mo-
żemy napotkać, jest zlewanie się sąsiadują-
cych obiektów. Takie niebezpieczeństwo ist-
nieje szczególnie w przypadku zdjęć zbliżo-
nych do tych, które wykorzystane zostały na
potrzeby tego artykułu. Duża liczba ziarn po-
woduje, że przynajmniej część z nich znajdu-
je się w swoim bezpośrednim sąsiedztwie. W
efekcie progowania dwa obiekty mogą łatwo
stać się jednym. Nie powinniśmy pozbywać
się tego kłopotu poprzez zmianę wartości pro-
gu. Spowoduje to w efekcie przesunięcie kra-
wędzi ziarn i nieprawidłowe pomiary ich roz-
miarów oraz powierzchni. Prawidłowym roz-
Rysunek 3. Zbinaryzowany obraz gotowy do wykonania pomiarów wiązaniem problemu będzie zastosowanie
metody działów wodnych.
Także ta funkcja dostępna jest w pakie-
cie ImageJ. Odnajdziemy ją pod nazwą Wa-
tershed, w menu Process > Binary. Aby sko-
rzystać z niej, powinniśmy najpierw przepro-
wadzić binaryzację zdjęcia metodami opi-
sanymi nieco wcześniej. Funkcję Watershed
stosujemy dopiero pózniej, w celu oddziele-
nia ziaren zlepionych z sobą w trakcie progo-
wania. Po uruchomieniu tego narzędzia połą-
czone obiekty powinny zostać rozseparowane.
Rysunek 4. Okienko Results z przykładowymi wynikami uzyskanymi poleceniem Analyze Particles
Sprawdzmy, czy przy okazji algorytm nie po-
12 czerwiec 2009
Rozwiązania
Analiza obrazu z wykorzystaniem ImageJ
dzielił pojedynczych ziaren na dwa osobne. obiektów powinny być uwzględniane pod- ImageJ potrafi to uczynić za nas (po zaznacze-
Jeśli takie błędy nie wystąpiły, to możemy za- czas liczenia powierzchni, to funkcję tę nale- niu opcji Automatic binning), jednak w wielu
pisać zmiany i przejść do kolejnego etapu pra- ży uaktywnić. przypadkach lepsze rezultaty osiągniemy de-
cy, czyli pomiarów ziaren. Koniecznie powinniśmy zaznaczyć opcję cydując się na samodzielne określenie usta-
Niekiedy sytuacja jest nieco bardziej Display Results. Po naciśnięciu przycisku OK, wień histogramu.
skomplikowana, a my stajemy przed koniecz- wyświetli nam ona w osobnym okienku rezul- Najważniejszym poleceniem w oknie Re-
nością rozdzielenia kilku rodzajów obiektów. taty analiz. Znajdziemy tam informacje o po- sults jest zdecydowanie File > Save As. Po-
Ustalenie jednego progu oddzielającego bada- wierzchni każdego z badanych obiektów. Je- zwala ono na zapisanie pliku zawierającego
ne przedmioty od tła nie może wówczas wy- śli zechcemy znalezć wartości maksymalne i wszystkie wykonane pomiary. Będziemy go
starczać. Na szczęście i w takiej sytuacji Ima- minimalne, lub wyliczyć szybko średnią oraz mogli otworzyć w dowolnym arkuszu kal-
geJ radzi sobie bardzo dobrze. Skorzystajmy odchylenie standardowe, to w okienku z wy- kulacyjnym. ImageJ domyślnie zapisuje da-
z dodatkowej wtyczki Multi Otsu Threshold, nikami wydajmy polecenie Summarize z me- ne z rozszerzeniem *.xls. Warto zmienić je na
dostępnej na stronie http://rsbweb.nih.gov/ij/ nu Edit. Wyświetli ona wszystkie te informa- *.csv, gdyż to jest właściwy format pliku za-
plugins/multi-otsu-threshold.html. Służy ona cje poniżej listy rezultatów. Dodatkową moż- chowanego przez program. Do otwarcia da-
do segmentacji obrazów metodą wieloprogo- liwość stanowi wykreślenie histogramu pre- nych warto wykorzystać arkusz kalkulacyj-
wania. Użytkownik ustala liczbę progów (pa- zentującego rozkład wykonanych pomiarów. ny OpenOffice.org Calc. W okienku Import
rametr numLevels). W odróżnieniu od funkcji Funkcja ta jest dostępna w menu Edit pod na- tekstu określmy Separator tekstu jako Tabu-
Threshold, może być ich aż pięć. Nie jest na- zwą Distribution. W okienku zawierającym jej lator. Takie zresztą jest domyślne ustawienie
tomiast konieczne ręczne określanie wartości parametry można wskazać jedną z pomierzo- programu. Po chwili powinniśmy ujrzeć da-
kolejnych progów, w przypadku metody Otsu nych cech (w naszym przypadku Area) i sa- ne, które zgromadziliśmy za pomocą ImageJ.
są one ustalane całkowicie automatycznie. modzielnie przygotować szereg rozdzielczy. Kolejne analizy można wykonać bezpośred-
Pomiary na obiektach Listing 1. Makro zapisujące wyniki pomiarów
Po poprawnej segmentacji zdjęcia i uzyskaniu katalog = getDirectory("image");
obrazu binarnego, możemy rozpocząć wyko- nazwa = getTitle;
nywanie pomiarów na rozpoznanych obiek- rozsz = lastIndexOf(nazwa, ".");
tach. W zasadzie dopiero w tym momencie za- if (rozsz != -1) nazwa = substring(nazwa, 0, rozsz);
czynamy wkraczać na obszary, w których nie- nazwa = nazwa + ".csv";
przydatne stają się standardowe edytory grafi- saveAs("Measurements", katalog+nazwa);
ki. Na początku zaznaczmy całe zdjęcie (stan-
dardowa kombinacja klawiszy Ctrl+A) lub je- Listing 2. Makro przetwarzające wszystkie pliki w katalogu
go fragment, na którym zamierzamy prowa- katalog = getDirectory("Wybierz katalog");
dzić nasze badania. W drugim przypadku po- setBatchMode(true);
winniśmy skorzystać z narzędzia Rectangular pliki = getFileList(katalog);
selections, widocznego na lewym skraju paska for (i=0; iikon ImageJ. {
Funkcje służące do analizowania obiek- sciezka = katalog+pliki[i];
tów znajdują się w menu Analyze. Wybierz- open(sciezka);
my z niego polecenie Analyze Particles. Po- // polecenia
jawi się niewielkie okienko z parametrami. rozsz = lastIndexOf(sciezka, ".");
Przynajmniej część z nich ma duże znacze- if (rozsz != -1) sciezka = substring(sciezka, 0, rozsz);
nie, więc zatrzymajmy się na chwilę przed na- sciezka = sciezka + ".csv";
ciśnięciem klawisza OK. Opcje wyświetlania saveAs("Measurements", sciezka);
części pomiarów (parametry Size oraz Circu- }
larity) możemy pozostawić bez zmian. Jeśli na
zdjęciu znajdują się artefakty o wielkości po- Listing 3. Przykładowe polecenia segmentujące obraz i wykonujące pomiary
jedynczych pikseli, to w przypadku Size war- // binaryzacja obrazu
to zastąpić zero większą wartością. Usunie to run("Make Binary");
błędne pomiary. // zapis obrazu binarnego
Z rozwijanej listy Show wybierzmy na- rozsz = lastIndexOf(sciezka, ".");
tomiast Outlines. Spowoduje to wyświetlenie if (rozsz != -1) sciezka2 = substring(sciezka, 0, rozsz);
zarysów analizowanych obiektów. Jeśli część sciezka2 = sciezka2 + ".png";
spośród nich leży fragmentarycznie poza zdję- saveAs("PNG", sciezka2);
ciem, to warto również uaktywnić opcję Exc- // ustalenie skali
lude on Edges. Wyłączy ona te obiekty z ana- run("Set Scale...", "distance=188.976 known=1 pixel=1 unit=mm global");
liz, dzięki czemu unikniemy uzyskania nie- // wykonanie pomiarów
prawdziwych pomiarów powierzchni. Du- run("Analyze Particles...", "size=0-Infinity circularity=0.00-1.00
że znaczenie może mieć również opcja Inc- show=Nothing exclude clear include");
lude Holes. Jeśli pustki wewnątrz badanych
www.lpmagazine.org 13
Rozwiązania
Analiza obrazu z wykorzystaniem ImageJ
nio w arkuszu kalkulacyjnym. Tutaj też war- ne w okienku Results odpowiadają napisom na ImageJ pozwala nie tylko na dokonywa-
to wykonać histogramy i obliczyć podstawo- zarysach obiektów. nie pomiarów odległości, na których skupiali-
we statystyki. Arkusz kalkulacyjny oferuje w Poszczególne obiekty możemy również śmy się do tej pory. Możliwe jest również ba-
tym celu znacznie więcej funkcji niż sam pro- analizować pojedynczo. W tym celu wybierz- danie kątów. W tym celu warto wykorzystać
gram ImageJ. my narzędzie Wand (tracing) tool widoczne na narzędzie Angle tool widoczne na pasku ikon
Jeśli zamierzamy przeprowadzić na da- pasku z ikonami. Następnie kliknijmy na jed- programu. Po jego wskazaniu i zaznaczeniu na
nych bardziej skomplikowane analizy, to war- nym z obiektów. Zostanie on zaznaczony. Po analizowanym zdjęciu interesującego nas ką-
to przenieść je do środowiska statystyczne- wydaniu polecenia Measure z menu Analyze, ta powinniśmy nacisnąć kombinację klawi-
go R. Pliki w formacie CSV importujemy za na ekranie pojawi się okno Results z wyni- szy Ctrl+M. Alternatywne rozwiązanie stano-
pomocą komendy read.csv. Kolejnym kro- kiem pomiaru powierzchni tego jednego ziar- wi wydanie polecenia Measure z menu Ana-
kiem jest już rozpoczęcie analiz. Podstawo- na. Można też skorzystać ze skrótu klawiatu- lyze. Na ekranie pojawi się okienko Results.
we statystyki możemy obliczyć poleceniem rowego Ctrl+M, które da dokładnie taki sam Odszukajmy w nim kolumnę Angle. To wła-
summary. Sposób korzystania ze środowiska rezultat. śnie tam znajdziemy dokładny pomiar wska-
i języka R opisany jest w licznych podręcz- Mierzenie powierzchni to niejedyne anali- zanego kąta.
nikach, między innymi w polskojęzycznym zy, które wykonujemy za pomocą ImageJ. Pro- W podobny sposób zbadać możemy in-
samouczku Wprowadzenie do środowiska R gram może obliczyć dla nas o wiele więcej pa- ny ważny parametr  stosunek powierzch-
autorstwa Aukasza Komsty, przeznaczonego rametrów, musimy to tylko zadeklarować w ni zajmowanej przez analizowane obiekty do
przede wszystkim dla początkujących użyt- ustawieniach aplikacji. W tym celu wydajmy tła obrazu. Wartość tę uzyskujemy zaznacza-
kowników (http://cran.r-project.org/doc/con- polecenie Set Measurements z menu Analyze. jąc cały obszar zdjęcia lub wybrany jego frag-
trib/Komsta-Wprowadzenie.pdf). Program R Na ekranie pojawi się okienko zawierające bli- ment i wydając komendę Analyze > Measure.
został również zaprezentowany w numerze sko dwadzieścia opcji. Domyślnie zaznaczone W oknie Results odszukujemy następnie ko-
Linux+ 2/2009. są tylko nieliczne spośród nich. Dobór parame- lumnę %Area.
Jeśli przed rozpoczęciem pomiarów pa- trów zależy oczywiście od nas, jednak najbar-
rametr Show określiliśmy jako Outlines, to dziej przydatne okażą się prawdopodobnie po- Analiza wielu obrazów
oprócz okienka z wynikami, na ekranie po- miary środka ciężkości (Center of Mass), śred- Do tej pory badaliśmy wprawdzie wiele
jawił się także obraz prezentujący przetwa- nicy Fereta (Feret's Diameter), prostokąta opi- obiektów jednocześnie, ale za każdym razem
rzane przez nas zdjęcie z naniesionymi zary- sanego na obiekcie (Bounding Rectangle) oraz znajdowały się one na pojedynczej fotografii.
sami analizowanych obiektów. Co więcej, na długości obwodu (Perimeter). Informacje te Jeśli zdjęć jest więcej, to taka metoda nie jest
kształtach umieszczone są numery odpowia- pozwalają nie tylko na określenie rozmiaru ba- oczywiście zbyt wydajna. Na szczęście Ima-
dające poszczególnym pomiarom. Jeśli za- danych obiektów, ale również ich kształtu. geJ pozwala na przetwarzanie wielu obrazów.
tem na zdjęciu znajdowały się jakieś artefak- Zestaw mierzonych parametrów można Problem ten można rozwiązać kilkoma me-
ty, które pojawiły się w efekcie procesu bina- również rozszerzyć za pomocą wtyczek. Spo- todami. My zastosujemy makra oraz wtycz-
ryzacji, to teraz możemy je łatwo zidentyfi- ro przydatnych narzędzi znajdziemy w katalo- kę do wsadowego przetwarzania plików gra-
kować i usunąć z listy wyników. Warto jed- gu zamieszczonym na stronie domowej Ima- ficznych.
nak zrobić to dopiero po zapisaniu pliku CSV geJ, w kategorii Analysis (http://rsb.info.nih. Rozpoczniemy od tworzenia własnych
i otwarciu go w arkuszu kalkulacyjnym. Ima- gov/ij/plugins/index.html#analysis). Większość makr, które potem wykonamy na dużym ze-
geJ udostępnia wprawdzie narzędzia do kaso- z wtyczek jest wyspecjalizowana. Jeżeli intere- stawie plików. Na początku otwórzmy jedną z
wania wierszy z rezultatami, ale tylko poje- suje nas przykładowo analiza kulistości ziarn, fotografii. Następnie wydajmy polecenie Plu-
dynczo, niszcząc przy tym oryginalną nume- to warto pobrać między innymi pakiet Enclose. gins > Macros > Record. Uruchomimy w ten
rację. W efekcie, po usunięciu kilku wyników, sposób moduł rejestrujący makra. Po pojawie-
trudno się zorientować, które numery widocz- niu się na ekranie okna Recorder, możemy za-
cząć wykonywać na załadowanej uprzednio
fotografii wszystkie te procedury, które za-
mierzamy zastosować na pozostałych plikach.
Do tworzonego makra zostaną automatycznie
dodane odpowiednie wpisy.
Wiele spośród analiz wymaga od nas
zredukowania liczby barw lub wręcz bina-
ryzacji obrazu. Nasze makro może się więc
rozpoczynać redukcją palety do odcieni sza-
rości. Pozwala na to polecenie Image > Ty-
pe > 8-bit. Po jego wydaniu w okienku Re-
corder pojawi się linijka run("8-bit");.
W analogiczny sposób wykonajmy wszyst-
kie kolejne polecenia. Ostatnim etapem jest
wprowadzenie nazwy makra w polu Name i
Rysunek 5. Funkcja histogramu umieszczona w Ima- kliknięcie przycisku Create. Na ekranie po-
geJ pozwala na wstępne przeanalizowanie otrzyma- Rysunek 6. Narzędzie Set Measurements pozwa- jawi się jeszcze jedno okienko zawierają-
nych pomiarów la na określenie, co konkretnie ma pomierzyć ImageJ ce pełny skrypt. Wydanie komendy File >
14 czerwiec 2009
Rozwiązania
Analiza obrazu z wykorzystaniem ImageJ
Save zachowa makro. Od tej pory będzie je nie to wciąż nie umożliwia nam jednak wy- Znajduje się ono po linijce z komentarzem //
można wykonać poleceniem Plugins > Ma- godnego wykonywania pomiarów na wielu zapis obrazu binarnego.
cros > Run. plikach. Kolejnym krokiem będzie więc do- Rozpoczynając pracę z wieloma obrazami
Do rejestrowanego przez nas skryp- danie jeszcze jednej wtyczki ImageJ. Może- napotkać można dość poważny problem, któ-
tu można dodać dowolne spośród narzędzi my również pozbyć się problemu rozbudowu- ry ominęliśmy przed chwilą za pomocą pętli
programu ImageJ. Wyszukiwanie narzędzi i jąc nasze makro. Oba rozwiązania mają swoje for ukrytej w makrze. ImageJ domyślnie ładu-
wprowadzanie ich do tworzonych makr bar- dobre i złe strony. je obrazy pojedynczo, co na pozór ogranicza
dzo ułatwia wyszukiwarka funkcji (Command Narzędziem, które bardzo ułatwi nam możliwości programu w zastosowaniach wsa-
Finder). Aby ją otworzyć, należy wydać pole- wsadowe przetwarzanie zdjęć, jest Multiple dowych. Aby usunąć tę niedogodność, należy
cenie Plugins > Utilities > Find Commands. Image Processor. Wtyczkę należy pobrać przejść do okna Results, a następnie wybrać
W oknie wyszukiwarki znajduje się olbrzymia ze strony internetowej jej producenta (http: Options z menu File. W okienku konfigura-
lista funkcji. Każdą z nich można uruchomić //ciar.rcm.upr.edu/projects/imageJ) i skopio- cyjnym zaznaczmy opcję Use JFileChooser to
(Run) lub obejrzeć jej szczegóły (po zaznacze- wać do katalogu plugins. Po ponownym uru- Open/Save i kliknijmy OK. Po ponownym wy-
niu Show full information). Warto wyłączyć chomieniu ImageJ pojawi się ona w menu pro- daniu polecenia File > Open będziemy mie-
opcję Close when running. Zamyka ona okno gramu. Multiple Image Processor pozwala na li już możliwość wybrania kilku plików. Zo-
Command Finder po każdorazowym wydaniu ładowanie wszystkich obrazów znajdujących staną one załadowane jeden po drugim, bez
komendy Run. się w folderze wybranym przez użytkowni- konieczności wracania do okna Open. Od te-
Budując makra należy pamiętać, że nie ka. Dodatkowo można wskazać folder służą- go momentu będziemy mogli otwierać wiele
wszystkie czynności można wykonać automa- cy do zapisu danych. Poza tym wtyczka posia- zdjęć jednocześnie, co w wielu przypadkach
tycznie, gdyż może to doprowadzić do wyko- da funkcję skalowania zdjęć oraz ich konwer- bardzo ułatwi nam pracę.
nania nieprawidłowych pomiarów lub znisz- sji do formatów TIF, JPG oraz BMP. Przed na-
czenia informacji zawartych na obrazach. ciśnięciem klawisza OK nie należy zapomnieć Przydatne wtyczki
ImageJ nie powiadomi o tym użytkownika, o wskazaniu makra, które chcemy wykonać Wykonywanie pomiarów obiektów wykry-
gdyż z punktu widzenia programu nie wystą- (opcja Macro File). tych na obrazie to oczywiście tylko jedno z
piły żadne nieprawidłowości. Tymczasem do- Multiple Image Processor pozwoli nam możliwych zastosowań ImageJ. Ale nawet w
branie niewłaściwego progu spowoduje błęd- przetworzyć dowolną liczbę plików bez ko- tak wąskim zakresie funkcji nie wyczerpali-
ną segmentację obrazu, co z kolei zaowocu- nieczności każdorazowej edycji makr. Poza śmy jeszcze dotąd możliwości tego programu!
je błędnymi pomiarami. Trzeba o tym pamię- tym wtyczka posiada bardzo wygodny inter- Dzięki wtyczkom pisanym przez użytkowni-
tać i unikać wprowadzania do makr tych funk- fejs. Jeżeli jednak napotkamy na problemy i ków możliwe jest zastosowanie o wiele bar-
cji, których parametry musimy niekiedy kory- narzędzie nie zadziała poprawnie (niekiedy dziej zaawansowanych metod pomiarowych.
gować ręcznie. się to zdarza), to pozostaje nam jeszcze drugie
Podczas tworzenia makr, problemy może rozwiązanie  przebudowa makra.
sprawiać zapisywanie wyników. Załóżmy, że W przygotowanym przez nas wcześniej
zamierzamy otworzyć szereg zdjęć i z każde- skrypcie wprowadzmy pętlę for, która po ko-
go z nich uzyskać liczne pomiary. Wszystkie lei załaduje wszystkie pliki znajdujące się we
rezultaty powinniśmy zapisać w osobnych pli- wskazanym katalogu. Nowa wersja makra wi-
kach o nazwach identycznych, jak w przypad- doczna jest na Listingu 2. Polecenie getDi-
ku obrazu (z pominięciem rozszerzenia). Wy- rectory pozwala na wybranie folderu. Ko-
maga to ręcznego wprowadzenia do skryptu menda setBatchMode(true); spowoduje,
kilku dodatkowych linijek. Znajdują się one że otwierane zdjęcia nie będą wyświetlane w
na Listingu 1. Po ich dopisaniu do makra nale- osobnych oknach na pulpicie.
ży usunąć wprowadzoną być może wcześniej Teraz pozostaje nam jedynie uzupełnie-
linię rozpoczynającą się od saveAs("Measu- nie makra o właściwe polecenia przetwarza-
rements". jące obrazy, na Listingu 2 zastąpione linijką
Jak edytować gotowe makra ImageJ? Mo- //polecenia. Możemy tu umieścić komen-
żemy tego dokonać bezpośrednio w progra- dy, które wykonają za nas proces segmentacji Rysunek 7. Rejestracja makra za pomocą narzę-
mie. Wydajmy polecenie Plugins > Macros zdjęć i pomierzą wykryte obiekty. Przykłado- dzia Recorder
> Edit, a następnie wskażmy zarejestrowa- we makro widoczne jest na Listingu 3. Oczy-
ny wcześniej skrypt. Powrócimy do znanego wiście rozwiązanie takie wiąże się z pewnym
nam już edytora skryptu. Do jego końca do- ryzykiem. Automatyczna segmentacja nie za-
piszmy linijki widoczne na Listingu 1. Po- wsze daje dobre rezultaty. Dobrym rozwiąza-
tem wykonajmy makro (Macros > Run Ma- niem jest w takiej sytuacji zapisanie nie tylko
cro lub Ctrl+R). samych rezultatów analiz, ale także wyniko-
W tym momencie ImageJ powinien wy- wego obrazu prezentującego obiekty wykry-
konać wszystkie polecenia zarejestrowane te przez ImageJ. Po przejrzeniu zachowanych
wcześniej w oknie Recorder. Poza tym, w grafik możliwe będzie stwierdzenie, czy ana-
katalogu, w którym znajduje się przetwarza- lizy zostały wykonane poprawnie i czy otrzy- Rysunek 8. Dodatkowe narzędzia do wykonywa-
ne aktualnie zdjęcie, utworzony zostanie plik mane wyniki są wiarygodne. Odpowiednie nia pomiarów  wtyczki Texture Analyzer oraz Gold
CSV zawierający rezultaty analiz. Rozwiąza- polecenie zostało wbudowane w Listing 3. Morph
www.lpmagazine.org 15
Rozwiązania
Analiza obrazu z wykorzystaniem ImageJ
Przyjrzymy się teraz w skrócie trzem narzę- wskazane na stronie domowej narzędzia. War- Opisane wtyczki stanowią jedynie wierz-
dziom wybranym spośród nich. tości, które zamierzamy obliczyć, wskazuje- chołek góry lodowej  ImageJ oferuje łącz-
Obie wtyczki wychodzą daleko poza pro- my w okienku ustawień. nie setki, jeśli nie tysiące narzędzi uzupeł-
ste pomiary obiektów. Pierwsze z narzędzi, Sporą zaletę wtyczki Texture Analyzer sta- niających zestaw funkcji programu. Jeśli po-
Fourier, pozwala na badanie kształtów. Dru- nowi możliwość wbudowania jej do tworzo- gubimy się w nadmiarze dostępnych dodat-
gie (Texture Analyzer) umożliwia przeprowa- nych przez nas makr. Praca z tym narzędziem ków, to rozwiązaniem może być skorzysta-
dzanie analizy tekstury. Narzędzia te przyda- w wielu przypadkach nie wymaga żadnej in- nie z pakietów, które zainstalują dla nas kil-
ją się wówczas, gdy nie wystarczą nam infor- terwencji i ręcznego korygowania parame- ka narzędzi jednocześnie. Aby zobaczyć ta-
macje o rozmiarach obiektów, i gdy potrze- trów bądz korzystania z dodatkowych funkcji. kie zestawy, warto wejść na stronę http:
bujemy jeszcze szczegółowych danych doty- Dzięki temu możemy jednorazowo przeanali- //ij-plugins.sourceforge.net/. Znajdziemy tam
czących kształtu (Fourier) lub powtarzalnych zować wiele obrazów. Wystarczy wprowadzić wtyczki pogrupowane na pakiety zgodnie z
wzorów widocznych na obrazie (Texture Ana- do makra polecenia ich przeznaczeniem oraz rodzajem analiz. Do-
lyzer). Obie wtyczki można pobrać ze strony z datkowo na tej stronie zamieszczono też linki
dodatkami dla ImageJ (http://rsbweb.nih.gov/ run ("8-bit"); run ("GLCM Texture", do innych zestawów wtyczek ImageJ. W po-
ij/plugins/). Instalacja polega na skopiowaniu "enter=1 select=[0 degrees] angular czątkowych etapach pracy z programem ta wi-
plików ściągniętych z sieci do podkatalogu contrast correlation inverse entro- tryna może okazać się więc bardzo pomocna.
plugins i zrestartowaniu programu. py");.
Pierwsze z wymienionych narzędzi (Fo- Podsumowanie
urier) wymaga zaznaczenia zarysu badanego Wymienione wtyczki nie stanowią jedynej al- Poznaliśmy podstawowe funkcje edytora Ima-
obiektu. Sprawdza się więc ona podczas ba- ternatywy dla osób zainteresowanych analizą geJ oraz wykonaliśmy przykładowe anali-
dań kształtu pojedynczych przedmiotów. W kształtów lub tekstur obiektów. Cały czas poja- zy mające na celu zbadanie obrazu przedsta-
celu zaznaczenia obiektu możemy użyć narzę- wiają się nowe narzędzia. Przed kilkoma tygo- wiającego ziarna o zróżnicowanych kształ-
dzia Freehand selections. Inne (na przykład dniami zaprezentowano wtyczkę Gold Morph, tach. To tylko jedno z możliwych, wymienio-
Wand tool) mogą spowodować błąd wtycz- służącą do analizy kształtu ziaren. Oblicza ona nych wcześniej zastosowań tej aplikacji. Pro-
ki. Po zaznaczeniu przedmiotu odszukujemy kilkanaście parametrów opisujących kształt gram znajduje zastosowanie w wielu innych
polecenie Fourier w menu Plugins i po wpro- obiektów. Wtyczka znajduje się w archiwum dziedzinach i podczas badania zdjęć o bardzo
wadzeniu parametrów narzędzia otrzymujemy czasopisma Computers & Geosciences (http: zróżnicowanym charakterze. Zaprezentowany
wyniki analizy. //www.iamg.org/images/File/documents/oldftp/ przykład analizy stanowi więc jedynie wpro-
Jeśli wydzielenie poszczególnych obiek- VOL35/v35-02-17.zip). W miesięczniku tym wadzenie do pracy z ImageJ. Artykuł nie po-
tów na obrazie jest trudne, a na zdjęciu wi- pojawił się również artykuł prezentujący moż- ruszył też kwestii analizy obrazu wideo, choć
doczne są raczej powtarzalne tekstury, to bar- liwości nowego narzędzia i stanowiący jego służące do tego narzędzia również znajdują się
dzo pomocna może okazać się wtyczka Textu- dokumentację, jednak nie jest on niestety do- w programie, a także pod postacią wtyczek.
re Analyzer. Przed skorzystaniem z niej nale- stępny publicznie. Zasady działania wtyczki są Warto również pamiętać, że ImageJ nie jest
ży przekształcić otwarty obraz do odcieni sza- jednak jasne i korzystanie z pomocy prawdopo- jedynym narzędziem pozwalającym na analizę
rości komendą Image > Type > 8-bit. Oczy- dobnie okaże się z reguły niepotrzebne. obrazów w systemie Linux. Jego zaletę stano-
wiście można również zastosować inne na- Po uruchomieniu narzędzia Gold Morph wi możliwość wykonania bardzo zaawansowa-
rzędzia z menu Edit oraz Image, jeśli skorzy- zostaniemy poproszeni o wskazanie plików nych badań w trybie graficznym. System makr
stanie z nich uznamy za stosowne. Następnie przeznaczonych do analizy. Następnie otrzy- pozwala użytkownikowi na dodawanie wła-
odnajdujemy wtyczkę GLCM Texture w me- mamy możliwość określenia ustawień wtycz- snych funkcji i automatyzację analiz. Mimo to,
nu Plugins, w tym podkatalogu, do którego ki. W okienku Place Gold Morphology Ana- w niektórych sytuacjach warto zainteresować
skopiowaliśmy wcześniej plik GLCM_Textu- lysis wprowadzamy minimalną i maksymalną się alternatywnym oprogramowaniem. Ogrom-
re.class. powierzchnię badanych cząstek, a także decy- ne możliwości oferuje biblioteka OpenCV. In-
Wtyczka Texture Analyzer pozwala na ob- dujemy, czy wyniki analiz będą prezentowa- formacje o niej można znalezć na stronie http:
liczenie pięciu parametrów tekstury zapropo- ne także w postaci graficznej. Po zatwierdze- //opencv.willowgarage.com/wiki/. Ta wieloplat-
nowanych przez Haralicka. Odstępstwa od niu ustawień na ekranie pojawią się rezulta- formowa biblioteka pozwala na tworzenie roz-
zaproponowanej przez niego metodologii są ty pomiarów. budowanych aplikacji analizujących obraz z
plików graficznych oraz kamer. Programowa-
nie w C++ pozwala ponadto na zwiększenie
W Sieci wydajności tworzonych programów. Poza tym
możliwe jest wyposażenie aplikacji w graficzne
" http://rsbweb.nih.gov/ij/  ImageJ;
interfejsy. Nie wymaga to dużego wysiłku pro-
" http://rsbweb.nih.gov/ij/plugins/  Wtyczki dla ImageJ.
gramistycznego.
Oczywiście OpenCV nie umożliwia prze-
prowadzania analiz w trybie graficznym, tyl-
O autorze ko przy pomocy klikania myszką. Biblioteka
sprawdza się zatem w innych zastosowaniach
Autor korzysta z Linuksa od ponad dziesięciu lat, zajmuje się wdrażaniem oprogramowa-
niż ImageJ. Niemniej stanowi kolejny wydaj-
nia Open Source.
ny system umożliwiający zaawansowaną ana-
Kontakt z autorem: pawelw@open-enterprise.net.
lizę obrazu w Linuksie.
16 czerwiec 2009


Wyszukiwarka