Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.sao.ru/precise/Laboratory/Publications/2000/MIDAS/Lect_N4/node2.html
Дата изменения: Mon Jan 31 12:20:43 2000 Дата индексирования: Sat Sep 11 22:09:48 2010 Кодировка: koi8-r Поисковые слова: п п п п р п р п р п р п р п |
Поскольку чаще всего в MIDAS астрономы-наблюдатели имеют дело с изображениями (одномерными, двумерными или трехмерными), то я начну свой краткий обзор именно с них.
Файл изображения состоит из шапки, содержащей дескрипторы и тела
изображения (массив данных размерности 1-3). Как и в случае
FITS-файла, дескрипторы полностью описывают данные: тип, размерность и так
далее (более подробно об этом смотрите ниже).
Изображение состоит из элементов, или ячеек, или пикселов.
Имеется очень большой набор команд, работающих с изображениями, и подавляющее
большинство этих команд имеют квалификатор .../IMAGE:
READ/IMAGE, WRITE/IMAGE, COMPUTE/IMAGE,
COPY/II ....
Кроме того, MIDAS предоставляет возможность обратиться не ко всему
изображению в целом, а к некой прямоугольной его области (частный случай --
один пиксел).
Формат этого стандартного обращения можно записать в виде:
frame[x1,y1:x2,y2], где
x -- номер колонки,
y -- номер строки,
x1,y1 -- координата левого нижнего угла выделяемой области,
x2,y2 -- координата правого верхнего угла выделяемой области.
В случае трехмерного массива вид обращения: frame[x1,y1,z1:x2,y2,z2].
ВНИМАНИЕ :Помните о двух символах, обозначающих начало изображения "<" и конец изображения ">".
При таком стандартном обращении монитор, выполняя Вашу команду, должен извлечь эту область из полного изображения и подать на выполнение MIDAS-команде.
Пример : |
COMPUTE/IMAGE qubodub = 0 -- присвоение всем пикселам одномерного изображения значения 0. |
COMPUTE/IMAGE qubodub[<:>] = 0 -- то же самое. |
COMPUTE/IMAGE qubodub[1000:>] = 0 -- присвоение пикселам одномерного изображения значения 0. Номера пикселов: от 1000-го до последнего. |
COMPUTE/IMAGE qubodub[1000,>:1000,>] = 0 -- присвоение всей двумерной области (правый верхний угол) двумерного изображения значения 0. |
PLOT/ROW Fabri[<,<,5:>,>,5] 100 -- нарисовать 100-ую строку из 5-ой XY-плоскости трехмерного массива данных. |
Полезно знать, что есть и короткая форма записи. К сожалению, она применима только для ряда частных случаев: строка в двумерном изображении или XY-плоскость трехмерного массива данных.
Пример : |
PLOT/ROW Fabri@5 100 -- нарисовать 100-ую строку из 5-ой XY-плоскости трехмерного массива данных. |
Конечно, существуют различного рода исключения из этого правила. Это касается команд, у которых уже есть отдельный параметр для задания области работы (например, STAT/IMAGE). В этом случае все зависит от версии MIDAS, в которой Вы работаете.
Замечание :Например, у меня в версии 96NOV команда
COMP/IMA qq[1:50] = qq[51:100] не работает, а команда
COMP/IMA qq[<:50] = qq[51:100] работает, но в других версиях результат может быть иным.
Следующее, что необходимо знать каждому при работе с изображениями -- это наличие двух систем координат: мировой и пиксельной -- одновременно. Поскольку начало и шаг для элемента изображения (они описаны в дескрипторах изображения) могут быть любыми числами, то адресация к элементу изображения может производиться как по номеру пикселов (пиксельные координаты), так и по номерам абсолютным, вычисляемым с помощью дескрипторов START и STEP (мировые координаты). При этом задание пиксельных координат производится при помощи символа "@". Так [@30:@60] или [30:60] -- это разные области одномерного изображения, хотя очень часто мировые и пиксельные координаты совпадают.
ВНИМАНИЕ :Это происходит, когда дескрипторы изображения START и STEP равны 1!
Пример : |
Есть одномерный спектр duboqub.bdf (изображение), содержащий 1024 числа. Дескриптор START равен 3700.0 (конечно, ангстрем -- спектр-то линеаризован, т.е. приведен к равномерному шагу!), а дескриптор STEP равен 3.0 (конечно, ангстрем). Тогда: |
COMPUTE/IMAGE duboqub[3700:3709] = 0 -- присвоение трем первым пикселам значения 0. Задание в мировых координатах. |
COMPUTE/IMAGE duboqub[@1:@3] = 0 -- то же самое. Задание в пиксельных координатах. |
COMPUTE/IMAGE duboqub[<:@3] = 0 -- то же самое. |
ВНИМАНИЕ :Символы "<" и ">" можно использовать в обеих формах записи (начало/конец - оно и в Африке начало/конец).
Пример : |
Есть двумерное изображение duboqub.bdf размером 512512 чисел (пикселей). Дескриптор START равен 5.0,10.0 а дескриптор STEP равен 1.0,-1.0 -- вот такой дурной случай. Тогда: |
EXTRACT/IMAGE line = cube[<,@1:>,@1] -- извлечение первой строки. Задание в пиксельных координатах. |
EXTRACT/IMAGE line = cube[<,10:>,10] -- извлечение первой строки. Задание в мировых координатах. |
Замечание :Очевидно, что обе системы координат -- линейные. Постепенно происходит переход к истинно мировой системе координат (так называемой WCS). На сегодняшний день в MIDAS уже есть команда -- GET/CURSOR, работающая в этой системе координат. Это значит, что если Вы, например, возьмете любое изображение, полученное с оцифрованного Паломарского обзора, то эта команда будет выдавать астрометрические координаты.
ВНИМАНИЕ :Помните, что команда COMPUTE/IMAGE работает в мировых координатах. Если же Вам необходимо проделать арифметические операции с несколькими изображениями, забыв про мировые координаты, пользуйтесь командой COMPUTE/PIXEL.
Замечание :Команда COMPUTE/IMAGE также полезна, поскольку позволяет не только производить математические операции с изображениями, но и использовать ее как калькулятор (содержит очень большое число дополнительных функций).