"Programowanie dla Fizyków Medycznych"/imageJ 1
Jak używać programu ImageJ?
Program ImageJ jest użyteczny nie tylko ze względu na możliwość otworzenia i zobaczenia zdjęcia diagnostycznego. To program, który pozwala na edycję obrazów oraz ich analizę. Bardzo ważną cechą jest również dostosowanie do potrzeb użytkownika przez możliwość dodawania potrzebnych wtyczek czy makra.
Podstawowe informacje
Instalacja: | Program można pobrać bezpośrednio ze strony: http://imagej.nih.gov/ij/ |
Konfiguracja pamięci: | ImageJ jest aplikacją napisaną w Javie. Aby uruchomić program napisany |
w Javie trzeba wcześniej zdefiniować ilość pamięci. Robi się to wybierając | |
z menu Edit[math]\gt [/math]Options[math]\gt [/math]Memory & Threads. | |
Uaktualnienia: | Najnowszą wersją w chwili obecnej jest ImageJ 1.47m. Aby sprawdzić |
aktualną wersję programu należy skorzystać z menu Help[math]\gt [/math]About ImageJ. | |
Żeby dokonać uaktualnienia trzeba wybrać z menu Help[math]\gt [/math]Update ImageJ. |
ImageJ - katalogi
Katalog, w którym został zainstalowany ImageJ, zawiera dodatkowo następujące elementy:
- plik ij.jar –czyli program ImageJ. Podczas uaktualnienia plik ten jest zastępowany na nowy.
- plik ImageJ.cfg – ten plik zawiera konfigurację pamięci dla ImageJ.
- katalog macros – ten katalog zawiera makra czyli małe programy napisane w specjalnym języku do tego stworzonym.
- katalog plugins – ten katalog zanier wtyczki, które pozwalają na większą funkcjonalność programu. Wtyczki, które się w nim znajdują można znaleźć również w menu Plugins.
Zadanie 3. W katalogu macros znajdź plik Mandelbrot.txt i przeciągnij go do okna głównego programu ImageJ. Co się stanie w tej sytuacji?
a). Jeśli wykonamy to makro używając polecenia Macros[math]\gt [/math]Run Macro z menu, to co otrzymamy?
b). Zapisz makro Mandelbrot.txt pod nazwą Mandelbrot_.txt w katalogu ImageJ/plugins/Examples. Możesz użyć polecenia z editor makro File[math]\gt [/math]Save As…. Zamknij wszystkie otwarte okna w ImageJ. Żeby odświeżyć wtyczki należy wybrać z menu Help[math]\gt [/math]Refresh Menus. Wykonaj makro używając polecenia z menu Plugins[math]\gt [/math]Examples[math]\gt [/math]Mandelbrot.
c) Przytrzymując klawisz shift, wybierz Plugins[math]\gt [/math]Examples[math]\gt [/math]Mandelbrot. Co się stało?
Rozwiązanie
Otwieranie plików
Istnieją dwie możliwości otwierania plików graficznych. Można użyć polecenia z menu File[math]\gt [/math]Open… (ctrl+o) lub przeciągnąć plik bezpośrednio z katalogu do głównego okna programu (ang. ImageJ launcher window).
Zadanie 4. Używamy katalogu WMD_2017 na pulpicie.
a). Otwórz zdjęcie dapi.tif z tego katalogu. Spróbuj różnych możliwości otwierania plików w programie ImageJ. Wypróbuj kombinację klawiszy: ctrl+shift+o. Jaka jest funkcja tego polecenia? Otwórz jednocześnie kilka zdjęć.
b). Otwórz obrazy z katalogu \WMD_2017\LADJAN_MRI\t1_vibe_tra - 3 przez przeciągnięcie tego katalogu do okna głównego ImageJ. Następnie otwórz je za pomocą File[math]\gt [/math]Import[math]\gt [/math]Image Sequence….
c). Otwórz ten sam plik dwukrotnie. Co się dzieje z tytułem zdjęcia?
d). Otwórz zdjęcie cafe.lsm. Zdjęcie jest przykładem tzw. hyperstack. Składa się ono z dwóch warstw. Numer kanału jest wyświetlany na górze/dole zdjęcia. Wykorzystaj polecenie: Run Image[math]\gt [/math]Color[math]\gt [/math]Channels Tool… i zmień parametry wyświetlania.
e). Spróbuj otworzyć zdjęcie FC green-40X sec.ics.
Zadanie 5. Za pomocą programu ImageJ otwórz plik z katalogu DICOM: MonochromeSample.dcm. Odczytaj i zinterpretuj informacje zawarte w Dicom-Meta-Information-Header.
Rozwiązanie
Ważne narzędzia
Podstawowe funkcje dostępne w programie ImageJ będą dyskutowane z użyciem odpowiednich przykładów bez wstępu teoretycznego.
Piksele, powiększanie, przewijanie
Zadanie 6. Sprawdź następujące funkcje z użyciem pliku duck.bmp:
- niektóre informacje dotyczące zdjęcia znajdują się w górnej części okna: rozmiar zdjęcia w pikselach (np. 650 x 515), rodzaj (np. 8-bit) i rozmiar zdjęcia w pamięci komputera (np. 327K);
- powiększanie/zmniejszanie jest możliwe na dwa sposoby: klikając w lupę znajdującą się w pasku głównym lub używając “+” i “-” z klawiatury;
- jeśli obraz jest większy niż okno, to w górnym lewym rogu pojawia się wskaźnik pozycji;
- po powiększeniu obrazu i pojawieniu się wskaźnika pozycji, przewijanie zdjęcia jest możliwe za pomocą narzędzia do przewijania (symbol łapki w pasku głównym); po wybraniu opcji należy kliknąć na obraz i bez odrywania myszy przesuwać po obrazie;
- inną możliwością przewijania obrazu jest użycie klawisza spacji; korzyścią tego sposobu jest to, że jednocześnie możemy używać innych funkcji z paska głównego;
- na pasku postępu (tuż pod paskiem głównym) znajduje się aktualna pozycja piksela, na który wskazujemy myszą oraz wartość tego piksela, np. w skali szarości (mogą być to trzy wartości w przypadku RGB).
Zadanie 7. Otwórz plik dapi.tif z katalogu podstawowe_info.
a). Jakie jest największe możliwe powiększenie zdjęcia, a jakie największe zmniejszenie?
b). Jaka jest wartość piksela w skali szarości dla współrzędnych [math]x=32[/math] i [math]y=456[/math]? Jaka jest ta wartość dla [math]x=429[/math] i [math]y=125[/math]?
c). Jaka jest szerokość i wysokość obrazu? Jaki to typ i ile miejsca zajmuje w pamięci komputera?
d). Przesuń mysz na obraz. W którym kierunku wartości współrzędnej [math]x[/math] rosną? Jak to jest w przypadku drugiej współrzędnej? Narysuj układ współrzędnych.
e). Możliwa jest zmiana orientacji osi [math]y[/math] używając polecenia Analyze[math]\gt [/math]Set Measurements, a następnie wybierając opcję Invert [math]Y[/math] coordinates. Przesuń mysz na obraz ponownie. Jak teraz wygląda układ współrzędnych?
Rozwiązanie:
a). max 3200%, min 3.1%
b). 1, 239
c). 650x515, 8-bit, 327K
d). w prawo, w dół
e). w prawo, w górę
Zaznaczanie obszaru
Do zaznaczania obszaru służy narzędzie oznaczone jako prostokąt w głównym pasku programu. Jeśli jest on aktywny, możemy klikając na punkt na zdjęciu i przesuwając myszą zaznaczyć interesujący nas obszar. Podczas tej czynności na pasku postępu pojawiają się informacje o szerokości, wysokości oraz współczynnik proporcjonalności obrazu. Żeby zakończyć zaznaczanie obszaru należy uwolnić mysz. Nawet po zwolnieniu myszy można edytować zaznaczony rejon.
Zadanie 8. Wszystkie czynności wykonuj na otworzonym już pliku dapi.tif.
a). Wybierz z paska głównego symbol prostokąta i zaznacz dowolne pole. Następnie zmień jego rozmiar. Znajdź w manualu, znajdującym się w [1], skróty klawiszowe związane z opcją zaznaczenia i napisz do czego one konkretnie służą. Wypróbuj je.
b). Sprawdź, jaka jest rola klawisza shift i alt, gdy chcemy zaznaczyć kolejny obszar. Przesuń stworzony przez siebie obszar (obszar powinien składać się z kilku elementów).
c). Zmień kolor zaznaczenia na magenda (Edit[math]\gt [/math]Options[math]\gt [/math]Colors).
d). Kliknij prawym przyciskiem myszy na symbol prostokąta na pasku głównym i wybierz opcję rounded rectangle. Jaki teraz kształt ma wybrany obszar? Żeby zmienić ustawienie koloru dla rounded rectangle, wystarczy dwa razy kliknąć przycisk na pasku głównym.
e). Po podwójnym kliknięciu na przycisk rounded rectangle zmień wartość promienia zakrzywienia. Zaznacz kilka obszarów z różnymi kantami.
f). Przećwicz używanie pozostałych narzędzi do zaznaczania łącznie z rysowaniem własnoręcznym. Zauważ, że podczas jego używania wystarczy uwolnić mysz w pobliżu początku zaznaczania, a obszar zamknie się automatycznie.
g). Po zaznaczeniu obszaru użyj polecenia Image[math]\gt [/math]Crop. Co się stało? Żeby wrócić do poprzedniej wersji zdjęcia, należy użyć polecenia File[math]\gt [/math]Revert (ctrl+r). Zaznacz obszar ponownie i użyj polecenia Image[math]\gt [/math]Duplicate (shift+d). Co się stało tym razem?
Rozwiązanie:
a). Shift - zaznaczenie ogranicza się do kwadratu
Alt - zmiana rozmiaru, ale zaznaczenie jest przez cały czas zaczepione w jednym miejscu
Ctrl - zaznaczenie zmienia rozmiar wokół środka
Ctrl Alt - zmiana rozmiaru przy zachowanych proporcjach
g). Image[math]\gt [/math]Crop wycina obraz do rozmiarów zaznaczenia. Image[math]\gt [/math]Duplicate tworzy nowy obraz tylko z zaznaczeniem.
Pomiar i tabele z wynikami
Polecenie Analyze[math]\gt [/math]Measure (ctr+m) pozwala na pomiar parametrów całego obrazu lub zaznaczonego obszaru. Korzystając z polecenia Analyze[math]\gt [/math]Set Measurements, mamy możliwość wybrania wielkości, które zostaną zmierzone. Wartości te są zapisywane i wyświetlane z tabeli z wynikami globalnymi.
Zadanie 9. W dalszym ciągu korzystamy z pliku dapi.tif.
a). Zaznacz własnoręcznie obszar jądra, a następnie zmierz jego powierzchnię i średnią wartość w skali szarości. Powtórz to samo dla kilku jąder. Jak zmienią się wyniki, jeśli powtórzymy procedury dla powiększonego zdjęcia?
b). Skorzystaj z polecenia File[math]\gt [/math]Duplicate, żeby zrobić kopię tabeli z wynikami. Zmierz nowe zaznaczenie. Do której tabeli został dopisany wynik?
c). Skorzystaj z polecenia File[math]\gt [/math]Rename i zmień nazwę oryginalnej tabeli z wynikami (Results [math]\rightarrow [/math] old). Zmierz nowe zaznaczenie i sprawdź do której tabeli został dopisany pomiar.
d). Skasuj wszystkie wyniki poleceniem Results[math]\gt [/math]Clear Results i zmierz co najmniej 3 jądra ponownie. Jaka jest wartość średnia, odchylenie standardowe, wartość minimalna, maksymalna oraz rozkład wartości zmierzonych powierzchni? Użyj poleceń Results[math]\gt [/math]Summarize i Results[math]\gt [/math]Distribution, żeby dostać odpowiedzi.
Rozwiązanie:
b). i c). Nowe pomiary są dodawane do tabeli o nazwie Results. Jeśli takiego okna nie ma, to otwierane jest nowe.
Linijka, profil i punkt
Trzy możliwe opcje funkcji linijka są dostępne w programie: linia ciągła, linia łamana i dowolna linia rysowana przez użytkownika. W przypadku tworzenia linii ciągłej i łamanej na pasku postępu pojawia się długość rysowanej linii oraz kąt mierzony względem osi [math]x[/math].
Zadanie 10.
a). Użyj linii ciągłej, żeby oszacować odległość pomiędzy środkami najbliżej położonych jąder.
b). Użyj linii ciągłej, żeby oszacować średnice jąder.
c). Użyj linii łamanej, żeby oszacować obwód jąder.
d). Własnoręcznie narysuj linię, żeby oszacować obwód jąder.
e). Użyj narzędzia Angle tool, żeby oszacować kąty pomiędzy trzema najbliższymi jądrami.
Narzędzie linijka może być użyte to stworzenia profili. Profil zawiera intensywność wartości wzdłuż narysowanej linii. Procedura jest następująca: na początku rysujemy linię wzdłuż jądra, następnie kliknij klawisz k (skrót od Analyze[math]\gt [/math]Plot profile). Jeśli grubość linii jest większa niż 1, profil będzie uśredniony po szerokości. Żeby zmienić grubość linii, należy kliknąć dwukrotnie na symbol linii na pasku głównym programu.
Zadanie 11.
a). Użyj profilu, żeby oszacować średnicę jądra. Zauważ, że wykres jest obrazem samym w sobie, więc możesz do jego analizy możesz użyć narzędzi ImageJ. Czy jest jakaś korzyść z używania profili zamiast pomiaru średnicy na oryginalnym obrazie?
b). Stwórz profile wzdłuż jądra. Nie zmieniając żadnych dodatkowych parametrów, zmień grubość linii i stwórz kolejny wykres. Co się zmieniło?
c). Stwórz profile wzdłuż jądra, następnie wydłuż linię i stwórz kolejny profil. Jaka jest różnica pomiędzy profilami? Zmierz odległość pomiędzy dwoma punktami na wykresach. Czy wyniki, które otrzymałeś, są jednakowe? Wskazówka: popatrz na wielkość pikseli (Image[math]\gt [/math]Properties).
d). Stwórz profile wzdłuż jądra. Wybierz opcję List na dole okna profilu. Skopiuj wszystkie wartości (ctrl+a, żeby zaznaczyć wszystko i ctrl+c, żeby skopiować). Otwórz opcję Curve Fitter z menu Analyze[math]\gt [/math]Tools[math]\gt [/math]Curve Fitting. Skasuj wartości, które się tam znajdują i wklej wartości skopiowane (ctrl+v). Dopasuj rozkład Gaussa do punktów pomiarowych.
Rozwiązanie:
a). W zależności od ustawień wyświetlania obiektu może być on mniejszy lub większy. W profilu poziom tła jest często dobrze widoczny i pomiar średnicy powyżej niego jest możliwy.
b). Profil jest gładszy ponieważ jest uśredniony.
c). Profile mają różne rozmiary. Jakkolwiek mają również różne skale, więc pomiary korespondują z odległościami na oryginalnym obrazie. Czyli otrzymane wyniki powinny być takie same. Rozmiar piksela w obu profilach jest inny.
Do zliczania obiektów na zdjęciu służy polecenie zaznaczania punktu. Żeby dodać punkty, należy użyć klawisza shift lub narzędzie zaznaczania wielokrotnego punktów. Do kasowania punktów służy alt.
Zadanie 12.
a). Zaznacz trzy dowolne jądra, następnie dodaj punkt gdzieś w tle i kontynuuj z dodawaniem punktów w obszarze pozostałych jąder. Skasuj punkt z tła. Co się stało z numeracją zaznaczonych punktów?
b). Zachowaj zdjęcie z zaznaczonymi punktami w formacie tif (File[math]\gt [/math]Save As[math]\gt [/math]Tiff). Zamknij stare zdjęcie i otwórz to, które przed chwilą zachowałeś (File[math]\gt [/math]Open). Co się stało z zaznaczeniem? Czy możesz je modyfikować?
c). Sprawdź opcję pomiaru automatycznego, które uruchamia się poprzez dwukrotne kliknięcie na symbol punktu z paska głównego. Co ta opcja robi?
d). Czy można używać funkcji zaznaczania punktów z opcją Auto-Measure i Auto-Next Slice, żeby śledzić żółte cząstki w czasie z pliku moving-particles.tif z katalogu narzedzia_1?
Tło i obsługa ROI
Narzędzie o nazwie magic wand pozwala dokonać selekcji połączonych pikseli na zdjęciu. Istnieją dwie możliwości dokonania wyboru pikseli: piksele o tej samej intensywności (ewentualnie plus-minus tolerancja) lub piksele tła czyli wszystkie piksele o intensywnościach większych niż dana wartość minimalna lub o intensywnościach mniejszych niż dana wartość maksymalna. Minimalna i maksymalna wartość tła może być wybrana przez dopasowanie, które można otworzyć używając polecenia Image[math]\gt [/math]Adjust[math]\gt [/math]Threshold (shift+t). Należy zmienić mod z Red na Over/Under.
Każde kliknięcie z użyciem wand-tool tworzy selekcję. Żeby usunąć ją ze zdjęcia, należy użyć kombinacji klawiszy ctrl+shift+a.
Zadanie 13. Otwórz ponownie plik dapi.tif.
a). Użyj narzędzia wand-tool łącznie z opcją wyboru tła, żeby wybrać jądra. Zmierz jądra. Jaki jest najmniejszy i największy obwód jądra oraz najmniejsza i największa średnica?
b). Użyj wand-tool, żeby wybrać wszystkie jądra w jednej selekcji (shift). Jaki procent powierzchni zdjęcia jest pokryty przez jądra? Wskazówka – żeby wybrać całe zdjęcie, trzeba użyć ctrl+a.
Rozwiązanie:
a). obwód: min. 288.8 p, max. 608.0 p
średnica: min. 95.8 p, max. 188.4 p
b). powierzchnia: zdjęcia - 334750 p, jądra - 64885 p czyli procent będzie wynosił [math]64885 \cdot 100\% / 334750 = 19.4\%[/math]
ROI (Region Of Interest) manager pomaga w pracy z selekcjami. Dzięki niemu można zatrzymać nieograniczoną liczbę selekcji, wyświetlania, modyfikowania i pomiaru. Polecenia mogą dotyczyć albo wybranych ROI, albo wszystkich, jeśli nie było żadnego zaznaczenia.
Zadanie 14. a). Użyj wand-tool, żeby wybrać jądra, następnie naciśnij klawisz t (skrót dodawania ROI od Analyze[math]\gt [/math]Tools[math]\gt [/math]ROI Manager). Wybierz opcję Show All w managerze ROI. Wybierz pozostałe jądra i dodaj je do managera.
b). Kliknij na jedną z pozycji w managerze ROI (np. 5). Zauważ, że odpowiednie jądro na zdjęciu zostanie podświetlone. To działa również w drugą stronę. Modyfikuj selekcję (usuń część jąder używając klawisza alt). Uaktualnij zmiany.
c). Wybierz jedną lub kilka linii w managerze ROI (możesz użyć ctrl/shift) i naciśnij przycisk służący do pomiarów.
d). Do czego służy opcja Flatten? Wskazówka – Rzuć okiem na zdjęcia, które powstało w wyniku zastosowania tej opcji.
e). Ustaw niskie tło (niebieski kolor). Stwórz selekcję na podstawie wartości tła używając Edit[math]\gt [/math]Selection[math]\gt [/math]Create Selection. Użyj polecenia split. Co się dzieje?
f). Bez zmiany selekcji otwórz zdjęcie A4 Rhod 1.tif z katalogu narzedzia_1. Żeby zobaczyć wybrane jądra użyj opcji Show All z managera ROI. Dokonaj pomiaru. Jak wytłumaczysz to, co się stało?
Rozwiązanie:
d). Opcja tworzy obwiednię będącą granicą poszczególnych jąder i zapisuje zdjęcie jako RGB.
e). Create Selection tworzy pojedynczą selekcję złożoną ze wszystkich jąder. Opcja Split dzieli selekcje na poszczególne jądra i dodaje je do managera ROI.
f). Wybrana selekcja dla zdjęcia dapi.tif została użyta do nowo wczytanego zdjęcia.
Analizator cząstek
Dotychczas wszystkie selekcje były tworzone pojedynczo. Analizator cząstek pozwala automatycznie stworzyć selekcję dla każdego obiektu (cząstki), np. obszarowi pikseli powyżej minimalnej wartości tła i poniżej jego wartości maksymalnej.
Zadanie 15. a). Użyj narzędzia do wyrównywania tła (Image[math]\gt [/math]Adjust[math]\gt [/math]Threshold lub shift+t) oraz analizatora cząstek, żeby dodać jądro do managera ROI (usuń wszystkie opcje oprócz Add to Manager).
b). Usuń wszystko z managera ROI i użyj analizatora cząstek ponownie. Tym razem wybierz opcję Exclude on edges. W jakim celu można tę opcję stosować i kiedy może być używana?
c). Użyj ponownie analizatora cząstek. Tym razem spróbuj wykluczyć obiekty, które są zbyt małe, żeby być jądrami. Jest to możliwe dzięki ustawieniu minimalnego rozmiaru w oknie analizatora cząstek.
d). Użyj analizatora cząstek, żeby wybrać tylko te jądra, które są okrągłe. Jaka jest wartość, która usuwa dwa jądra najbardziej odbiegające od kolistego kształtu?
e). Otwórz plik inclusion.tif. Wyobraź sobie, że wewnętrzny i zewnętrzny prostokąt przedstawia cząstki. Użyj analizatora cząstek z włączona i wyłączoną opcją Include holes. Jaką widzisz różnicę?
f). Użyj analizatora cząstek do znalezienia liczby jasnych plamek na zdjęciu blobs.gif z katalogu narzedzia_1. Jaka jest średnia powierzchnia plamek?
Rozwiązanie:
b). Obiekty, które nie są całkowicie na zdjęciu, nie mają właściwego rozmiaru, co sprawi, że zafałszują pomiar wartości średniej i całkowitej opartej na rozmiarze (powierzchnia, średnica, obwód, itp.). Opcja Exclude on edges pozwala zignorować te obiekty.
d). 0.8
e). Jeśli włączona jest opcja Include holes, tylko jedna cząstka jest znaleziona i zawiera ona wewnętrzną cząstkę. Bez tej opcji wewnętrzna i zewnętrzna cząstka jest traktowana osobno.
f). 46 plamek o różnych rozmiarach i kształtach; średnia powierzchnia to 414.5 piksela
Strzałki, komentarze i warstwy
Bardzo przydatną funkcją jest dodawanie komentarzy bez niszczenia zdjęcia. W tym celu używa się warstw. Strzałki i nie tylko mogą być dodawane z użyciem klawisza b lub Image[math]\gt [/math]Overlay[math]\gt [/math]Add Selection.
Zadanie 16.
a). Użyj strzałki (prawym przyciskiem myszy na funkcji linia w głównym pasku ImageJ), żeby zaznaczyć na zdjęciu wszystkie jądra. Przed narysowaniem strzałek zmień ich kolor na magenta.
b). Użyj narzędzia do pisania, żeby dodać notatkę do każdej strzałki (jądro nr 1, jądro nr 2). Użyj kombinacji klawiszy ctrl+alt+b, żeby dodać tekst do warstwy.
c). Zmień strzałki. Wskazówka: Image[math]\gt [/math]Overlay[math]\gt [/math]To ROI Manager. Nie zapomnij uaktualnić managera po dokonanych zmianach.
d). Zmień napisany wcześniej tekst. Wskazówka: Nie możesz samodzielnie edytować tekstu. Wybierz test w managerze ROI, napisz coś nowego i naciśnij przycisk uaktualnienia zmian.
e). Dodaj trzeci komentarz. Wskazówka: konwertuj selekcje z powrotem do warstw, dodaj nowy komentarz do warstwy.
f). Użyj Image[math]\gt [/math]Overlay[math]\gt [/math]Flatten, żeby stworzyć zdjęcie ze wszystkimi komentarzami (np. do swojej prezentacji). W tak zapisanym zdjęciu komentarze nie są warstwami, są dodane przez zmianę wartości pikseli.