Skocz do zawartości

Narzędzie do automatycznego wyrównywania klatek animacji słonecznych


Rekomendowane odpowiedzi

Służę pomocą ;)

To jest program „konsolowy”, tj. bez interfejsu graficznego. Należy go rozpakować w jakimś katalogu (powiedzmy, C:\Users\MojaNazwaUżytkownika\Documents). Potem uruchamiamy konsolę („wiersz polecenia”), np. Start->Uruchom->cmd.exe (albo w Windows 8: na ekranie startowym piszemy cmd.exe i wybieramy go). W konsoli przechodzimy do katalogu, gdzie rozpakowaliśmy program, tj. wydajemy polecenie i zatwierdzamy Enterem:

cd \Users\MojaNazwaUżytkownika\Documents

I teraz możemy wpisać polecenia z pierwszego posta, np.:

imgalt c:\astro\animacja1

(jeśli klatki animacji są właśnie w c:\astro\animacja1). Jak pisałem, program wyszukuje wszystkie BMP w podanym katalogu, więc jeśli mamy tam coś więcej, lepiej stworzyć najpierw osobny katalog i w nim umieścić same interesujące nas klatki. (Potem zrobię to jakoś wygodniej).

Edytowane przez WielkiAtraktor
  • Lubię 4
Odnośnik do komentarza
Udostępnij na innych stronach

Super sprawa :) Ja własnie bawię się podobnym algorytmem, a nie wiedziałem, że się to tak nazywa :) Mam jednak problemy z użyciem FFT, bo nie wiedzieć czemu działa bardzo wolno a do tego liczy głupoty (samo FFT jest dobre). Zaimplementowałem bez FFT i wtedy działa poprawnie (ale długo :) ). Także bardzo bym się ucieszył z kodu źródłowego :) W czym piszesz?

Ja miałem taki pomysł, żeby zrobić śledzenie obiektów (samoloty, ISS) teleskopem na moncie GOTO z kamerą. Tutaj bardzo liczy się szybkość programu, bo to analiza na żywo.

Odnośnik do komentarza
Udostępnij na innych stronach

Napisane w C++. Chyba już jutro wrzucę, tylko muszę makefiles przygotować. Najbliższy cel to przyspieszenie i paralelizacja tego, bo na razie mam ok. 2 s na 1,3-megapikselową klatkę (1 wątek na Core i5-3570K).

 

Ale do śledzenia samolotów itp., gdzie obiekt pomiędzy klatkami przesuwa się nieznacznie, znacznie prostsza i szybsza będzie metoda „minimalnej sumy różnic bloków” (testowałem to kiedyś, jest błyskawiczne). Coś jak opisane na początku tego dokumentu: http://image.ing.bth.se/ipl-bth/siamak.khatibi/computerVisionBTH10Summer/papers/BlockMatchingAlgorithmsForMotionEstimation.pdf

Odnośnik do komentarza
Udostępnij na innych stronach

Super, też piszę w C++. Dzięki, poczytam o tej metodzie. Znalazłem jeszcze coś takiego: https://www.par.pl/pomiary/przetwarzanie-sygnalow/384-szybki-algorytm-dopasowania-obrazow-dla-potrzeb-fuzji-w-czasie-rzeczywistym.html. Wydaje się banalne do napisania, ale wcale nie wygląda mi na szybkie (złożoność n^3), no chyba że można to jakoś prosto zoptymalizować.

Odnośnik do komentarza
Udostępnij na innych stronach

Tak, o tę filozofię chodzi. Zauważ, że jeśli na początku pozwolisz użytkownikowi wybrać myszką „punkt zakotwiczenia” (np. samolot), to wystarczy, jak pomiędzy kolejnymi klatkami będziesz porównywał te różnice kolumn/wierszy tylko w pewnym małym obszarze wokoło (np. 32x32, zależy od tego, jak szybko cel się przesuwa). Mam wrażenie, że np. AviStack używa dokładnie tego podejścia (w fazie frame alignment).

Odnośnik do komentarza
Udostępnij na innych stronach

Fajnie, że to napisałeś i dzielisz się.

Dawno już nie działałem na linii komend.

 

Próbowałem powalczyć na swoich plikach. Niestety coś robię źle - wynik jest "skaczący".

Czy możesz wrzucić animacje z plików, które Ci przesłałem?

Rozumiem, że składasz gif'a w GIMP'ie?

Odnośnik do komentarza
Udostępnij na innych stronach

Tak, składam w GIMPie. Otwieramy wszystkie wyrównane klatki przez File->Open as Layers..., potem można je wszystkie naraz przyciąć (zaznaczamy prostokąt i Image->Crop to selection), i pozostaje wyeksportować. Jak wybierzemy format GIF, będzie opcja eksportu jako animacji.

 

Część Twoich wyrównało dobrze, z tego co pamiętam z jedną lub dwoma mniejszymi się nie udało. Wyślij mi proszę mailem te, na których zawiodło, przyjrzę się wieczorem.

Odnośnik do komentarza
Udostępnij na innych stronach

Część Twoich wyrównało dobrze, z tego co pamiętam z jedną lub dwoma mniejszymi się nie udało. Wyślij mi proszę mailem te, na których zawiodło, przyjrzę się wieczorem.

 

Jestem łoś ;)

Teraz zajrzałem do katalogu programu - a tam pliki po wyrównaniu.

 

Świetne narzędzie! Dzięki! Polecam!

Odnośnik do komentarza
Udostępnij na innych stronach

Dodałem kod źródłowy w pierwszym poście.

 

 

 

Zeby te nitki nagrac zobaczyc to jakiego filtra trzeba uzyc i mozna wiedziec jakim sprzetem nagrany jest filmik?

 

W jakim srodowisku pisales program?

 

Filmik nagrany, jak wszystko u mnie, kamerką Point Grey Chameleon mono (ta akurat animacja w całej okazałości: http://astropolis.pl/topic/39586-slonce-w-h/page-21?do=findComment&comment=506713). Do protuberancji konieczny jest bardzo wąskopasmowy filtr (zwykle H-alfa). Nada się dowolny popularny teleskop słoneczny (Lunt, Coronado), ale szczegółowość jak w moim przykładzie wymaga apertury 90 mm; fabryczne teleskopy tej wielkości są kosztowne, dlatego zmajstrowałem przystawkę do zwykłego refraktora z nie aż tak wąskim filtrem: http://astropolis.pl/topic/41505-h-z-filtrami-omega-optical/

 

Do pisania używam zwykle Eclipse+CDT.

 

 

Jeszcze jeden przykład, animacja warpala (pomniejszona 2-krotnie):

 

przed:

 

unaligned.gif

 

po:

 

aligned.gif

 

Edytowane przez WielkiAtraktor
  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

Jesli ktoś nie lubi działać na linii komend to można prościej. Do kataogu gdzie mamy program można skopiować program pliki BMP. Po uruchomieniu automatycznie zalignuje pliki. Tak przynajmniej dzieje się w W7pro.

Edytowane przez warpal
  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

Zgadza się (tak będzie w każdej wersji Windows). Jeszcze jedna uwaga, gdy wpisujemy polecenie ręcznie i katalogi źródłowy/docelowy zawierają spacje, trzeba objąć to cudzysłowami, np.:

imgalt "c:\moje astro\2013 lipiec" --output-dir "c:\moje astro\2013 lipiec\wyrównane"
Odnośnik do komentarza
Udostępnij na innych stronach

fajne narzędzie, dzięki za podzielenie się ze światem :)

 

(mimo że dla moich obrazków akurat natrafia na problem w postaci śmieci na matrycy i czasem śledzi śmieci a czasem obraz :P)
anim.gif
no ale to już wina algorytmu a nie Atraktora, niestety dla mnie pozostają tylko algorytmy w których mogę wyznaczyć maską obszary "zakazane"

przy okazji, gdyby ktoś chciał skompilować to w starym booście, np. takim jak mam tu w ubuntu 10.10 to trzeba troszkę zmienić:

62c62
<                 std::string ext = dirIter->path().extension().string();
---
>                 std::string ext = dirIter->path().extension();
325c325
<         std::string newFileName = p.stem().string() + "_aligned" + p.extension().string();
---
>         std::string newFileName = p.stem() + "_aligned" + p.extension();
Odnośnik do komentarza
Udostępnij na innych stronach

(...) no ale to już wina algorytmu (...)

 

 

No chyba smieci na matrycy ;)

 

Przetestowałem także na powierzchni. Seria, której nie miałem kiedyś siły składać - a teraz wygląda całkiem nieźle:

spot_2014-03-11-1039_1116.gif

 

 

A prz okazji - wesołych i spokojnych Świąt Wielkiej Nocy Wszystkim!

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

W pierwszym poście jest już poprawiony imgalt.zip. Obecnie archiwum zawiera plik EXE i dwa pliki DLL, należy je rozpakować w tym samym katalogu.

 

(Uwaga techniczna: jakoś nie udało mi się na szybko doprowadzić do tego, żeby MinGW zbudował plik wykonywalny statycznie połączony z PThread. Jak to opanuję, w archiwum znów będzie tylko 1 plik EXE).

Odnośnik do komentarza
Udostępnij na innych stronach

W pierwszym poście zamieściłem wersję 0.3.

 

Zmiany:

 

- akceptuje pliki BMP mono lub kolorowe, 8- lub 24-bitowe; po wyrównaniu zostaną zapisane w takiej samej głębi kolorów

- naprawione zapisywanie BMP (czasem tworzone były niepoprawnej długości pliki, które IrfanView czy GIMP przyjmowały, ale Photoshop już nie)

 

Ponadto: dodatkowe uwagi o używaniu bez wiersza poleceń.

Odnośnik do komentarza
Udostępnij na innych stronach

W pierwszym poście nowa wersja 0.4. Zalecam pobranie z uwagi na ważną poprawkę.

 

 

Zmiany:

 

- obcinanie klatek wynikowych do największego wspólnego obszaru (jeśli chcemy dostać klatki powiększone do wspólnego obejmującego prostokąta jak przedtem, należy użyć opcji --no-crop)
- poprawiona translacja przy zapisie wyrównanych obrazów, powodowała chaotyczne 1-pikselowe skoki

 

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