Еще немного про волновой фронт

May 29, 2013 16:14

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


Так как "полиномы Жао" состоят из линейной комбинации двух градиентов полиномов Цернике, преобразовывать коэффициенты Жао в коэффициенты Цернике надо хитро.

Для теста я взял простой "волновой фронт" вида
100.*(x-0.3)*y+200.*x*y²+300.*yy⁴
Вычислил градиенты и стал восстанавливать, ограничив предельную степень полиномов Цернике пятеркой.
В среднем отклонение восстановленного изображения от оригинала получилось около 2.5. Однако, при восстановлении нормалей длина отклонений получилась уже около 10.

При восстановлении коэффициентов Цернике получилось вот что. Если пользоваться коэффициентом sqrt((n+3)/(n+1)), получается вот что:

Coefficients for Zernike (sqrt((n+3)/(n+1)):
i Z[i] gradZ[i] S[i]
0 63.0 0.0 0.0
1 -26.6 -26.6 -26.6
2 27.9 29.0 43.2
3 36.2 36.2 36.2
4 57.2 59.6 75.1
5 -80.2 -85.2 -106.2
6 0.0 0.0 0.0
7 0.0 0.0 0.0
8 8.7 10.1 10.0
9 -31.2 -31.3 -31.3
10 0.0 0.0 0.0
11 0.0 0.0 0.0
12 17.0 15.5 15.5
13 -21.0 -21.0 -21.0
14 20.9 21.0 21.0
15 0.0 0.0 0.0
16 0.0 0.0 0.0
17 0.0 0.0 0.0
18 -0.3 -0.0 -0.0
19 0.3 0.0 0.0
20 0.2 0.0 0.0

(первый столбец - номер в нотации Нолля, второй - коэффициент Цернике для "волнового фронта", третий - восстановленный из поля нормалей коэффициент, четвертый - соответствующий коэффициент Жао).

Если схитрить и заменить коэффициент у второго слагаемого в формуле для "полинома Жао" на sqrt((n+1)/n), получится красивей:

Coefficients for Zernike (sqrt((n+1)/n):
i Z[i] gradZ[i] S[i]
0 63.0 0.0 0.0
1 -26.6 -26.6 -26.6
2 27.9 29.0 43.2
3 36.2 36.2 36.2
4 57.2 56.1 75.1
5 -80.2 -80.5 -106.2
6 0.0 0.0 0.0
7 0.0 0.0 0.0
8 8.7 10.1 10.0
9 -31.2 -31.3 -31.3
10 0.0 0.0 0.0
11 0.0 0.0 0.0
12 17.0 15.5 15.5
13 -21.0 -21.0 -21.0
14 20.9 21.0 21.0
15 0.0 0.0 0.0
16 0.0 0.0 0.0
17 0.0 0.0 0.0
18 -0.3 -0.0 -0.0
19 0.3 0.0 0.0
20 0.2 0.0 0.0

и отклонения восстановленного изображения от оригинала становятся меньше. Но все равно заметны сильные расхождения оригинальных и восстановленных коэффициентов. Да и непонятно, что такое sqrt((n+1)/n).
Надо разбираться дальше.

цернике, волновой фронт

Previous post Next post
Up