И опять я возвращаюсь к реконструкции волнового фронта. Поначалу самая-самая бета моего велосипеда для этих целей лежала среди кучи других моих "сниппетов", теперь же пришло время сделать этот велосипед более-менее полноценным, и уже эта версия переехала в отдельный репозиторий. Пока что используются все те же методы, но в планах еще добавить как минимум метод восстановления волнового фронта при помощи преобразований Фурье (естественно, этот метод работает только для Шака-Гартманна с прямоугольной сеткой).
Пока клепаю "бенчмарк" для различных методов восстановления. Начал с неравномерной сетки (это интересней) для классического Гартманна. Потом еще добавлю равномерную для Ш-Г.

Авось, не пройдет и трех лет (а начал я этим заниматься почти ровно 4 года назад), как рожу-таки что-нибудь более-менее рабочее для обработки как классических гартманнограмм, так и Ш-Г.
Итак, сегодня я таки реализовал это.
Получилось хреново: то ли эти полиномы очень чувствительны к неоднородности распределения точек, то ли просто хреновые, то ли мое рукожопие сказывается, но получилось даже хуже, чем декомпозиция обычными Церниками.
Сравнение )
«Как она ни плакала…», а все равно нужно реализовать разложение волнового фронта (а затем — и градиентного поля для восстановления ВФ) по ортонормированным на кольце полиномам, линейно зависимым от полиномов Цернике (чтобы можно было восстановить по найденным коэффициентам разложения коэффициенты Цернике).
Пока — размышления. )
Таки добрался я наконец до своих баранов: вернулся к полиномам Цернике. И что оказалось: ведь отлично справляется метод наименьших квадратов! Т.е. в принципе, наверное, мучиться с ортогональными на кольце полиномами и не нужно!!!
чуть кода )
В общем, реализовать полиномы, ортогональные на диске, мне все-таки придется! Либо же придется модифицировать задачу, постепенно подбирая коэффициенты: скажем, «скармливая» решателю по 3-4 очередных степени полинома (а в качестве значений ВФ брать невязки от предыдущего решения).
Вчера мне было не до них: писал учебные программы на пару курсов для аспирантов.
Сегодня более-менее (скорее, "менее") разобрался.

чуть текста )
Продолжаю свои мучения с "полиномами Жао".
В упор не понимаю, как с ними работать: хорошие значения для коэффициентов Цернике получаются лишь для очень простых векторных полей, аппроксимирующихся полиномами максимум второй степени. При повышении степени получается какой-то фигвам.

Фигвам )
У меня появилось желание добить-таки наконец свой fitsview-hartmann, а для этого нужно добавить туда декомпозицию нормалей к волновому фронту по ортонормированному на кольце базису векторных полиномов. Для этого сначала надо реализовать разложение/восстановление волнового фронта по полиномам Цернике. Кстати, это еще пригодится мне в модели зеркала (можно будет помимо получения маски искажений формы зеркала из файла-изображения добавить возможность указания величины этих искажений коэффициентами Цернике).
немного кода )
Итак, нагулявшись в отпуске я таки решил вернуться к своим баранам.
Прежде, чем начать писать что-то для разложения нормалей к волновому фронту по упомянутым раньше функциям Жао, я решил попробовать обычное разложение. Для этого с сайта mathworks был сворован исходник функции zernfun2 (которая вычисляет полиномы), а также deco (которая выполняет декомпозицию).
Функцию deco пришлось маленько подправить (она вычисляла коэффициенты на основе двойного численного интегрирования, что крайне медленно). Но получилось довольно-таки сносно.



Чуть подробней )
Так как простейшие методы интегрирования градиента волнового фронта не показали себя надежными, попробую следующий шаг — разложение по полиномам Цернике.

теория )

Теперь остается изучить существующие алгоритмы разложения волнового фронта по полиномам Цернике, модифицировать наиболее простой из них для разложения градиентов по описанному ортонормированному векторному базису (для начала — хотя бы без роторной компоненты), а затем уже провести реконструкцию. О результатах буду писать.


July 2017

S M T W T F S
      1
23 4 5 6 78
9 101112 131415
16171819 202122
23242526272829
3031     

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 20th, 2017 02:43 pm
Powered by Dreamwidth Studios