Skocz do zawartości

Efekt Gibbsa, test Grubbsa i inne teoretyczne abominacyje na żywo


Przemek Majewski

Rekomendowane odpowiedzi

To co to jest za interpolacja, że powoduje takie artefakty? Sinc? Cubic?Moim zdaniem gdybyś użył najprostszej (bilinear) to ten efekt by nie wystąpił ale oczywiście to tylko educated guess. A inna sprawa to czy mógłbyś przytoczyć intuicyjne wyjaśnienie różnicy między drizzle X1 a nearest neighbour?

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

2 godziny temu, Behlur_Olderys napisał:

To co to jest za interpolacja, że powoduje takie artefakty? Sinc? Cubic?Moim zdaniem gdybyś użył najprostszej (bilinear) to ten efekt by nie wystąpił ale oczywiście to tylko educated guess. A inna sprawa to czy mógłbyś przytoczyć intuicyjne wyjaśnienie różnicy między drizzle X1 a nearest neighbour?

Oczywiscie!

 

Drizzle x1 i x2, i x3 i każdy inny ma "interpolacje polem przeciecia". Tyle pola ile duzy piksel ma wspolnego z malym, taka jest waga podzialu jasności tego duzego piksela. W wypadku x1 to jest chyba rownowazne z biliniową.

 

I tak masz rację: zwykle jak robie debayer klikam "bilinear" a pozniej robię i tak CFA drizzle. VNG i inne bardziej skomplikowane algorytmy sa do zdjec kolorowego pokoju :) a nie do astro

 

W tym przypadku byl to pewnie Lanczos, albo ustawienie "auto", gdyż nie przejmowałem się tym i użyłem domyślmych -- a to dlatego ze rejestracja jest dla mnie po to, by obliczyc transformacje miedzy klatkami, a pozniej drizzle'uje. To wszystko jest w moim poście, ktory edytuje jiz dlugo i jest u mnie w draftach. 

 

Zwroc tez uwage, ze to wycinek z ciemnym tłem i dlatego stretch jest bardzo mocny, i kontrast hot pixeli także, stad pierscienie widać naprawde dobrze. Specjalnie dobrany kawałek pod ten problem. Mówi się o tym -- a ja chcialem pokazac, że jest :)

  • Lubię 3
Odnośnik do komentarza
Udostępnij na innych stronach

20 godzin temu, Przemek Majewski napisał:

Ostatnio nudziło mi się trochę,

 

20 godzin temu, Przemek Majewski napisał:

Doba za krótka.

 

Jak to jest Przemek, nudzi Ci się (czyli masz za dużo czasu), czy może jednak doba za krótka? ;)

  • Haha 3
Odnośnik do komentarza
Udostępnij na innych stronach

49 minut temu, diver napisał:

 

 

Jak to jest Przemek, nudzi Ci się (czyli masz za dużo czasu), czy może jednak doba za krótka? ;)

zamiast mnie skrutynizować to se popacz efekta Gibbsa co jest nie tylko na Wikipedii, ale także nawet jest po prostu. :P

Odnośnik do komentarza
Udostępnij na innych stronach

21 godzin temu, Przemek Majewski napisał:

Nie ratuje to życia, ani nie czyni ogromnej różnicy, ale mam takie przyzwyczajenie.

 

Skoro ani "nie ratuje życia" ani "nie czyni ogromnej różnicy" (dla jakości obrazka?), to po cholerę się tym zajmować? Chyba że z naukowej pasji i dociekliwości. ;)

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

@Behlur_Olderys Bartku, przepraszam, musiałem coś zrobić teraz spokojnie usiadłem i przygotowuje Ci krótkie resume, które jest przy okazji wycinkiem z większego opisu. Pytałeś o metody interpolacji, inne, które nie spowodują takiego efektu a będą podobne do drizzle x1. Sugerowałeś bilinear (poprawnie) i pytałeś o nearest neighbour. Więc zróbmy coś krok po kroku.

 

1) Domyślnie programy używają różnych falkowych albo fourierowskich interpolacji i nie chce tu wchodzić w szczegóły tego, ale zaznaczam, że te efekty Gibbsa z tego postu to są "default settings", zbyt leniwy byłem by tam coś zmieniać. Rejestracja dla mnie jest krokiem pośrednim do uzyskania listy odrzucania, i pewnie lepiej bym zrobił gdybym wybrał jakiś "bicubic/spline". To wszystko takie drobnostki, detale, ciekawostki do dyskusji i nie jest to bardzo ważne, jak pisałem wcześniej "wszystko się i tak odrzuciło".

 

2) Bardzo ciekawe jest za to zobaczyć na oczy tę interpolację. Jako start weźmy Gaussowską gwiazdę (duuuużo o tym będzie w docelowym poście), którą posamplowałem w rozsądnym promieniu grubą siatką 3x3. Taki lekki undersampling, typowe w amatorskich zestawach, że skalą w okolicach 2"/px.

 

Idealna gaussowska gwiazda 2D o sigma = 100 jednostek, na siatce pikseli po 160 jednostek każdy. W dodatku nie padła na środek piksela, tylko tam, gdzie czarny "x". Wygląda ona tak:

00_origStar.png.e272e011f878367e4c457cd77ae99ad5.png

 

Żółte linie to oryginalne piksele, krzyżyki i kropki (będą wyjaśnione później) to z grubsza środek teoretycznej gwiazdy (czarny x) oraz centroid obliczony "z tego co mamy" (magenta). Czerwone linie to nowa siatka, wycentrowana na wyliczonym centroidzie, i na taką siatkę chcemy "przeinterpolować" gwiazdę. Dodatkowo zaznaczyłem pola przecięcia nowej siatki, z pikselami starej.

 

3) Teraz możemy przypomnieć, że drizzle operuje na wagach, które są właśnie tym polem przecięcia. Czyli jasność nowego piksela jest średnią ważoną jasności przecinających się z nim pikseli z takimi wagami jakie są te pola przecięcia.

 

I teraz to się świetnie uogólnia na dowolna skalę, x1, x2, x3.14, x17 i dowolne rotacje: wystarczy powiedzieć, że duży piksel rozkładamy proporcjonalnie do pól przecięcia z małymi, albo odwrotnie, zależnie która interpretacja nam się bardziej podoba (że małe dostają odpowiedni ułamek jasności większych, z którymi się przecinają).

 

TO BARDZO WAŻNE: w ten sposób widać, że całkowita jasność jest zachowana (suma wag jest 1). Szczególnie więc, gdy mamy jakiekolwiek zacięcie astronomiczne i metrologiczne, a nie tylko graficzne, to bardzo dużo zyskujemy na zachowaniu prawdziwych luminancji gwiazd. Tak, inne metody zmieniają całkowitą jasność nieznacznie.

 

4) Jak więc wygląda nowa gwiazda na czerwonej siatce? Przygotowałem taki kolaż:

 

comparison.jpg.b49cc35a932b16505fa43e1bd8c9de59.jpg

 

Obserwacje:

  • nearest neighbor, jak zresztą metoda mówi, po prostu zapomniało o ułamkowej części piksela, efektywnie ZMIENIŁO POZYCJĘ GWIAZDY, i właściwie z tego powodu nie nadaje się w astronomii, czy metrologii, bo psuje te dane astrometryczne, które wg mnie są fajne
  • spline jest bardzo spoko, potrzebuje większego otoczenia (ono u mnie jest, bo w tle jest krata 5x5, ale boki są "prawie czarne", wiec rysuje tylko 3x3)
  • metoda polowa i dwuliniowa wydają się identyczne, bo są. jak to udowodnić? pola rosną dwuliniowo w przesunięciu, tak samo jak argument dwuliniowej interpolacji zdefiniowany jako iloczyn dwóch liniowych w zmiennej x i y odpowiednio
  • jako inne potwierdzenie:

786412336_2021-10-2722_30_42-MATLABR2015a.png.a3db22dbe354cc3c7495d184c1f125d2.png

 

Widać powyżej, że jedna metoda (po prostu ręcznie zakodowana średnia ważona) i druga metoda -- żywcem wzięta z funkcji wbudowanych

dają identyczny rezultat.

 

5) Podsumowanie

 

Widać, że oryginalna gwiazda trochę pociemniała w bilinear/area/drizzle_x1, ale jej jasność została całkowicie zachowana, nie narazimy się też na efekty dookoła. Ale... gdyby gwiazda świeciła idealnie na środek piksela jej jasność byłaby 1.00 (tak to normalizuje, i będzie o tym w długim poście o drizzle). Dla spline jasność skoczyła do 0.95 (prawie idealnie). Oryginalna gwiazda zaś osiągnęła tylko 0.92 saturacji (padała nieco obok środka pikseli, patrz pierwsza ilustracja).

 

Czyli "area mode" nie zmienia całki, ale psuje kształt, za to "spline mode" odzyskuje kształt, ale może zaburzyć sumaryczną jasność. Nearest neighbour psuje pozycje gwiazdy na zdjeciu, a można ja liczyć w ułamkowych pikselach, więc odpada całkiem.

 

6) Na deser dla wytrwałych: co poodrzucał z całego stacka klatek mój test Grubbsa w MATLAB-ie zakodowany, poziom ufności 5%:

 

1686724605_2021-10-2723_46_27-PixInsight1.8-Gray1_4firstFullStack_reject_high_firstFullStack_reject_hi.thumb.png.b08b8099fe9f4298b9fd2cf8f12ef705.png

 

W ten sposób wyprodukowałem swój pierwszy "profesjonalny" stack sam w MATLAB-ie. Jest taki jak najlepiej zrobiony w najnowszym Pixie, i zajęło mi tylko jeden wieczór programowania :) 

 

PS. Kursor na skrinie nie należy do odrzuconych pikseli XD :D

PS2. Gwiazdy na zdjęciach to liniowe dane, w realnym zdjeciu ulegną "mocnemu streczu" i zmienią się dla oka znacznie :)

 

Edytowane przez Przemek Majewski
uzupełnienie/ps
  • Lubię 3
Odnośnik do komentarza
Udostępnij na innych stronach

Godzinę temu, diver napisał:

 

Skoro ani "nie ratuje życia" ani "nie czyni ogromnej różnicy" (dla jakości obrazka?), to po cholerę się tym zajmować? Chyba że z naukowej pasji i dociekliwości. ;)

ogromnej nie, ale trochę czyni, do tego to uniwersalny workflow, trudniej się pomylić, detale opisałem wyżej^

 

dobrze, ze dodałeś część z "chyba", bo na gruncie tych przesłanek, to w ogóle czymkolwiek można sie przestać zajmować... byle ciepło było i jeść dali :)

Odnośnik do komentarza
Udostępnij na innych stronach

16 minut temu, diver napisał:

 

To przygotowanie do napisania własnego, komercyjnego softu? ;)

Niee... Raczej bym chętnie podłączył się do devepolerki NINA (open project) albo do devów Pixa :) Ale mam co robić w życiu też, więc umowy by musiały być dobre :)

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ę.