2025/10/09 Python - po pierwszych zajęciach
Moim celem jest swobodne pisanie skryptów do oprogramowania ImageJ/Fiji. Jest to program służący do obróbki obrazów oraz wykonywania bardziej złożonych analiz naukowych, wykorzystywany głównie w naukach przyrodniczych/biologicznych.
Sam program jest skonstruowany w Java i umożliwia tworzenie makr w tym języku, jednak zastanawiam się, czy można jakoś zaimplementować skrypty w Python, ewentualnie napisać w Python i może użyć jakiegoś sprytnego translatora. 😄
- Podstawa
1.1. Ręcznie - po uruchomieniu programu wybieram z dysku projekt z obrazami (.LIF), potwierdzam ustawienia domyślne, ręcznie wybieram pojedyncze obrazy, jakie chcę poddać analizie.

1.2 Automatycznie - dla każdego pliku, który się otworzy chcę przeprowadzić procedurę:
1.2.1 Image -> Stacks -> Z Project...

Wartości domyślne: Start slice: 1; Stop slice: zmienna, maksymalna wartość w danym pliku; Projection type: Max Intensity - program mógłby się pytać, czy chcę użyć wartości domyślnych, czy wprowadzić inne dane (do Projection type musiałby pokazać możliwości z listy rozwijanej). Po wykonaniu tego polecenia następowałoby zamknięcie plików wejściowych.
1.2.2. File -> Save As -> Tiff...
Zapis z domyślną nazwą, chcę mieć możliwość wskazania ścieżki zapisu dla wszystkich plików.
- Rozszerzenie lub osobny skrypt
Kontynuacja na plikach z punktu 1. Mamy otwarte pliki w programie, które już zostały zapisane. Z dwóch elementów wejściowych uzyskano 4 pliki wyjściowe. Wygląda to tak:

Dwa górne obrazy pochodzą z jednego elementu, dwa dolne z drugiego. Obrazy tego samego pochodzenia mają nazwę różniącą się na końcu jedną liczbą.

2.1. Chcę złączyć 2 pliki (czasem 3, jeśli jest więcej kanałów) pochodzące z jednego elementu w jeden.
2.1.1. Image -> Color -> Merge Channels
Tu muszę mieć opcję wyboru, jakie kolory chcę zastosować do konkretnych plików.

Przykładowo, jeśli plik ma końcówkę C=0, kolor ma być niebieski, natomiast jeśli ma końcówkę C=1, kolor ma być czerwony. W obrębie projektu te dane będą jednakowe dla wszystkich elementów, ale skrypt powinien być uniwersalny, bo czasem w projekcie mogę chcieć uzyskać obrazy np. zielone i niebieskie, gdzie zielony to C=0, a niebieski C=1.
Dodatkowo wszystkie trzy opcje poniżej list rozwijanych mają być zaznaczone (domyślnie jest tylko pierwsza).
W efekcie uzyskujemy:

2.1.2. File -> Save As -> Jpg...
Zapis każdego pliku jako obraz JPG. Nazwa nie może być domyślna, bo dla każdego byłaby 'Composite'. Tak naprawdę chyba na etapie tworzenia nałożonego obrazu, należałoby zdefiniować jego nazwę, żeby każdy nie nazywał się tak samo, a zawierał w nazwie unikalny element nazwy plików wyjściowych, w tym przypadku pliki miałyby nazwy: CTRL002 i CTRL003. ImageJ automatycznie, bez pytania, każdy złożony obraz nazywa 'Composite' nie zostawiając informacji o tym, z jakich plików powstał, co jest problematyczne.

W kolejnych dodam kolejne procedury, które chciałabym usprawnić. :)
P.S. Chciałam robić wcięcia w tekście, ale nie działają (ani TAB, ani 4 x spacja). I nie podoba mi się, że nie ma możliwości tworzenia list wielopoziomowych!