Руководство системного...

14
Инв.подл. Подп. и дата Инв.дубл. Подп. и дата Взам.инв.СОГЛАСОВАНО УТВЕРЖДАЮ Генеральный директор И.о. директора Объединенного института проблем информатики НАН Беларуси, Научный руководитель программы «СКИФ» от Республики Беларусь Института программных систем РАН, Научный руководитель и Исполнительный директор программы «СКИФ» от Российской Федерации _________________ С.В. Абламейко _________________ С.М. Абрамов «____» __________ 2004 «____» __________ 2004 РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ОБРАБОТКИ РАДИОЛОКАЦИОННЫХ И ОПТИЧЕСКИХ СИГНАЛОВ И МОДЕЛИРОВАНИЯ ШИРОКОПОЛОСНЫХ ПРОСТРАНСТВЕННО-ВРЕМЕННЫХ РАДИОЛОКАЦИОННЫХ СИГНАЛОВ ПРОГРАММНАЯ СИСТЕМА СИНТЕЗА ФОКУСИРОВАННЫХ РАДИОЛОКАЦИОННЫХ ИЗОБРАЖЕНИЙ Руководство системного программиста ЛИСТ УТВЕРЖДЕНИЯ 04832915.10030-01 32 01-ЛУ СОГЛАСОВАНО Представитель предприятия-разработчика ИПС РАН Зам. исполнительного директора программы «СКИФ» от РФ, ст. научный сотрудник ИПС РАН Ответственный исполнитель Зам. директора НИИ космических систем _____________ А.И. Адамович ________________ С.В. Пушкарский “____”____________ 2004 “____”____________ 2004 Нормоконтролер ОИПИ НАН Беларуси ____________ В.Н. Чернушевич “____”____________ 2004 2004 Литера

Upload: dinhphuc

Post on 16-Feb-2018

230 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

Инв

.№ под

л.

Под

п. и

дат

а Инв

.№ дуб

л.

Под

п. и

дат

а Взам

.инв

.№

СОГЛАСОВАНО УТВЕРЖДАЮ

Генеральный директор И.о. директора Объединенного института проблем информатики НАН Беларуси, Научный руководитель программы «СКИФ» от Республики Беларусь

Института программных систем РАН,Научный руководитель и Исполнительный директор программы «СКИФ» от Российской Федерации

_________________ С.В. Абламейко _________________ С.М. Абрамов«____» __________ 2004 «____» __________ 2004

РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ОБРАБОТКИ РАДИОЛОКАЦИОННЫХ И ОПТИЧЕСКИХ СИГНАЛОВ И МОДЕЛИРОВАНИЯ ШИРОКОПОЛОСНЫХ

ПРОСТРАНСТВЕННО-ВРЕМЕННЫХ РАДИОЛОКАЦИОННЫХ СИГНАЛОВ

ПРОГРАММНАЯ СИСТЕМА СИНТЕЗА ФОКУСИРОВАННЫХ РАДИОЛОКАЦИОННЫХ ИЗОБРАЖЕНИЙ

Руководство системного программиста

ЛИСТ УТВЕРЖДЕНИЯ

04832915.10030-01 32 01-ЛУ

СОГЛАСОВАНО Представитель

предприятия-разработчика ИПС РАН

Зам. исполнительного директора программы «СКИФ» от РФ, ст. научный сотрудник ИПС РАН

Ответственный исполнитель Зам. директора НИИ космических систем

_____________ А.И. Адамович ________________ С.В. Пушкарский

“____”____________ 2004 “____”____________ 2004

Нормоконтролер ОИПИ НАН Беларуси

____________ В.Н. Чернушевич “____”____________ 2004

2004

Литера

Page 2: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

Инв

.№ под

л.

Под

п. и

дат

а Инв

.№ дуб

л.

Под

п. и

дат

а Взам

.инв

.№

УТВЕРЖДЕН

04832915.10030-01 32 01-ЛУ

РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ОБРАБОТКИ РАДИОЛОКАЦИОННЫХ И ОПТИЧЕСКИХ СИГНАЛОВ И

МОДЕЛИРОВАНИЯ ШИРОКОПОЛОСНЫХ ПРОСТРАНСТВЕННО-ВРЕМЕННЫХ РАДИОЛОКАЦИОННЫХ СИГНАЛОВ

ПРОГРАММНАЯ СИСТЕМА СИНТЕЗА ФОКУСИРОВАННЫХ РАДИОЛОКАЦИОННЫХ ИЗОБРАЖЕНИЙ

Руководство системного программиста

04832915.10030-01 32 01

Листов 13

2004 Литера

Page 3: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

2 04832915.10030-01 32 01

СОДЕРЖАНИЕ

1. Общие сведения о программе ...........................................................................................3 2. Структура программы........................................................................................................4 3. Настройка программы........................................................................................................7

3.1. Установка программы.................................................................................................7 3.2. Настройка на состав технических средств ...............................................................7

4. Проверка программы .........................................................................................................9 5. Дополнительные возможности .......................................................................................11 6. Сообщения системному программисту..........................................................................12

Page 4: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

3 04832915.10030-01 32 01

1. ОБЩИЕ СВЕДЕНИЯ О ПРОГРАММЕ

Программная система предназначена для формирования фокусированных радиолокационных изображений из голограмм радиолокационной станции космического базирования «Алмаз» и состоит из следующих компонентов:

1. графический интерфейс пользователя (rliX-niiks); 2. терминальное приложение обработки голограммы и формирования

радиолокационного изображения (rli-niiks). Формируемое изображение предназначено для решения задач разведки (обнаружение

объектов, распознавание объектов), картографирования местности, экологического мониторинга, оценки топографического рельефа местности и т.д.

При реализации программы синтеза использовались методы сжатия сигналов в радиолокатор с синтезированной апертурой (РСА) по азимуту, в частности, реализован метод быстрой свертки, основанный на операции быстрого преобразования Фурье (БПФ). Автофокусировка выполняется по методу минимизации энтропии.

Программа синтеза реализована на языке программирования Т++. Графический интерфейс пользователя реализован на языке программирования C++.

Программный комплекс предназначен для работы на кластере со следующими минимальными требованиями к его составляющим:

Управляющий компьютер кластера Оборудование: CPU Pentium-533, 128 MБ RAM (желательно 256), жесткий диск не менее 1000 MБ, net

card 100Mбит/с.

Программное обеспечение: OS Linux, ядро не ниже 2.4, XFree86, библиотеки libc, libstdc++, gtk+-2.0. OpenTS-1.999, библиотеки libdmpi_lam, libdmpi_scali. Узлы кластера CPU Pentium-1400, 256 MБ RAM (желательно 512), жесткий диск не менее 300 MБ, net

card 100Mбит/с OS Linux, ядро не ниже 2.4, библиотеки libc, libstdc++. OpenTS-1.999, библиотеки libdmpi_lam, libdmpi_scali.

Page 5: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

4 04832915.10030-01 32 01

2. СТРУКТУРА ПРОГРАММЫ

Алгоритм выполнения программы синтеза радиолокационное изображение (РЛИ): 1). Запись из файла-голограммы в память по адресу указателя m_mass_hol_byte:

fread(m_mass_hol_byte,1,m_length_az_hol*2*1024,p_file); m_length_az_hol*2*1024 - общее число байт, где m_length_az_hol =

filesize(p_file)/1024/2 - число комплексных отсчетов азимутальной строки. 2). Вычисление числа отсчетов для БПФ:

int N_fft_az_of_zeros = 2 << ( (int)floor(log(size_opor_az + m_length_az_hol)/log(2) ) ), и показателя степени двойки int pow_fft_az .

Число отсчетов всегда должно быть 2m для алгоритма БПФ. Размер вектора БПФ N_fft_az_of_zeros определяется через размер азимутальной строки и размер опоры size_opor_az + m_length_az_hol. Размер опоры size_opor_az вычисляется исходя из наклонной дальности, ширины антенны в градусах, путевой скорости и частоты зондирования:

size_opor_az = floor(Range_slant_0*angl_antenn*pi/180*f_zond/2/Vp). Число отсчетов БПВ N_fft_az_of_zeros всегда будет больше размера опорного сигнала

size_opor_az . 3). Синтез РЛИ для начальной дальности current_range = 330 км. Синтез предполагает выполнение цикла с 972 итерациями. В цикле выполняется функция Sintez_strign() с пятью основными шагами:

− формирование комплексного сигнала азимутальной строки; − вычисление спектра текущей азимутальной строки; − поэлементное перемножение комплексных спектров; − вычисление ОБПФ и взятие модуля от результата перемножения; − запись в результирующий массив (указатель mass_abs_out).

После предварительных расчетов, связанных с расчетом опорной функции и размеров данных, в программе начинается основная обработка: синтез РЛИ отдельных строк, реализуемых в цикле функцией Sintez_strign(). Функция Sintez_strign реализует обработку методом быстрой свертки. Параметры передаваемые функции Sintez_strign следующие:

void Sintez_strign(unsigned char *mass_hol_byte, int N_fft_az_of_zeros, int str_az_i, int m_length_az_hol, float *cos_array_az_lhm, float* sin_array_az_lhm, float * mass_abs_out, int size_rli_az, int size_opor_az) mass_hol_byte - указатель на беззнаковое байтовое целое (массив радиоголограммы,

считываемой из файла); N_fft_az_of_zeros - число отсчетов вектора быстрого преобразования Фурье

(рассчитывается предварительно перед основным циклом); str_az_i - номер текущей азимутальной строки (всего строк 972); m_length_az_hol - размер азимутальной строки (рассчитывается предварительно перед

основным циклом); cos_array_az_lhm, sin_array_az_lhm - указатели на массивы опорных функций

(рассчитываются предварительно перед основным циклом); mass_abs_out - указатель на результирующий массив, в который записывается

формируемое изображение; size_rli_az - размер по азимуту формируемого изображения (рассчитывается

предварительно перед основным циклом); size_opor_az - размер опорной азимутальной функции ( векторов cos_array_az_lhm,

sin_array_az_lhm, рассчитывается предварительно перед основным циклом). В предлагаемой программе обработка радиоголограммы осуществляется так

называемым методом быстрой свертки. В основе метода лежит хорошо распараллеливаемая

Page 6: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

5 04832915.10030-01 32 01

процедура быстрого преобразования Фурье (БПФ, fft). Распараллеливание предполагает в данном случае выполнение независимых процедур БПФ по строкам голограммы. Метод быстрой свертки заключается в выполнении следующих операций:

1). Вычисление БПФ азимутальной строки голограммы; 2. Перемножение полученного спектра с опорным спектром, вычисляемым

предварительно; 3). Вычисление ОБПФ от результата перемножения спектров; 4). Вычисление модуля результата процедуры ОБПФ (ifft) и запись «правильных»

отсчетов полученной строки - изображения в массив РЛИ. Следует иметь в виду, что все арифметические операции выполняются над

комплексными числами. Файл-голограмма представляет собой байтовую матрицу (в координатах дальность

(столбцы), азимут (строки)). Весь синтез РЛИ предполагает обработку только по азимуту (по строкам). В исходном формате в файле последовательно записаны отсчеты - байты столбцов. При последовательном считывании из файла 1024 байта образуется одно зондирование (столбец) размером 1024 элементов (байт), в котором первые 28 и последние 24 байта - служебная информация, соответственно оставшиеся 972 байта содержат 972 отсчета зондирования. Таким образом, размер РЛИ по дальности строго фиксированный (972 отсчета). Размер изображения по азимуту определяется объемом файла.

Последовательно выполняемая обработка предполагает выполнение 972 однотипных операций (БПФ, перемножение, обратного быстрого преобразования Фурье (ОБПФ), вычисление модуля) над текущей азимутальной строкой голограммы. Таким образом, в основе синтеза РЛИ лежит цикл с 972 итерациями. В результате выполнения шага цикла формируется одна строка РЛИ.

Формирование комплексного азимутального сигнала одной строки осуществляется операцией фазового детектирования. Фазовое детектирование выполняется простым через элементное считывание в мнимые и действительные массивы текущей азимутальной строки. Здесь нужно отметить, что байты одной и той же азимутальной строки размещаются в файле через «размер» столбца, то есть через 1024 байта. Для формирования одного комплексного отсчета необходимы два отсчета - байта, которые размещены через 1024 байта друг от друга. Считанные таким образом два байта образуют один комплексный отсчет азимутальной строки (см. рис. 1).

Рис.1

Кроме того, нужно, согласно индексу комплексного отсчета, умножать на +1 или -1 оба этих байта (умножить на cos(pi*i)). Помимо этого, приведение к нулевому среднему требует вычитания постоянной составляющей. В байте голограммы информационными битами являются первые 5. Таким образом, вычитание из беззнакового целого в один байт 16 снимает среднее.

По результатам выполнения оценивается строка, содержащая отсчеты с максимальной амплитудой.

Байты файла:

Комплексный отсчет

Page 7: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

6 04832915.10030-01 32 01

Для запуска цикла автофокусировки предварительно задается количество шагов итераций, на которых формируется РЛИ одной строки. Опорная функция, в зависимости от шага итерации, изменяется на 5 км, начиная с float current_range = 330e3 метров.

5). Выполнение основного цикла с 45 итерациями. Формирование опорного сигнала по формуле в программе: fft(cos_array_az_lhm, sin_array_az_lhm,pow_fft_az). В функцию БПВ (fft) передаются указатели на действительную и мнимую составляющие

опорного сигнала (cos_array_az_lhm, sin_array_az_lhm) и показатель степени двойки: pow_fft_az..

В цикле выполняется функция Sintez_strign(), которая формирует одну строку изображения. Сформированная строка подвергается оценке ее энтропии функцией Entropi(float * mass, unsigned int num_element).

Результат цикла - оценка энтропии для текущей дальности. 6). Синтез фокусированного РЛИ с 972 итерациями, в которых также выполняется

функция Sintez_strign(), где опорный массив рассчитывается на основании оценки номера цикла, соответствующего минимальной энтропии (используется дальность в этом цикле).

Затем сформированный массив амплитуд подвергается округлению в формате byte и записи функцией Save_File_BMP_old() на диск в виде файла BITMAP.

Кроме основных функций, связанных с обработкой данных, в программе используются вспомогательные:

int ibitr(int j, int nu) - вспомогательная функция для процедуры БПФ; void fft(float *xreal, float * ximag , int nu) - функция выполнения БПФ; void Save_File_BMP_old(char * fn,int X,int Y,unsigned char *buf) - функция конвертации

параметров в bitmap формат; void Save_File_BMP_add_zer(char *file_path,int n_x,int n_y, unsigned char *

mass_byte) - функция конвертации параметров в bitmap формат; void ifft(float *xreal, float *ximag,int nu) - функция выполнения ОБПФ; float Mat(float *mass ,int length) - функция вычисления среднего значения массива; unsigned char Round_one_float(float mass, float ves) - функция округления данных из float

в unsigned char; float Max_mass (float *mass ,int length) - функция вычисления максимального значения

массива; long filesize(FILE *stream) - функция определения размера файла в байтах.

Page 8: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

7 04832915.10030-01 32 01

3. НАСТРОЙКА ПРОГРАММЫ

3.1. Установка программы От имени суперпользователя установить rpm-пакеты на фронтальной машине и узлах

кластера: rpm -ihv rli-1.7-04.i386.rpm rli-demo-1.7-04.i386.rpm

all rpm -ihv rli-1.7-04.i386.rpm rli-demo-1.7-04.i386.rpm

RPM-пакеты находятся на CD в директории autofocus/ После установки в директории /usr/bin/rli должны появиться файлы rli-niiks, rliX-niiks. А в директории /usr/share/rli – поддиректории holograms и img-examples с наборами

демонстрационных голограмм и тестовых изображений.

3.2. Настройка на состав технических средств После запуска программы от имени обычного пользователя по команде

/usr/bin/rli/rliX-niiks &

необходимо задать через меню tools -> settings параметр Run command string (рис.2).

Рис.2. Окно настроек

“Run command string” – команда, запускающая синтез изображения. Если оставить эту строку пустой, то программа синтеза запускается на этом же компьютере (не на кластере). Для запуска на кластере необходимо ввести одну из следующих команд:

mpirun –np <cnt_CPU>

/opt/scah/bin/mpirun -np <cnt_CPU> ,

Page 9: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

8 04832915.10030-01 32 01

где <cnt_CPU> – количество процессоров, например, mpirun -np 32. Для сохранения сделанных изменений необходимо нажать кнопку “Apply”. Все

настройки сохраняются только для текущего пользователя. При использовании LAM MPI ( mpirun -np <cnt_CPU> ) необходимо предварительно

загрузить LAM по команде lamboot <nodelist.txt> ,

где nodelist.txt – текстовый файл со списком узлов, на которых необходимо загрузить LAM.

Page 10: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

9 04832915.10030-01 32 01

4. ПРОВЕРКА ПРОГРАММЫ

Запустив программу по команде /usr/bin/rli/rliX-niiks &, выбрав имя файла голограммы и метода синтезирования (рис.3.), необходимо нажать “Start progress”.

Рис.3. Главное окно

Файлы голограмм находятся в директории /usr/share/rli/holograms/. После успешного окончания синтезирования должно появиться полученное изображение

(рис.4).

Page 11: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

10 04832915.10030-01 32 01

Рис.4. Результат синтезирования

Полученное изображение можно посмотреть в отдельном окне (View in new window) или отдельном просмотрщике (View in other viewer).

В директории /usr/share/rli/img_examples/ находятся уменьшенные изображения, которые должны получаться в результате синтезирования. Совпадение изображения уменьшенного и полученного в результате синтезирования свидетельствует о правильной работе программы.

Page 12: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

11 04832915.10030-01 32 01

5. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ 1) Возможность сохранения синтезированного изображения с заданием имени

директории и имени файла через графическое меню посредством нажатия кнопки “Save as…”

2) Просмотр полученного изображения в отдельном окне (View in new window) или отдельном просмотрщике (View in other viewer).

3) Возможность задания директорий по умолчанию (рис.2.) для файлов голограмм (Default hologram directory) и файлов изображений (Default image directory).

4) Возможность автоматического сохранения (Automatically save output file) полученного файла изображения в директорию Default image directory. Имя сохраняемого файла задается именем выбранной голограммы с добавлением расширения “.bmp”. Если такой файл уже существует, то он перезаписывается без предупреждения.

5) Возможность просмотра файлов с расширением .bmp. 6) Вывод статуса файла: нет файла, временный (не сохранен), сохранен. 7) Обработка всевозможных задаваемых параметров и ситуаций и вывод сообщений

об ошибках.

Page 13: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

12 04832915.10030-01 32 01

6. СООБЩЕНИЯ СИСТЕМНОМУ ПРОГРАММИСТУ

В ходе выполнения программы могут выводиться следующие сообщения об ошибках: “ERROR: Can't write to source file. Output file not saved. Change file name and try again”. Ошибка. Невозможна запись в файл. Изменить имя записываемого файла и повторить. “ERROR: Can't create/open destination file. Output file not saved”. Ошибка. Невозможно создать или открыть файл. Это возможно при нарушении прав

доступа к файлу. Изменить имя записываемого файла и повторить. “ERROR: No range slant data”. Ошибка. Значение наклонной дальности не задано. “ERROR: Incorrect range slant data” Ошибка. Значение наклонной дальности задано неверно. Это возможно, если заданное

значение выходит за рамки диапазона или содержит недопустимые символы. “ERROR: The opened file is a directory. Can't open file” Ошибка. Открываемый файл является директорией. Повторить попытку с другим

именем файла. “ERROR: File does not exist. Can't open file” Ошибка. Невозможно открыть файл. Файл не существует. “ERROR: Can't save in the default directory” Ошибка. Невозможна запись в директорию по умолчанию. Это возможно при

нарушении прав доступа к файлу. Повторить попытку с другим именем файла. “ERROR: No input file” Ошибка. Нет входного файла.

Page 14: Руководство системного программистаskif.pereslavl.ru/skif/index.cgi?module=chap&action=getpage&data=... · В предлагаемой программе

13 04832915.10030-01 32 01

Лист регистрации изменений

Номера листов (страниц)

Изм. изменен-ных

заменен- ных

новых аннулиро-ванных

Всего листов

(страниц) в докум.

№ докум.

Входящий № сопроводи-тельного докум.

Подпись Дата