Определяем положение фокальной плоскости
Jul. 12th, 2012 03:51 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Хоть нормальных наблюдений вчера провести не удалось (погода была ужасной), мы успели по крайней мере снять несколько гартманнограмм Веги для измерения точного положения фокальной плоскости для нового светоприемника (многострадального Apogee).
Итак, возьмем две гартманнограммы: предфокальную
и зафокальную:
Ее я обработал в своей fitsview для определения параметров пятен. Т.к. fitsview у меня еще сильно недопиленная, дальнейшие вычисления делаю в Octave.
Считываем X и Y предфокального (textread работает через задницу, поэтому делаем так):
Теперь нам надо найти центр гартманограммы. Среднее значение и медианное значение по всем точкам довольно прилично отличаются:
Добавляем теперь в нашу функцию поиска центров "усреднялку":
Теперь определяем средние радиусы каждого кольца:
Пусть расстояние между снимками равно L, расстояние от фокальной плоскости до предфокальной гартманнограммы равно d0, до зафокальной - d1 (L=d0+d1). Характерные размеры гартманограмм обозначим как h0 и h1. Тогда элементарная пропорция h1/d1=h0/d0 даст нам выражение для вычисления положения фокуса относительно положения предфокального снимка:
d0 = (L*h0)/(h0+h1) = L/(1+r),
где r = h1/h0.
F = f0+d0 где F - искомая величина перемещения привода фокуса, f0 - отсчет привода фокуса для предфокального изображения.
Получаем:
Для того, чтобы это положение соответствовало ровно середине диапазона перемещения стола, нам надо укоротить крепеж камеры на
Итак, возьмем две гартманнограммы: предфокальную


Ее я обработал в своей fitsview для определения параметров пятен. Т.к. fitsview у меня еще сильно недопиленная, дальнейшие вычисления делаю в Octave.
Считываем X и Y предфокального (textread работает через задницу, поэтому делаем так):
> [id0 X0 Y0 a b c d e f g h] = textread('f0.93_0003.spotlist');
Считываем X и Y зафокального:
> [id1 X1 Y1 a b c d e f g h] = textread('f198.57_0003.spotlist');
Выкидываем маркеры и внешнее кольцо:
> idx0 = find(id0 != 299 & id0 < 700);
проверяем, все ли точки попали в наш список:
> 32*7
ans = 224
> size(idx0)
ans =
224 1
То же самое делаем с зафокальным:
> idx1 = find(id1 != 299 & id1 < 700);
> size(idx1)
ans =
224 1
Все ОК, ничего лишнего и ничего пропущенного.
Теперь нам надо найти центр гартманограммы. Среднее значение и медианное значение по всем точкам довольно прилично отличаются:
> X0Cm = median(X0)
X0Cm = 1876.5
> Y0Cm = median(Y0)
Y0Cm = 1867.5
> X0Ca = mean(X0)
X0Ca = 1900.6
> Y0Ca = mean(Y0)
Y0Ca = 1837.3
Попробуем по-другому: будем искать центр тяжести для каждой противоположной пары
пятен:
function [Xc Yc] = getcenters(X, Y)
Xc = []; Yc = [];
for ring = [0:6]*32
for point = [1:16]
xx = (X(ring+point)+X(ring+point+16)) / 2;
yy = (Y(ring+point)+Y(ring+point+16)) / 2;
Xc = [Xc; xx]; Yc = [Yc; yy];
endfor
endfor
endfunction
Пробуем:
[Xc0 Yc0] = getcenters(X0, Y0);
> std(Xc0)
ans = 12.199
>std(Yc0)
ans = 6.0896
> mean(Xc0)
ans = 1910.4
> mean(Yc0)
ans = 1830.9
> median(Xc0)
ans = 1911.8
> median(Yc0)
ans = 1831.5
Отлично: теперь у нас среднее и медиана почти совпадают, а среднеквадратическое
отклонение хоть и не 1..2, но все-таки более-менее нормальное (не стоит забывать,
что у нас и зеркало не идеальное, и погода мягко говоря плохонькая была).
Добавляем теперь в нашу функцию поиска центров "усреднялку":
sx = std(Xc); sy = std(Yc);
printf("sigma(Xc) = %g, sigma(Yc) = %g\n", sx, sy);
Xc = median(Xc);
Yc = median(Yc);
И вычисляем координаты центров обеих гартманограмм:
[Xc0 Yc0] = getcenters(X0, Y0)
sigma(Xc) = 12.1989, sigma(Yc) = 6.08961
Xc0 = 1911.8
Yc0 = 1831.5
> [Xc1 Yc1] = getcenters(X1, Y1)
sigma(Xc) = 15.8502, sigma(Yc) = 8.59652
Xc1 = 1889
Yc1 = 1837.5
Координаты центров по X разошлись почти на две сигмы. Но судить о том, произошло
ли это по вине кривой посадки матрицы или же из-за статистики, рано: надо было
сделать несколько гартманограмм с разными углами вращения поворотного стола.
Теперь определяем средние радиусы каждого кольца:
function [R err] = getR(Xc, Yc, X, Y)
R = []; err = [];
for ring = [0:6]*32
idx = [1:32] + ring;
radii = sqrt((X(idx)-Xc).^2+(Y(idx)-Yc).^2);
R = [R; median(radii)];
err = [err; std(radii)];
endfor
endfunction
> [R0 err0] = getR(Xc0, Yc0, X0, Y0);
> [R1 err1] = getR(Xc1, Yc1, X1, Y1);
Итак, радиусы мы вычислили. Теперь посмотрим, сильно ли отличаются их
отношения:
> R1./R0
ans =
1.2787
1.3226
1.3203
1.3381
1.3318
1.3366
1.3334
Все более-менее прилично, определяем медиану:
> ratio = median(R1./R0)
ratio = 1.3318
Итак, габариты зафокальной гартманнограммы примерно в 1.33 раз больше габаритов
предфокальной.
Пусть расстояние между снимками равно L, расстояние от фокальной плоскости до предфокальной гартманнограммы равно d0, до зафокальной - d1 (L=d0+d1). Характерные размеры гартманограмм обозначим как h0 и h1. Тогда элементарная пропорция h1/d1=h0/d0 даст нам выражение для вычисления положения фокуса относительно положения предфокального снимка:
d0 = (L*h0)/(h0+h1) = L/(1+r),
где r = h1/h0.
F = f0+d0 где F - искомая величина перемещения привода фокуса, f0 - отсчет привода фокуса для предфокального изображения.
Получаем:
> L = 198.57 - 0.93
L = 197.64
> d0 = L / (1+ratio)
d0 = 84.760
> F = 0.93 + d0
F = 85.690
Итак, значение F=85.69мм соответствует положению фокальной плоскости для нашей
камеры.
Для того, чтобы это положение соответствовало ровно середине диапазона перемещения стола, нам надо укоротить крепеж камеры на
100 - F
ans = 14.310
В итоге получили, что нам надо отрезать 14мм от стоек крепления светоприемника. Отрежем, а на следующую техническую ночь проведем повторные измерения. Если все будет ОК, сделаем уже нормальный прибор, с турелью фильтров. И будем раз в месяц-два проводить позиционные измерения и снимать гартманнограммы. Правда, еще бы найти время, чтобы довести до ума восстановление профиля зеркала по гартманнограмме + автоматизировать позиционные измерения.
no subject
Date: 2012-07-13 05:33 am (UTC)вот здесь есть расстояние и чертежи корпуса.
no subject
Date: 2012-07-13 05:52 am (UTC)Интересно: в документации "оптическое" расстояние равно 25мм, а наши измерения 30мм дали… Правда и чип у нас совсем другой (хоть и U16M).
no subject
Date: 2012-07-13 05:55 am (UTC)no subject
Date: 2012-07-13 07:43 am (UTC)Вот здесь для всех камер этого типа есть чертежи
http://ccd.com/alta_mechanical.html
Спектрограф поживает хорошо. Постепенно выходим на рабочий режим. Надеюсь этой зимой будем наблюдать уже регулярно.