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