Symulacja soczewki

Tematyka związana z tworzeniem aplikacji w LabVIEW do obsługi wizji oraz wszelkich operacji na obrazie.
matti_94
Posty: 1
Rejestracja: 16 lut 2016 10:58
Wersja środowiska: LabVIEW 2014

Symulacja soczewki

Post autor: matti_94 »

Cześć,
Czy w labVIEW da się zrobić symulację cienkiej soczewki? Wymyśliłem pewien projekcik którego zwieńczeniem jest właśnie taka symulacja. Bazując na równaniu soczewki (1/f)=(1/x)+(1/y), gdzie: f- ogniskowa soczewki, x-odległość przedmiotu od soczewki, y-odległość obrazu od soczewki.
Miałoby to polegać na tym że użytkownik wczytuje np. zdjęcie, obraz z dysku a następnie wpisuję dane parametry do powyższego równania, użytkownik miałby dowolność ich wpisania. Chciałbym, aby daną wyjściową była odległość obrazu od soczewki, a żeby użytkownik mógł tę odległość zmieniać zauważając zmianę ostrości, poprawę lub pogorszenie na wczytanym zdjęciu. Coś typu zabawa lupą, mam obraz, program obliczył odległość obrazu w której jest on ostry na podstawie parametrów które wpisał użytkownik(ogniskowa, odległość przedmiotu od soczewki). Następnie użytkownik miałby móc wpisać dowolną odległość obrazu od soczewki zauważając zmianę jego ostrości.

Myślałem również o najprostszym równaniu opisującym soczewkowanie grawitacyjne. Tutaj działałoby to inaczej, należałoby wprowadzić grafikę, następnie, można być wprowadzić koło o zmienialnej średnicy, na środku zdjęcia. W zależności od odległości od krawędzi tego koła obraz by się inaczej zakrzywiał, zgodnie z równaniem: α=(4GM)/(bc^2), gdzie G- stałą grawitacyjna, stały parametr niezmienialny, c-prędkość światła, oraz parametry które użytkownik miałby zmieniać to b- odległość od krawędzi koła, M-masa obiektu. Dokładna postać równaniu już nie jest tak ważna jak użyskanie efektu zakrzywiania w zależności od parametru masy i w szczególności odległości od krawędzi koła.
Czy to wgl da się wykonać, jeżeli tak to proszę o rady :), bo nawet nie wiem jak zacząć, z góry dzięki :)
Awatar użytkownika
dajpanspokój
Posty: 145
Rejestracja: 05 lis 2015 08:15
Wersja środowiska: LabVIEW 2016

Symulacja soczewki

Post autor: dajpanspokój »

Jak ta soczewka ma działać?
Wczytujesz obraz, zamieniasz kursor w koleczko i jezdzisz tym koleczkiem po obrazie i w srodku kolka wyswieta sie kawałek tego obrazu rozciagnietego i rozmazanego? W kontrolkach mozesz zmieniac odleglosc soczewki od obrazu itp?
Na pewno się da. Najlepiej jakbys mial moduł Vision bo tam jest dużo funkcji do rozciagania obrazu, dużo filtrów do rozmazywania itp.
Robienie kółka z kursora też można wykombinować albo przez malowanie po obrazie, albo sa jakies tez sztuczki do tego: http://zone.ni.com/reference/en-XX/help ... curs_file/
Zrobiłbyś drugi obrazek, któremu updatowałbyś pozycje w property node taką samą jak pozycję kursora, wycinałbyś jakis obszar z tego obrazka pod spodem, stosowal te filrty i rozciaganie i wstawiał do tego drugiego obrazka i juz :)) proscizna :))) :ymparty:

Zarcik.

Mam nadzieje ze masz dobry komputer...

Mozesz jeszcze np kolkiem myszki sterowac przyblizanie i oddalanie soczewki
Obrazek
Awatar użytkownika
dajpanspokój
Posty: 145
Rejestracja: 05 lis 2015 08:15
Wersja środowiska: LabVIEW 2016

Re: Symulacja soczewki

Post autor: dajpanspokój »

co do soczewki grawitacyjnej, to majac dany obrazek 2d nie jestes w stanie stwierdzic jakby to wygladalo naprawde, bo kat pod ktorym widisz obrazek jest inny niż promienie, które są zakrzywione przez tę masę.
Ale jeśli nie obchodzi cię prawdziwy efekt, tylko po prostu efekt, to tez nie jest to takie trudne. Musisz wziąc wszystkie piksele które leżą wokół masy w jakiejś tam odległości od niej i obliczyć piksel, który kopiujesz z orginalnego obrazu i wklejasz go w to miejsce.
Coś w tym stylu:
masa.PNG
masa.PNG (6.56 KiB) Przejrzano 8003 razy
Jak wiesz jak to zrobić w matlabie, to mozesz użyc mathscriptu
Obrazek
ODPOWIEDZ