2009 06 Analiza obrazu z wykorzystaniem ImageJ [Grafika]

background image

Rozwiązania

Analiza obrazu z wykorzystaniem ImageJ

10

czerwiec 2009

Rozwiązania

Analiza obrazu z wykorzystaniem ImageJ

11

www.lpmagazine.org

lin

ux

@

so

ftw

ar

e.

co

m

.p

l

J

ednym z dobrze znanych narzędzi tego typu jest
ImageJ. Zdobył on wielu zwolenników dzięki
swojej dostępności i wieloplatformowości. Ima-
geJ można zainstalować na dowolnym kompute-

rze (licencja Public Domain), a także pobrać jego kod źró-
dłowy (w języku Java). Wykorzystanie Javy gwarantuje, że
aplikację uruchomimy w dowolnym systemie operacyjnym.
Program działa także na urządzeniach mobilnych (palmtop
Sharp Zaurus).

ImageJ został opracowany w laboratoriach amerykań-

skiej agencji rządowej National Institutes of Health (NIH).
Instytucja ta zajmuje się badaniami biomedycznymi. To nie
przypadek, że oprogramowanie do analizy obrazu powstało
właśnie w tym miejscu. Techniki te są stosowane dzisiaj w
medycynie na bardzo szeroką skalę. Ich zarys oraz przykła-
dy wykorzystania można już studiować na polskich uczel-
niach wyższych, także w ramach osobnych studiów pody-
plomowych.

Nie oznacza to, że z ImageJ skorzystają jedynie leka-

rze i biolodzy. Komputerowa analiza obrazu znajduje tak-
że zastosowanie w przetwarzaniu dokumentów (OCR), ma-
teriałoznawstwie, biometrii oraz systemach bezpieczeństwa

(rozpoznawanie twarzy ludzkich), a także wielu dyscypli-
nach nauki i przemysłu wymagających badania obrazów
mikroskopowych. Bardziej rozbudowaną listę dziedzin, w
których sprawdzają się te techniki, znaleźć można na an-
glojęzycznych stronach Wikipedii (http://en.wikipedia.org/
wiki/Image_analysis
).

Na potrzeby tego artykułu wykorzystany zostanie ze-

staw zdjęć mikroskopowych przedstawiających próbki skał
węglanowych. W praktyce możliwe jest użycie dowolnych
fotografii z widocznymi na nich licznymi obiektami, któ-
rych cechy zamierzamy dokładnie pomierzyć. Zestaw te-
stowy nie pozwoli nam natomiast na wypróbowanie tech-
nik analizy obrazu w czasie rzeczywistym, na przykład z
kamer internetowych.

Konfiguracja programu

Pracę z ImageJ zaczynamy od uruchomienia programu.
Aplikacja nie wymaga instalacji. Trzeba jedynie pobrać pa-
kiet oznaczony jako Linux x86, dostępny na stronie domo-
wej narzędzia. Warto również ściągnąć pokaźny plik zawie-
rający dokumentację. Osobno dostępne są wtyczki. Aktual-
nie jest ich co najmniej kilkaset.

Analiza obrazu z

wykorzystaniem ImageJ

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.

Paweł Wolniewicz

background image

Rozwiązania

Analiza obrazu z wykorzystaniem ImageJ

10

czerwiec 2009

Rozwiązania

Analiza obrazu z wykorzystaniem ImageJ

11

www.lpmagazine.org

Plik zawierający edytor należy rozpako-

wać. Kolejnym krokiem jest przejście do pod-
katalogu ImageJ i wydanie polecenia

./run

.

Na ekranie pojawi się wówczas niewielkie
okno należące do edytora, zawierające główny
system menu oraz ikony podstawowych narzę-
dzi edycyjnych.

Warto również zaopatrzyć się we wtyczki.

Najprawdopodobniej będziemy je instalowali
w trakcie pracy, gdy już zorientujemy się, cze-
go brakuje nam w podstawowej wersji Ima-
geJ. Wtyczki możemy pobrać ze strony do-
mowej ImageJ. Odnalezienie potrzebnego na-
rzędzia ułatwia czytelny podział na kategorie.
Ściągnięte wtyczki należy skopiować do kata-
logu

plugins

i podfolderu o takiej samej na-

zwie, jak kategoria, do której należy wybrane
rozszerzenie. Niekiedy trzeba dodatkowo wy-
dać komendę Compile and Run z menu Plu-
gins
. Po ponownym uruchomieniu edytora
wtyczka pojawi się w menu Plugins, w pod-
menu odpowiadającym właściwej kategorii.

Pierwszym krokiem podczas pracy z ImageJ

powinno być otwarcie obrazu do analizy (me-
nu File > Open). Program obsługuje ograniczo-
ny zestaw formatów (między innymi TIFF, GIF,
JPEG, oraz BMP), jednak w większości przy-
padków konwersja w zewnętrznym programie
nie jest konieczna. Polecenia pozwalające na
otwieranie innych źródeł danych znajdują się w
podmenu File > Import. Standardowo umiesz-
czone jest tam narzędzie Raw. Umożliwia ono
import grafik zapisanych w formacie innym niż
wspierane przez ImageJ. Użytkownik powinien
jednak określić typ oraz rozmiary obrazu. Dodat-
kowo program posiada też polecenia otwierające
grafiki bezpośrednio z Internetu (URL) oraz fil-
my w formacie AVI.

ImageJ pozwala na rozbudowywanie ze-

stawu obsługiwanych formatów. Ze strony
domowej programu można pobrać wtyczkę
QuickTime Opener (http://rsb.info.nih.gov/ij/
plugins/movie-opener.html
). Pozwala ona na
otwieranie i pracę z filmami w formacie Qu-
ickTime. Wtyczka ta, podobnie jak inne narzę-
dzia do importu danych, pojawia się po zain-
stalowaniu w podmenu File > Import.

Podstawowa edycja

Program został wyposażony w zestaw przy-
kładowych grafik, dostępnych z poziomu me-

nu File > Open Samples. Otwarcie tych obra-
zów wymaga łącza internetowego. Nie musi-
my rozpoczynać pracy właśnie od przykłado-
wych grafik, ale warto przejrzeć wszystkie za-
łączone fotografie, by uzmysłowić sobie, jak
szeroki zakres zastosowań posiada ImageJ.
Nieprzypadkowo wiele z obrazów zawiera
elementy biologiczne i medyczne. Analizo-
wać możemy jednak bardzo przeróżne dane,
nawet całkiem zwyczajne fotografie. Świad-
czy o tym chociażby załączony do programu
portret o nazwie Lena, często wykorzystywa-
ny jako przykład obrazujący działanie metod
analizy obrazu.

Wśród wszystkich przykładów, najbar-

dziej zbliżony do grafik, które będziemy bada-
li, jest plik

blobs.gif

(File > Open Samples

> Blobs). Zawiera on sporą ilość kulistych i
owalnych obiektów. Naszym zadaniem będzie
zmierzenie parametrów każdego z nich. W ty-
powym programie graficznym wymagałoby
to ręcznego wskazania krawędzi, odczytania
liczby pikseli dzielących wybrane punkty, a
następnie przeliczenia ich z uwzględnieniem
skali obrazu. ImageJ zrobi to wszystko za nas.
Dzięki temu poznamy średnice i powierzchnie
wszystkich elementów widocznych na zdję-
ciu. Bardziej zaawansowane funkcje progra-
mu pozwolą natomiast na przeprowadzenie
analizy kształtu każdego ze zidentyfikowa-
nych obiektów.

Zacznijmy jednak od podstawowych ope-

racji edycyjnych. W menu Edit oraz Image
znajdziemy bardzo wiele funkcji znanych z ty-
powych edytorów grafiki. Możliwe jest prze-
prowadzanie rozmaitych operacji na zazna-
czeniach (podmenu Edit > Selection), co z ko-
lei pozwala na dowolne przycinanie i kopio-
wanie zdjęć. Przy okazji warto zajrzeć także
do menu Edit > Options. Dzięki niemu zmie-
nimy wiele z domyślnych ustawień aplikacji,
dotyczących między innymi wyglądu, zapisu
plików oraz zarządzania pamięcią.

Menu Image służy z kolei do przepro-

wadzania wstępnej obróbki zdjęć i przygoto-
wania ich do właściwych analiz. Dzięki nie-
mu możemy między innymi w szybki sposób
zmienić typ obrazu. Dokonujemy tego za po-
mocą podmenu Type. Niekiedy skorzystanie z
niego może okazać się wręcz konieczne. Czę-
ści funkcji (na przykład progowania) nie moż-

na użyć, jeśli otwarliśmy plik RGB. W takiej
sytuacji należy wydać polecenie 8-bit z menu
Image > Type.

ImageJ pozwala także na manipulowa-

nie zestawem barw. Umożliwia to menu Co-
lor
. My jednak skupimy się na analizie obra-
zów w odcieniach szarości. Jeśli otwarty przez
nas plik został zapisany z paletą RGB, to po-
winniśmy od razu przekonwertować go za po-
mocą podmenu Type. W razie potrzeby może-
my dodatkowo poprawić nieco jakość zdjęcia,
modyfikując jasność oraz kontrast (Brightness
/ Contrast
), a także balans kolorów, jeśli mi-
mo wszystko pozostaniemy przy obrazie RGB
(Color Balance). Unikajmy natomiast skalo-
wania fotografii (Size), gdyż pogorszy to jej
jakość, utrudniając zarazem dobranie właści-
wej skali. Wszystkie wymienione polecenia
znajdziemy w podmenu Image > Adjust.

Kolejnym krokiem powinno być określe-

nie skali obrazu. W tym celu narysujemy w
oknie programu linię prostą, a następnie wpro-
wadzimy jej długość (w milimetrach). Powin-
niśmy wiedzieć zatem, jak silnie powiększone
(lub pomniejszone) są analizowane przez nas
obiekty. Skąd zdobyć takie informacje? Dobrą
metodę stanowi położenie obok fotografowa-
nych przedmiotów linijki. Niektóre mikrosko-
py wyposażone są też w podziałki. Jeżeli na-
tomiast obraz uzyskaliśmy w drodze skano-
wania, to wystarczy zapamiętać jego rozdziel-
czość w jednostkach dpi. Wartość ta informu-
je nas, ile pikseli przypada na jeden cal. Tyle
właśnie punktów powinna mieć linia o długo-
ści 25,4 mm. Jeśli analizowane przez nas zdję-
cie zostało wykonane w dużym powiększeniu
i jego krawędź nie przekracza długości 1 ca-
la, to obliczmy, ilu pikselom odpowiada poje-
dynczy milimetr.

Skalę zaznaczamy na obrazie za pomocą

narzędzia Straight line selections. Jego ikona
widoczna jest na pasku w górnej części okna

Rysunek 1.

Główne okno ImageJ

Rysunek 2.

Segmentacja obrazu metodą progowa-

nia za pomocą funkcji Threshold

background image

12

Rozwiązania

Analiza obrazu z wykorzystaniem ImageJ

czerwiec 2009

13

Rozwiązania

Analiza obrazu z wykorzystaniem ImageJ

www.lpmagazine.org

ImageJ. Po jej wskazaniu przeciągnijmy mysz
na odpowiednią odległość, w dowolnym miej-
scu obrazu. W głównym oknie na bieżąco wy-
świetlane będą koordynaty punktów, nad któ-
rym znajdzie się kursor. Jeśli na zdjęciu znaj-
duje się linijka lub inna skala, to wystarczy za-
znaczyć odpowiedni fragment jej krawędzi.

W tym momencie powinniśmy przekazać

do programu informację o długości wykreślo-
nej linii. Umożliwia nam to narzędzie Set Sca-
le
z menu Analyze. Po jego wybraniu na ekra-
nie pojawi się niewielkie okienko. W jego gór-
nej części zobaczmy długość zaznaczonej pro-
stej w pikselach (Distance in Pixels). Jeśli od-
biega ona od danych wyliczonych na podsta-
wie wartości dpi, to możemy ją tutaj popra-
wić. W polu Known Distance powinniśmy na-
tomiast wpisać rzeczywistą długość linii. Po-
nieważ operujemy na obrazie mikroskopo-
wym, zatem konieczne będzie również wpro-
wadzenie właściwej jednostki – milimetrów w
miejsce centymetrów. Dokonamy tego za po-
mocą pola Unit of Length. Wszystkie zmiany
zatwierdźmy przyciskiem OK.

Segmentacja obrazów

Teraz możemy przystąpić do właściwej pra-
cy. Naszym celem będzie pomierzenie śred-
nicy oraz powierzchni wszystkich obiektów
widocznych na zdjęciu. Najpierw jednak mu-

simy sprawić, by ImageJ poprawnie odróżnił
ziarna od tła (tak zwana segmentacja). W tym
celu skorzystamy z funkcji progowania i bi-
naryzacji.

Łatwiejszym rozwiązaniem jest sięgnię-

cie po narzędzie, które automatycznie rozpo-
zna obiekty widoczne na fotografii. W tym
celu wydajmy polecenie Process > Binary >
Make Binary
. Po chwili powinniśmy ujrzeć
obraz zredukowany do jedynie dwóch barw
– czerni oraz bieli. Tło stanie się niewidoczne,
natomiast ziarna oznaczone będą jako jedno-
lite, czarne obszary. Granice wszystkich ana-
lizowanych przedmiotów powinny znajdować
się we właściwym miejscu. Jeśli mamy co do
tego wątpliwości, to lepiej cofnijmy wprowa-
dzone zmiany (Edit > Undo) i powróćmy do
obrazu w odcieniach szarości. Błędy popeł-
nione na tym etapie mogą skutkować niepra-
widłowymi obliczeniami wykonanymi w póź-
niejszych etapach analiz.

Alternatywną metodą binaryzacji obrazu

jest skorzystanie z funkcji Threshold z me-
nu Image > Adjust. Daje ona o wiele większą
kontrolę nad procesem progowania. Użytkow-
nik może śledzić położenie granic pomiędzy
obiektami a tłem. Standardowo oznaczone są
one barwą czerwoną, co można jednak zmie-
nić za pomocą rozwijanej listy widocznej w
dolnej części okna narzędzia Threshold. Nie-

co powyżej znajdują się dwa suwaki, które po-
zwalają na wskazanie tego wycinka histogra-
mu, który zawiera zakres barw odpowiadający
badanym obiektom. Zmiany można obserwo-
wać w czasie rzeczywistym, jak najlepiej do-
stosowując wartość progu. Ostatnim krokiem
jest naciśnięcie przycisku Apply, co spowodu-
je zatwierdzenie wprowadzonej wartości i wy-
konanie binaryzacji.

W niektórych, nieco trudniejszych sytu-

acjach, obie metody progowania mogą nas za-
wieść. Nie oznacza to, że fotografii po prostu
nie da się poddać analizie. Powinniśmy wów-
czas jednak zastosować dodatkowe filtry lub
wybrać alternatywne metody binaryzacji.
Możliwych sytuacji jest całkiem sporo, my
przyjrzymy się tylko wybranym z nich.

Jeśli na obrazie znajdują się punktowe za-

nieczyszczenia, to szumy będzie można praw-
dopodobnie usunąć za pomocą filtra mediano-
wego. Odpowiednie narzędzie jest dostępne w
programie ImageJ. Powinniśmy wydać pole-
cenie Process > Filters > Median. Następ-
nie program poprosi nas o określenie jedyne-
go parametru tego narzędzia – wielkości ma-
ski (Radius). Efekty możemy obejrzeć jeszcze
przed zatwierdzeniem jakichkolwiek zmian,
wystarczy zaznaczyć opcję Preview. Filtr me-
dianowy zmniejszy ostrość zdjęcia, ale zara-
zem powinien usunąć niewielkie artefakty.
Sprawdźmy, 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-
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óźniej, w celu oddziele-
nia ziaren zlepionych z sobą w trakcie progo-
wania. Po uruchomieniu tego narzędzia połą-
czone obiekty powinny zostać rozseparowane.
Sprawdźmy, czy przy okazji algorytm nie po-

Rysunek 3.

Zbinaryzowany obraz gotowy do wykonania pomiarów

Rysunek 4.

Okienko Results z przykładowymi wynikami uzyskanymi poleceniem Analyze Particles

background image

12

Rozwiązania

Analiza obrazu z wykorzystaniem ImageJ

czerwiec 2009

13

Rozwiązania

Analiza obrazu z wykorzystaniem ImageJ

www.lpmagazine.org

dzielił pojedynczych ziaren na dwa osobne.
Jeśli takie błędy nie wystąpiły, to możemy za-
pisać zmiany i przejść do kolejnego etapu pra-
cy, czyli pomiarów ziaren.

Niekiedy sytuacja jest nieco bardziej

skomplikowana, a my stajemy przed koniecz-
nością rozdzielenia kilku rodzajów obiektów.
Ustalenie jednego progu oddzielającego bada-
ne przedmioty od tła nie może wówczas wy-
starczać. Na szczęście i w takiej sytuacji Ima-
geJ radzi sobie bardzo dobrze. Skorzystajmy
z dodatkowej wtyczki Multi Otsu Threshold,
dostępnej na stronie http://rsbweb.nih.gov/ij/
plugins/multi-otsu-threshold.html
. Służy ona
do segmentacji obrazów metodą wieloprogo-
wania. Użytkownik ustala liczbę progów (pa-
rametr numLevels). W odróżnieniu od funkcji
Threshold, może być ich aż pięć. Nie jest na-
tomiast konieczne ręczne określanie wartości
kolejnych progów, w przypadku metody Otsu
są one ustalane całkowicie automatycznie.

Pomiary na obiektach

Po poprawnej segmentacji zdjęcia i uzyskaniu
obrazu binarnego, możemy rozpocząć wyko-
nywanie pomiarów na rozpoznanych obiek-
tach. W zasadzie dopiero w tym momencie za-
czynamy wkraczać na obszary, w których nie-
przydatne stają się standardowe edytory grafi-
ki. Na początku zaznaczmy całe zdjęcie (stan-
dardowa kombinacja klawiszy Ctrl+A) lub je-
go fragment, na którym zamierzamy prowa-
dzić nasze badania. W drugim przypadku po-
winniśmy skorzystać z narzędzia Rectangular
selections
, widocznego na lewym skraju paska
ikon ImageJ.

Funkcje służące do analizowania obiek-

tów znajdują się w menu Analyze. Wybierz-
my z niego polecenie Analyze Particles. Po-
jawi się niewielkie okienko z parametrami.
Przynajmniej część z nich ma duże znacze-
nie, więc zatrzymajmy się na chwilę przed na-
ciśnięciem klawisza OK. Opcje wyświetlania
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-
jedynczych pikseli, to w przypadku Size war-
to zastąpić zero większą wartością. Usunie to
błędne pomiary.

Z rozwijanej listy Show wybierzmy na-

tomiast Outlines. Spowoduje to wyświetlenie
zarysów analizowanych obiektów. Jeśli część
spośród nich leży fragmentarycznie poza zdję-
ciem, to warto również uaktywnić opcję Exc-
lude on Edges
. Wyłączy ona te obiekty z ana-
liz, dzięki czemu unikniemy uzyskania nie-
prawdziwych pomiarów powierzchni. Du-
że znaczenie może mieć również opcja Inc-
lude Holes
. Jeśli pustki wewnątrz badanych

obiektów powinny być uwzględniane pod-
czas liczenia powierzchni, to funkcję tę nale-
ży uaktywnić.

Koniecznie powinniśmy zaznaczyć opcję

Display Results. Po naciśnięciu przycisku OK,
wyświetli nam ona w osobnym okienku rezul-
taty analiz. Znajdziemy tam informacje o po-
wierzchni każdego z badanych obiektów. Je-
śli zechcemy znaleźć wartości maksymalne i
minimalne, lub wyliczyć szybko średnią oraz
odchylenie standardowe, to w okienku z wy-
nikami wydajmy polecenie Summarize z me-
nu Edit. Wyświetli ona wszystkie te informa-
cje poniżej listy rezultatów. Dodatkową moż-
liwość stanowi wykreślenie histogramu pre-
zentującego rozkład wykonanych pomiarów.
Funkcja ta jest dostępna w menu Edit pod na-
zwą Distribution. W okienku zawierającym jej
parametry można wskazać jedną z pomierzo-
nych cech (w naszym przypadku Area) i sa-
modzielnie przygotować szereg rozdzielczy.

ImageJ potrafi to uczynić za nas (po zaznacze-
niu opcji Automatic binning), jednak w wielu
przypadkach lepsze rezultaty osiągniemy de-
cydując się na samodzielne określenie usta-
wień histogramu.

Najważniejszym poleceniem w oknie Re-

sults jest zdecydowanie File > Save As. Po-
zwala ono na zapisanie pliku zawierającego
wszystkie wykonane pomiary. Będziemy go
mogli otworzyć w dowolnym arkuszu kal-
kulacyjnym. ImageJ domyślnie zapisuje da-
ne z rozszerzeniem *.xls. Warto zmienić je na
*.csv, gdyż to jest właściwy format pliku za-
chowanego przez program. Do otwarcia da-
nych warto wykorzystać arkusz kalkulacyj-
ny OpenOffice.org Calc. W okienku Import
tekstu
określmy Separator tekstu jako Tabu-
lator
. Takie zresztą jest domyślne ustawienie
programu. Po chwili powinniśmy ujrzeć da-
ne, które zgromadziliśmy za pomocą ImageJ.
Kolejne analizy można wykonać bezpośred-

Listing 1.

Makro zapisujące wyniki pomiarów

katalog

=

getDirectory

(

"image"

);

nazwa

=

getTitle

;

rozsz

=

lastIndexOf

(

nazwa

,

"."

);

if

(

rozsz

!= -

1

)

nazwa

=

substring

(

nazwa

,

0

,

rozsz

);

nazwa

=

nazwa

+

".csv"

;

saveAs

(

"Measurements"

,

katalog

+

nazwa

);

Listing 2.

Makro przetwarzające wszystkie pliki w katalogu

katalog

=

getDirectory

(

"Wybierz katalog"

);

setBatchMode

(

true

);

pliki

=

getFileList

(

katalog

);

for

(

i

=

0

;

i

<

pliki

.

length

;

i

++)

{

sciezka

=

katalog

+

pliki

[

i

];

open

(

sciezka

);

// polecenia

rozsz

=

lastIndexOf

(

sciezka

,

"."

);

if

(

rozsz

!= -

1

)

sciezka

=

substring

(

sciezka

,

0

,

rozsz

);

sciezka

=

sciezka

+

".csv"

;

saveAs

(

"Measurements"

,

sciezka

);

}

Listing 3.

Przykładowe polecenia segmentujące obraz i wykonujące pomiary

// binaryzacja obrazu

run

(

"Make Binary"

);

// zapis obrazu binarnego

rozsz

=

lastIndexOf

(

sciezka

,

"."

);

if

(

rozsz

!= -

1

)

sciezka2

=

substring

(

sciezka

,

0

,

rozsz

);

sciezka2

=

sciezka2

+

".png"

;

saveAs

(

"PNG"

,

sciezka2

);

// ustalenie skali

run

(

"Set Scale..."

,

"distance=188.976 known=1 pixel=1 unit=mm global"

);

// wykonanie pomiarów

run

(

"Analyze Particles..."

,

"size=0-Infinity circularity=0.00-1.00

show=Nothing exclude clear include"

);

background image

14

Rozwiązania

Analiza obrazu z wykorzystaniem ImageJ

czerwiec 2009

15

Rozwiązania

Analiza obrazu z wykorzystaniem ImageJ

www.lpmagazine.org

nio w arkuszu kalkulacyjnym. Tutaj też war-
to wykonać histogramy i obliczyć podstawo-
we statystyki. Arkusz kalkulacyjny oferuje w
tym celu znacznie więcej funkcji niż sam pro-
gram ImageJ.

Jeśli zamierzamy przeprowadzić na da-

nych bardziej skomplikowane analizy, to war-
to przenieść je do środowiska statystyczne-
go R. Pliki w formacie CSV importujemy za
pomocą komendy

read.csv

. Kolejnym kro-

kiem jest już rozpoczęcie analiz. Podstawo-
we statystyki możemy obliczyć poleceniem

summary

. Sposób korzystania ze środowiska

i języka R opisany jest w licznych podręcz-
nikach, między innymi w polskojęzycznym
samouczku Wprowadzenie do środowiska R
autorstwa Łukasza Komsty, przeznaczonego
przede wszystkim dla początkujących użyt-
kowników (http://cran.r-project.org/doc/con-
trib/Komsta-Wprowadzenie.pdf
). Program R
został również zaprezentowany w numerze
Linux+ 2/2009.

Jeśli przed rozpoczęciem pomiarów pa-

rametr Show określiliśmy jako Outlines, to
oprócz okienka z wynikami, na ekranie po-
jawił się także obraz prezentujący przetwa-
rzane przez nas zdjęcie z naniesionymi zary-
sami analizowanych obiektów. Co więcej, na
kształtach umieszczone są numery odpowia-
dające poszczególnym pomiarom. Jeśli za-
tem na zdjęciu znajdowały się jakieś artefak-
ty, które pojawiły się w efekcie procesu bina-
ryzacji, to teraz możemy je łatwo zidentyfi-
kować i usunąć z listy wyników. Warto jed-
nak zrobić to dopiero po zapisaniu pliku CSV
i otwarciu go w arkuszu kalkulacyjnym. Ima-
geJ udostępnia wprawdzie narzędzia do kaso-
wania wierszy z rezultatami, ale tylko poje-
dynczo, niszcząc przy tym oryginalną nume-
rację. W efekcie, po usunięciu kilku wyników,
trudno się zorientować, które numery widocz-

ne w okienku Results odpowiadają napisom na
zarysach obiektów.

Poszczególne obiekty możemy również

analizować pojedynczo. W tym celu wybierz-
my narzędzie Wand (tracing) tool widoczne na
pasku z ikonami. Następnie kliknijmy na jed-
nym z obiektów. Zostanie on zaznaczony. Po
wydaniu polecenia Measure z menu Analyze,
na ekranie pojawi się okno Results z wyni-
kiem pomiaru powierzchni tego jednego ziar-
na. Można też skorzystać ze skrótu klawiatu-
rowego Ctrl+M, które da dokładnie taki sam
rezultat.

Mierzenie powierzchni to niejedyne anali-

zy, które wykonujemy za pomocą ImageJ. Pro-
gram może obliczyć dla nas o wiele więcej pa-
rametrów, musimy to tylko zadeklarować w
ustawieniach aplikacji. W tym celu wydajmy
polecenie Set Measurements z menu Analyze.
Na ekranie pojawi się okienko zawierające bli-
sko dwadzieścia opcji. Domyślnie zaznaczone
są tylko nieliczne spośród nich. Dobór parame-
trów zależy oczywiście od nas, jednak najbar-
dziej przydatne okażą się prawdopodobnie po-
miary środka ciężkości (Center of Mass), śred-
nicy Fereta (Feret's Diameter), prostokąta opi-
sanego na obiekcie (Bounding Rectangle) oraz
długości obwodu (Perimeter). Informacje te
pozwalają nie tylko na określenie rozmiaru ba-
danych obiektów, ale również ich kształtu.

Zestaw mierzonych parametrów można

również rozszerzyć za pomocą wtyczek. Spo-
ro przydatnych narzędzi znajdziemy w katalo-
gu zamieszczonym na stronie domowej Ima-
geJ, w kategorii Analysis (http://rsb.info.nih.
gov/ij/plugins/index.html#analysis
). Większość
z wtyczek jest wyspecjalizowana. Jeżeli intere-
suje nas przykładowo analiza kulistości ziarn,
to warto pobrać między innymi pakiet Enclose.

ImageJ pozwala nie tylko na dokonywa-

nie pomiarów odległości, na których skupiali-
śmy się do tej pory. Możliwe jest również ba-
danie kątów. W tym celu warto wykorzystać
narzędzie Angle tool widoczne na pasku ikon
programu. Po jego wskazaniu i zaznaczeniu na
analizowanym zdjęciu interesującego nas ką-
ta powinniśmy nacisnąć kombinację klawi-
szy Ctrl+M. Alternatywne rozwiązanie stano-
wi wydanie polecenia Measure z menu Ana-
lyze
. Na ekranie pojawi się okienko Results.
Odszukajmy w nim kolumnę Angle. To wła-
śnie tam znajdziemy dokładny pomiar wska-
zanego kąta.

W podobny sposób zbadać możemy in-

ny ważny parametr – stosunek powierzch-
ni zajmowanej przez analizowane obiekty do
tła obrazu. Wartość tę uzyskujemy zaznacza-
jąc cały obszar zdjęcia lub wybrany jego frag-
ment i wydając komendę Analyze > Measure.
W oknie Results odszukujemy następnie ko-
lumnę %Area.

Analiza wielu obrazów

Do tej pory badaliśmy wprawdzie wiele
obiektów jednocześnie, ale za każdym razem
znajdowały się one na pojedynczej fotografii.
Jeśli zdjęć jest więcej, to taka metoda nie jest
oczywiście zbyt wydajna. Na szczęście Ima-
geJ pozwala na przetwarzanie wielu obrazów.
Problem ten można rozwiązać kilkoma me-
todami. My zastosujemy makra oraz wtycz-
kę do wsadowego przetwarzania plików gra-
ficznych.

Rozpoczniemy od tworzenia własnych

makr, które potem wykonamy na dużym ze-
stawie plików. Na początku otwórzmy jedną z
fotografii. Następnie wydajmy polecenie Plu-
gins > Macros > Record
. Uruchomimy w ten
sposób moduł rejestrujący makra. Po pojawie-
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
kliknięcie przycisku Create. Na ekranie po-
jawi się jeszcze jedno okienko zawierają-
ce pełny skrypt. Wydanie komendy File >

Rysunek 5.

Funkcja histogramu umieszczona w Ima-

geJ pozwala na wstępne przeanalizowanie otrzyma-
nych pomiarów

Rysunek 6.

Narzędzie Set Measurements pozwa-

la na określenie, co konkretnie ma pomierzyć ImageJ

background image

14

Rozwiązania

Analiza obrazu z wykorzystaniem ImageJ

czerwiec 2009

15

Rozwiązania

Analiza obrazu z wykorzystaniem ImageJ

www.lpmagazine.org

Save zachowa makro. Od tej pory będzie je
można wykonać poleceniem Plugins > Ma-
cros > Run
.

Do rejestrowanego przez nas skryp-

tu można dodać dowolne spośród narzędzi
programu ImageJ. Wyszukiwanie narzędzi i
wprowadzanie ich do tworzonych makr bar-
dzo ułatwia wyszukiwarka funkcji (Command
Finder
). Aby ją otworzyć, należy wydać pole-
cenie Plugins > Utilities > Find Commands.
W oknie wyszukiwarki znajduje się olbrzymia
lista funkcji. Każdą z nich można uruchomić
(Run) lub obejrzeć jej szczegóły (po zaznacze-
niu Show full information). Warto wyłączyć
opcję Close when running. Zamyka ona okno
Command Finder po każdorazowym wydaniu
komendy Run.

Budując makra należy pamiętać, że nie

wszystkie czynności można wykonać automa-
tycznie, gdyż może to doprowadzić do wyko-
nania nieprawidłowych pomiarów lub znisz-
czenia informacji zawartych na obrazach.
ImageJ nie powiadomi o tym użytkownika,
gdyż z punktu widzenia programu nie wystą-
piły żadne nieprawidłowości. Tymczasem do-
branie niewłaściwego progu spowoduje błęd-
ną segmentację obrazu, co z kolei zaowocu-
je błędnymi pomiarami. Trzeba o tym pamię-
tać i unikać wprowadzania do makr tych funk-
cji, których parametry musimy niekiedy kory-
gować ręcznie.

Podczas tworzenia makr, problemy może

sprawiać zapisywanie wyników. Załóżmy, że
zamierzamy otworzyć szereg zdjęć i z każde-
go z nich uzyskać liczne pomiary. Wszystkie
rezultaty powinniśmy zapisać w osobnych pli-
kach o nazwach identycznych, jak w przypad-
ku obrazu (z pominięciem rozszerzenia). Wy-
maga to ręcznego wprowadzenia do skryptu
kilku dodatkowych linijek. Znajdują się one
na Listingu 1. Po ich dopisaniu do makra nale-
ży usunąć wprowadzoną być może wcześniej
linię rozpoczynającą się od

saveAs("Measu-

rements"

.

Jak edytować gotowe makra ImageJ? Mo-

żemy tego dokonać bezpośrednio w progra-
mie. Wydajmy polecenie Plugins > Macros
> Edit
, a następnie wskażmy zarejestrowa-
ny wcześniej skrypt. Powrócimy do znanego
nam już edytora skryptu. Do jego końca do-
piszmy linijki widoczne na Listingu 1. Po-
tem wykonajmy makro (Macros > Run Ma-
cro
lub Ctrl+R).

W tym momencie ImageJ powinien wy-

konać wszystkie polecenia zarejestrowane
wcześniej w oknie Recorder. Poza tym, w
katalogu, w którym znajduje się przetwarza-
ne aktualnie zdjęcie, utworzony zostanie plik
CSV zawierający rezultaty analiz. Rozwiąza-

nie to wciąż nie umożliwia nam jednak wy-
godnego wykonywania pomiarów na wielu
plikach. Kolejnym krokiem będzie więc do-
danie jeszcze jednej wtyczki ImageJ. Może-
my również pozbyć się problemu rozbudowu-
jąc nasze makro. Oba rozwiązania mają swoje
dobre i złe strony.

Narzędziem, które bardzo ułatwi nam

wsadowe przetwarzanie zdjęć, jest Multiple
Image Processor
. Wtyczkę należy pobrać
ze strony internetowej jej producenta (http:
//ciar.rcm.upr.edu/projects/imageJ
) i skopio-
wać do katalogu

plugins

. Po ponownym uru-

chomieniu ImageJ pojawi się ona w menu pro-
gramu. Multiple Image Processor pozwala na
ładowanie wszystkich obrazów znajdujących
się w folderze wybranym przez użytkowni-
ka. Dodatkowo można wskazać folder służą-
cy do zapisu danych. Poza tym wtyczka posia-
da funkcję skalowania zdjęć oraz ich konwer-
sji do formatów TIF, JPG oraz BMP. Przed na-
ciśnięciem klawisza OK nie należy zapomnieć
o wskazaniu makra, które chcemy wykonać
(opcja Macro File).

Multiple Image Processor pozwoli nam

przetworzyć dowolną liczbę plików bez ko-
nieczności każdorazowej edycji makr. Poza
tym wtyczka posiada bardzo wygodny inter-
fejs. Jeżeli jednak napotkamy na problemy i
narzędzie nie zadziała poprawnie (niekiedy
się to zdarza), to pozostaje nam jeszcze drugie
rozwiązanie – przebudowa makra.

W przygotowanym przez nas wcześniej

skrypcie wprowadźmy pętlę for, która po ko-
lei załaduje wszystkie pliki znajdujące się we
wskazanym katalogu. Nowa wersja makra wi-
doczna jest na Listingu 2. Polecenie

getDi-

rectory

pozwala na wybranie folderu. Ko-

menda

setBatchMode(true);

spowoduje,

że otwierane zdjęcia nie będą wyświetlane w
osobnych oknach na pulpicie.

Teraz pozostaje nam jedynie uzupełnie-

nie makra o właściwe polecenia przetwarza-
jące obrazy, na Listingu 2 zastąpione linijką

//polecenia

. Możemy tu umieścić komen-

dy, które wykonają za nas proces segmentacji
zdjęć i pomierzą wykryte obiekty. Przykłado-
we makro widoczne jest na Listingu 3. Oczy-
wiście rozwiązanie takie wiąże się z pewnym
ryzykiem. Automatyczna segmentacja nie za-
wsze daje dobre rezultaty. Dobrym rozwiąza-
niem jest w takiej sytuacji zapisanie nie tylko
samych rezultatów analiz, ale także wyniko-
wego obrazu prezentującego obiekty wykry-
te przez ImageJ. Po przejrzeniu zachowanych
grafik możliwe będzie stwierdzenie, czy ana-
lizy zostały wykonane poprawnie i czy otrzy-
mane wyniki są wiarygodne. Odpowiednie
polecenie zostało wbudowane w Listing 3.

Znajduje się ono po linijce z komentarzem

//

zapis obrazu binarnego

.

Rozpoczynając pracę z wieloma obrazami

napotkać można dość poważny problem, któ-
ry ominęliśmy przed chwilą za pomocą pętli
for
ukrytej w makrze. ImageJ domyślnie ładu-
je obrazy pojedynczo, co na pozór ogranicza
możliwości programu w zastosowaniach wsa-
dowych. Aby usunąć tę niedogodność, należy
przejść do okna Results, a następnie wybrać
Options z menu File. W okienku konfigura-
cyjnym zaznaczmy opcję Use JFileChooser to
Open/Save
i kliknijmy OK. Po ponownym wy-
daniu polecenia File > Open będziemy mie-
li już możliwość wybrania kilku plików. Zo-
staną one załadowane jeden po drugim, bez
konieczności wracania do okna Open. Od te-
go momentu będziemy mogli otwierać wiele
zdjęć jednocześnie, co w wielu przypadkach
bardzo ułatwi nam pracę.

Przydatne wtyczki

Wykonywanie pomiarów obiektów wykry-
tych na obrazie to oczywiście tylko jedno z
możliwych zastosowań ImageJ. Ale nawet w
tak wąskim zakresie funkcji nie wyczerpali-
śmy jeszcze dotąd możliwości tego programu!
Dzięki wtyczkom pisanym przez użytkowni-
ków możliwe jest zastosowanie o wiele bar-
dziej zaawansowanych metod pomiarowych.

Rysunek 7.

Rejestracja makra za pomocą narzę-

dzia Recorder

Rysunek 8.

Dodatkowe narzędzia do wykonywa-

nia pomiarów – wtyczki Texture Analyzer oraz Gold
Morph

background image

16

Rozwiązania

Analiza obrazu z wykorzystaniem ImageJ

czerwiec 2009

Przyjrzymy się teraz w skrócie trzem narzę-
dziom wybranym spośród nich.

Obie wtyczki wychodzą daleko poza pro-

ste pomiary obiektów. Pierwsze z narzędzi,
Fourier, pozwala na badanie kształtów. Dru-
gie (Texture Analyzer) umożliwia przeprowa-
dzanie analizy tekstury. Narzędzia te przyda-
ją się wówczas, gdy nie wystarczą nam infor-
macje o rozmiarach obiektów, i gdy potrze-
bujemy jeszcze szczegółowych danych doty-
czących kształtu (Fourier) lub powtarzalnych
wzorów widocznych na obrazie (Texture Ana-
lyzer
). Obie wtyczki można pobrać ze strony z
dodatkami dla ImageJ (http://rsbweb.nih.gov/
ij/plugins/
). Instalacja polega na skopiowaniu
plików ściągniętych z sieci do podkatalogu

plugins

i zrestartowaniu programu.

Pierwsze z wymienionych narzędzi (Fo-

urier) wymaga zaznaczenia zarysu badanego
obiektu. Sprawdza się więc ona podczas ba-
dań kształtu pojedynczych przedmiotów. W
celu zaznaczenia obiektu możemy użyć narzę-
dzia Freehand selections. Inne (na przykład
Wand tool) mogą spowodować błąd wtycz-
ki. Po zaznaczeniu przedmiotu odszukujemy
polecenie Fourier w menu Plugins i po wpro-
wadzeniu parametrów narzędzia otrzymujemy
wyniki analizy.

Jeśli wydzielenie poszczególnych obiek-

tów na obrazie jest trudne, a na zdjęciu wi-
doczne są raczej powtarzalne tekstury, to bar-
dzo pomocna może okazać się wtyczka Textu-
re Analyzer
. Przed skorzystaniem z niej nale-
ży przekształcić otwarty obraz do odcieni sza-
rości komendą Image > Type > 8-bit. Oczy-
wiście można również zastosować inne na-
rzędzia z menu Edit oraz Image, jeśli skorzy-
stanie z nich uznamy za stosowne. Następnie
odnajdujemy wtyczkę GLCM Texture w me-
nu Plugins, w tym podkatalogu, do którego
skopiowaliśmy wcześniej plik

GLCM_Textu-

re.class

.

Wtyczka Texture Analyzer pozwala na ob-

liczenie pięciu parametrów tekstury zapropo-
nowanych przez Haralicka. Odstępstwa od
zaproponowanej przez niego metodologii są

wskazane na stronie domowej narzędzia. War-
tości, które zamierzamy obliczyć, wskazuje-
my w okienku ustawień.

Sporą zaletę wtyczki Texture Analyzer sta-

nowi możliwość wbudowania jej do tworzo-
nych przez nas makr. Praca z tym narzędziem
w wielu przypadkach nie wymaga żadnej in-
terwencji i ręcznego korygowania parame-
trów bądź korzystania z dodatkowych funkcji.
Dzięki temu możemy jednorazowo przeanali-
zować wiele obrazów. Wystarczy wprowadzić
do makra polecenia

run ("8-bit"); run ("GLCM Texture",
"enter=1 select=[0 degrees] angular
contrast correlation inverse entro-
py");

.

Wymienione wtyczki nie stanowią jedynej al-
ternatywy dla osób zainteresowanych analizą
kształtów lub tekstur obiektów. Cały czas poja-
wiają się nowe narzędzia. Przed kilkoma tygo-
dniami zaprezentowano wtyczkę Gold Morph,
służącą do analizy kształtu ziaren. Oblicza ona
kilkanaście parametrów opisujących kształt
obiektów. Wtyczka znajduje się w archiwum
czasopisma Computers & Geosciences (http:
//www.iamg.org/images/File/documents/oldftp/
VOL35/v35-02-17.zip
). W miesięczniku tym
pojawił się również artykuł prezentujący moż-
liwości nowego narzędzia i stanowiący jego
dokumentację, jednak nie jest on niestety do-
stępny publicznie. Zasady działania wtyczki są
jednak jasne i korzystanie z pomocy prawdopo-
dobnie okaże się z reguły niepotrzebne.

Po uruchomieniu narzędzia Gold Morph

zostaniemy poproszeni o wskazanie plików
przeznaczonych do analizy. Następnie otrzy-
mamy możliwość określenia ustawień wtycz-
ki. W okienku Place Gold Morphology Ana-
lysis
wprowadzamy minimalną i maksymalną
powierzchnię badanych cząstek, a także decy-
dujemy, czy wyniki analiz będą prezentowa-
ne także w postaci graficznej. Po zatwierdze-
niu ustawień na ekranie pojawią się rezulta-
ty pomiarów.

Opisane wtyczki stanowią jedynie wierz-

chołek góry lodowej – ImageJ oferuje łącz-
nie setki, jeśli nie tysiące narzędzi uzupeł-
niających zestaw funkcji programu. Jeśli po-
gubimy się w nadmiarze dostępnych dodat-
ków, to rozwiązaniem może być skorzysta-
nie z pakietów, które zainstalują dla nas kil-
ka narzędzi jednocześnie. Aby zobaczyć ta-
kie zestawy, warto wejść na stronę http:
//ij-plugins.sourceforge.net/
. Znajdziemy tam
wtyczki pogrupowane na pakiety zgodnie z
ich przeznaczeniem oraz rodzajem analiz. Do-
datkowo na tej stronie zamieszczono też linki
do innych zestawów wtyczek ImageJ. W po-
czątkowych etapach pracy z programem ta wi-
tryna może okazać się więc bardzo pomocna.

Podsumowanie

Poznaliśmy podstawowe funkcje edytora Ima-
geJ oraz wykonaliśmy przykładowe anali-
zy mające na celu zbadanie obrazu przedsta-
wiającego ziarna o zróżnicowanych kształ-
tach. To tylko jedno z możliwych, wymienio-
nych wcześniej zastosowań tej aplikacji. Pro-
gram znajduje zastosowanie w wielu innych
dziedzinach i podczas badania zdjęć o bardzo
zróżnicowanym charakterze. Zaprezentowany
przykład analizy stanowi więc jedynie wpro-
wadzenie do pracy z ImageJ. Artykuł nie po-
ruszył też kwestii analizy obrazu wideo, choć
służące do tego narzędzia również znajdują się
w programie, a także pod postacią wtyczek.

Warto również pamiętać, że ImageJ nie jest

jedynym narzędziem pozwalającym na analizę
obrazów w systemie Linux. Jego zaletę stano-
wi możliwość wykonania bardzo zaawansowa-
nych badań w trybie graficznym. System makr
pozwala użytkownikowi na dodawanie wła-
snych funkcji i automatyzację analiz. Mimo to,
w niektórych sytuacjach warto zainteresować
się alternatywnym oprogramowaniem. Ogrom-
ne możliwości oferuje biblioteka OpenCV. In-
formacje o niej można znaleźć na stronie http:
//opencv.willowgarage.com/wiki/
. Ta wieloplat-
formowa biblioteka pozwala na tworzenie roz-
budowanych aplikacji analizujących obraz z
plików graficznych oraz kamer. Programowa-
nie w C++ pozwala ponadto na zwiększenie
wydajności tworzonych programów. Poza tym
możliwe jest wyposażenie aplikacji w graficzne
interfejsy. Nie wymaga to dużego wysiłku pro-
gramistycznego.

Oczywiście OpenCV nie umożliwia prze-

prowadzania analiz w trybie graficznym, tyl-
ko przy pomocy klikania myszką. Biblioteka
sprawdza się zatem w innych zastosowaniach
niż ImageJ. Niemniej stanowi kolejny wydaj-
ny system umożliwiający zaawansowaną ana-
lizę obrazu w Linuksie.

Autor korzysta z Linuksa od ponad dziesięciu lat, zajmuje się wdrażaniem oprogramowa-
nia Open Source.
Kontakt z autorem: pawelw@open-enterprise.net.

O autorze

http://rsbweb.nih.gov/ij/ – ImageJ;
http://rsbweb.nih.gov/ij/plugins/ – Wtyczki dla ImageJ.

W Sieci


Wyszukiwarka

Podobne podstrony:
01.06.2009, WTD, analiza matematyczna
2009 06 15 21;42;51
2009 01 Analiza powłamaniowa
Elektroinstalator 2009 06 koordynacja ochronników klasy I [B] i II [C]
2009 06 BO Egzamin
Makroekonomia I 11 Cykl koniunkturalny (2009 06 02)
06 Analizowanie ukladow elektry Nieznany (2)
Komputerowa akwizycja i analiza obrazu (lab PolWr)
06 Analiza ryzyka [tryb zgodnos Nieznany
Analiza moliwoci wykorzystania pyt gipsowo kartonowych jako materiau wykoczeniowego w budownictwie d
06 analizaw wrazliwosci
cw 06 analiza modeli predykcyjnych
06 Analizowanie psychospołecznych aspektów rozwoju
2009 06 09 Kolokwium 2
2009 06 29 Caritas In Veritate
2009 06 26 20;05;26

więcej podobnych podstron