Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

Определяем положение фокальной плоскости

Хоть нормальных наблюдений вчера провести не удалось (погода была ужасной), мы успели по крайней мере снять несколько гартманнограмм Веги для измерения точного положения фокальной плоскости для нового светоприемника (многострадального Apogee).

Итак, возьмем две гартманнограммы: предфокальную
и зафокальную:

Ее я обработал в своей 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мм от стоек крепления светоприемника. Отрежем, а на следующую техническую ночь проведем повторные измерения. Если все будет ОК, сделаем уже нормальный прибор, с турелью фильтров. И будем раз в месяц-два проводить позиционные измерения и снимать гартманнограммы. Правда, еще бы найти время, чтобы довести до ума восстановление профиля зеркала по гартманнограмме + автоматизировать позиционные измерения.
Tags: octave, гартманнограмма, обработка изображений
Subscribe

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 4 comments