Skocz do zawartości

Obrabiarka kosmosu


holeris

Rekomendowane odpowiedzi

Dzięki za uwagi!

22 minuty temu, _Spirit_ napisał:

Może lepiej wrzuć to już spakowane w zipie - sprawdzanie i kompresja przez GDrive trwa wieki...

Spakowana wersja jest już wrzucona, choć miejsca zajmuje tyle samo.

 

46 minut temu, Maro21 napisał:

Musisz poprawić debayeryzację  różne kamery osc mają różny układ maski , u mnie działa źle(asi 1600mcc) , drugi problem to że  zapisuje bez rozszerzenia.

Ale stakuje , gratuluję pomysłu i wykonania .

Generalnie mam w planach zrobienie różnych masek bayera. Najlepiej, żeby maska była widoczna i żeby kliknięciami można było ustawiać kolory. Zacząłem od RGGB, żeby móc testować na swoich zdjęciach. Rozszerzenie można wpisać ręcznie i wtedy się zapisze. Dodam później automatyczne dodawanie, jeśli nie zostało wskazane przez użytkownika.

No i ogólnie jeszcze kilka pomysłów mam oprócz różnych masek. Przede wszystkim chciałbym zaimplementować pozostałe algorytmy stackowania, zwłaszcza te z odrzucaniem.

I poważnie myślę czy nie przepisać tego w jakiejś innej technologii, żeby program nie zajmował takiej kosmicznej ilości miejsca. Ale to będzie pracochłonne i nie wiem czy mi się będzie chciało :P Aktualnie to około 500 linii kodu, a robię to hobbystycznie, dla przyjemności i nie wiem czy mi się z np. z C++ chce męczyć :P i czy będzie takie wsparcie bibliotek.

 

29 minut temu, _Spirit_ napisał:

Świetnie. Dziękuję. Lubię eksperymentować z tym samym materiałem i różnymi sposobami stackowania.

Algorytm stackowania jest póki co dziecinnie prosty. Po wyrównaniu klatek dla każdego z pikseli liczona jest najzwyklejsza w świecie średnia. Najwięcej czasu zajęła mi póki co debayeryzacja oraz interfejs użytkownika.

Odnośnik do komentarza
Udostępnij na innych stronach

13 minut temu, WielkiAtraktor napisał:

Proponuję opublikować na GitHubie - czyli wygodny "issue tracker", wygodne publikowanie wersji (w tym plików binarnych, jeśli trzeba), wiki, możliwość stworzenia strony domowej projektu (GitHub Pages).

Taki też jest plan. Z GitHuba wprawdzie nie korzystałem jeszcze nigdy, ale tydzień temu doświadczenia w pythonie też nie miałem :P

Ooo, widzę po stopce, że też się bawisz w astro programy :)W czym jest ImPPG napisane? Jak zaimplementowałeś Lucy Richardson? Jak wyliczasz PSF? Korzystasz z jakiejś gotowej biblioteki czy sam implementowałeś?

EDIT: widzę, że C++ Też nad tym myślałem, ale to jednak trochę więcej pracy niż w pythonie. No i ostatnio w C++ programowałem z 15 lat temu

Edytowane przez holeris
Odnośnik do komentarza
Udostępnij na innych stronach

59 minut temu, holeris napisał:

Jak zaimplementowałeś Lucy Richardson?

 

Tutaj kod (implementacja wg Wikipedii): wersja CPU; wersja GPU to praktycznie to samo, ale jako shadery GLSL.

 

Godzinę temu, holeris napisał:

Jak wyliczasz PSF?

 

Nic sprytnego/adaptywnego... Przyjmuję, że jest stałe i ma kształt powierzchni Gaussa. Użytkownik dobiera tylko odchylenie std. (σ) suwakiem.

 

A Python jak Python, nic nie stoi na przeszkodzie, żeby tylko "gęste" (i to małe kawałki) napisać w czym innym ;)

  • Dziękuję 1
Odnośnik do komentarza
Udostępnij na innych stronach

Dodałem dwie małe funkcjonalności:

  • wybór klatki referencyjnej
  • automatyczne dodanie rozszerzenia .tif, jeśli wybrany plik już takiego (lub .tiff) nie ma

No i wrzuciłem na githuba: https://github.com/holeris/astrostacker

Pod linkiem z pierwszego postu jest nowa uruchamialna wersja.

Ponadto odrobinę zrefaktoryzowałem kod, żeby nie było wstyd opublikować :P Choć i tak nie jest pewnie najwyższych lotów. Jak ktoś ogarniający pythona chce zrobić review i doradzić jakieś zmiany w strukturze kodu, to ja bardzo chętnie :)

Za jakiś czas opublikuję instrukcję jak to odpalić w pythonie, ale generalnie po ściągnięciu wszystkich zależności (będą w instrukcji) wystarczy odpalić main.py

20 godzin temu, Tayson napisał:

Znacz sie na skryptach w Pixie? 

 

W głowie mam pewien pomysł. 

Nie wiem czy to coś istnieje, ale może być po całości fun.

 

Edit.

Jak cos to dawaj na pw. 

Nie znam się nic a nic. Nie korzystam z Pixa. Choć korci mnie, żeby kupić. Jednak muszę trochę przystopować z astrowydatkami. RST-135 wystarczy. Niech najpierw porobi jakieś zdjęcia :)

 

EDIT: Teraz czas na dorobienie wyboru maski przy debayeryzacji.

Edytowane przez holeris
Odnośnik do komentarza
Udostępnij na innych stronach

Jak pobrałeś paczkę z google drive, to w katalogu dist jest plik main.exe - odpalasz go i działa.

Jak chcesz uruchomić ze źródeł, to nie jest to taka prosta sprawa. Trzeba mieć zainstalowanego pythona i pościągać biblioteki, z których korzystam w programie. Opublikuję niedługo instrukcję, tylko muszę zrobić sobie czyste środowisko i posiedzieć trochę nad tym, żeby instrukcja była jasna również dla laików. Zaletą jest to, że raz skonfigurowanego środowiska nie trzeba ruszać (no chyba, że zacznę korzystać z jakiejś nowej biblioteki). Wystarczy ściągać nowe źródła bezpośrednio z githuba, a te zajmują śmiesznie mało w porównaniu z paczką 600 MB.

 

EDIT: goła lista zależności (najważniejsze pogrubiłem):

# Name                    Version                   Build  Channel
altgraph                  0.17                     pypi_0    pypi
astroalign                2.1                      pypi_0    pypi
astropy                   4.0.2            py38he774522_0
blas                      1.0                         mkl
ca-certificates           2020.10.14                    0
certifi                   2020.6.20                py38_0
cloudpickle               1.6.0                      py_0
cycler                    0.10.0                   py38_0
cytoolz                   0.11.0           py38he774522_0
dask-core                 2.30.0                     py_0
decorator                 4.4.2                      py_0
freetype                  2.10.4               hd328e21_0
future                    0.18.2                   pypi_0    pypi
hdf5                      1.10.4               h7ebc959_0
icc_rt                    2019.0.0             h0cc432a_1
icu                       58.2                 ha925a31_3
imageio                   2.9.0                      py_0
intel-openmp              2020.2                      254
jpeg                      9b                   hb83a4c4_2
kiwisolver                1.2.0            py38h74a9793_0
libopencv                 4.0.1                hbb9e17c_0
libpng                    1.6.37               h2a8f88b_0
libtiff                   0.4.2                    pypi_0    pypi
lz4-c                     1.9.2                hf4a77e7_3
matplotlib                3.3.2                         0
matplotlib-base           3.3.2            py38hba9282a_0
mkl                       2020.2                      256
mkl-service               2.3.0            py38hb782905_0
mkl_fft                   1.2.0            py38h45dec08_0
mkl_random                1.1.1            py38h47e9c7a_0
networkx                  2.5                        py_0
numpy                     1.19.1           py38h5510c5b_0
numpy-base                1.19.1           py38ha3acd2a_0
olefile                   0.46                       py_0
opencv                    4.0.1            py38h2a7c758_0
openssl                   1.1.1h               he774522_0
pefile                    2019.4.18                pypi_0    pypi
photutils                 1.0.1                    pypi_0    pypi
pillow                    8.0.0            py38hca74424_0
pip                       20.2.4                   py38_0
py-opencv                 4.0.1            py38he44ac1e_0
pyinstaller               4.0                      pypi_0    pypi
pyinstaller-hooks-contrib 2020.9                   pypi_0    pypi
pyparsing                 2.4.7                      py_0
pyqt                      5.9.2            py38ha925a31_4
python                    3.8.5                h5fd99cc_1
python-dateutil           2.8.1                      py_0
pywavelets                1.1.1            py38he774522_2
pywin32-ctypes            0.2.0                    pypi_0    pypi
pyyaml                    5.3.1            py38he774522_1
qt                        5.9.7            vc14h73c81de_0
scikit-image              0.17.2           py38h1e1f486_0
scipy                     1.5.0            py38h9439919_0
sep                       1.0.3                    pypi_0    pypi
setuptools                50.3.0           py38h9490d1a_1
sip                       4.19.13          py38ha925a31_0
six                       1.15.0                     py_0
sqlite                    3.33.0               h2a8f88b_0
tifffile                  2020.10.1        py38h8c2d366_2
tk                        8.6.10               he774522_0
toolz                     0.11.1                     py_0
tornado                   6.0.4            py38he774522_1
vc                        14.1                 h0510ff6_4
vs2015_runtime            14.16.27012          hf0eaf9b_3
wheel                     0.35.1                     py_0
wincertstore              0.2                      py38_0
xz                        5.2.5                h62dcd97_0
yaml                      0.2.5                he774522_0
zlib                      1.2.11               h62dcd97_4
zstd                      1.4.5                h04227a9_0

Edytowane przez holeris
Odnośnik do komentarza
Udostępnij na innych stronach

W dniu 29.10.2020 o 18:08, Maro21 napisał:

Musisz poprawić debayeryzację  różne kamery osc mają różny układ maski , u mnie działa źle(asi 1600mcc) , drugi problem to że  zapisuje bez rozszerzenia.

Ale stakuje , gratuluję pomysłu i wykonania .

Dodałem wsparcie dla różnych masek bayera. Możesz testować :)Ja nie miałem zdjęć w takim formacie, więc możliwe, że przy ustawieniach innych niż RGGB są jeszcze jakieś błędy.

 

Podmieniłem wersję na google drive z linku z pierwszego postu. Zachęcam jednak do instalacji bezpośrednio ze źródeł. Poniżej instrukcja.

 

Krok 1: Anaconda - instalacja

Anaconda to z jednej strony dystrybucja pythona, która pozwala uruchamiać jego programy. Dzięki niej można jednak również łatwo tworzyć i konfigurować środowiska oraz instalować w nich biblioteki.

Link do pobrania: https://www.anaconda.com/products/individual

 

Krok 2: Github - pobranie źródeł

Link do pobrania: https://github.com/holeris/astrostacker/archive/main.zip

Zawartość pobranego archiwum rozpakowujemy np. na pulpicie

 

Krok 3: Anaconda - konfiguracja środowiska

Uruchamiamy wiersz poleceń w anacondzie.

obraz.png.5c72fae12a5eb157a75d88eb59dbbc26.png

Następnie przechodzimy do katalogu, w którym są źródła. Robimy to poleceniem

cd sciezka_do_katalogu

Ścieżka musi prowadzić do katalogu, w którym jest plik main.py. W moim przypadku wygląda to tak:

obraz.png.74a287758122dca6d2b5318178ffc5f3.png

 

Uruchamiamy następujące polecenie, aby stworzyć środowisko o nazwie "astrostacker" i pobrać niezbędne biblioteki. Ten krok może chwilę potrwać, ponieważ brakujące biblioteki pobierane są z internetu.

conda env create -f environment.yml

 

Krok 4: Anaconda - uruchomienie programu

Po przeprowadzeniu kroków 1 - 3 mamy spokój. Od tego momentu można jedynie updatować źródła programu ściągając je z githuba, konfiguracja pozostaje bez zmian. A jeśli się zmieni, poinformuję o tym.

Aby uruchomić program należy znajdować się w folderze, w którym znajduje się plik main.py. Jeśli jesteśmy świeżo po konfiguracji, to już się znajdujemy w tym katalogu. Jeśli nie, przechodzimy do niego tym samym poleceniem co wcześniej:

cd sciezka_do_katalogu

Najpierw aktywujemy środowisko, które wcześniej skonfigurowaliśmy (należy je aktywować zawsze po ponownym uruchomieniu wiersza poleceń anaconda).

conda activate astrostacker

A następnie uruchamiamy program:

python main.py

 

Edytowane przez holeris
  • Lubię 2
Odnośnik do komentarza
Udostępnij na innych stronach

@WielkiAtraktor tak przeglądam sobie Twój kod, czytam pracę Younga i Van Vlieta i wow! Kawał porządnej roboty tam odwaliłeś. Miałem kiedyś na studiach teorię sygnałów, ale... wow! Ja u siebie, przynajmniej na razie :D, staram się bardziej składać z już gotowych klocków.

 

Muszę potestować ImPPG, ale po kodzie wygląda obiecująco :D

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.