Документ взят из кэша поисковой машины. Адрес оригинального документа : 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
Изображения. Элементы в изображениях next up previous
Next: Описатели (дескрипторы) Up: Более подробно о работе Previous: Более подробно о работе

Изображения. Элементы в изображениях

Поскольку чаще всего в 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 размером 512$\times$512 чисел (пикселей). Дескриптор 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 также полезна, поскольку позволяет не только производить математические операции с изображениями, но и использовать ее как калькулятор (содержит очень большое число дополнительных функций).


next up previous
Next: Описатели (дескрипторы) Up: Более подробно о работе Previous: Более подробно о работе
Willy Kniazev
2000-01-31