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

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

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

Фигвам )
Что-то опять у ЖЖшки беда с загрузкой картинок, поэтому пришлось использовать imageshack.
текст )


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



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

теория )

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


Наконец-то нашел я время вернуться к обработке гартманнограмм.
Гартманнограммы я сгенерировал при помощи уже описанной модели, из нее получил значения нормалей к волновому фронту, преобразовал их в полярные координаты и далее стал пытаться восстановить волновой фронт так, чтобы получить нечто похожее на оригинальный.
Оригинальный волновой фронт имеет следующий вид:

подробнее )

September 2017

S M T W T F S
     1 2
3456789
1011 12 13141516
17181920 212223
24252627282930

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 25th, 2017 04:21 am
Powered by Dreamwidth Studios