Вы находитесь на странице: 1из 118

1.

Основание, исполнитель и сроки выполнения работ


1.1 Основание для выполнения работы – учебный план.
1.2 Исполнитель – студент кафедры «Промышленные космические
системы» Ф.В.Песяк.
1.3 Начало работы – 1 сентября 2015г.
1.4 Окончание работы – 30 мая 2016г.

2. Цель выполнения работы


2.1 Целью выполнения работы является программная реализация этапов
алгоритма формирования радиолокационного изображения.

3. Технические требования к работе


3.1 Работа должна содержать следующие разделы:
3.1.1 Алгоритм формирования радиолокационного изображения.

3.1.1.1 Описание алгоритма фокусировки радиолокационного


изображения радиолокатора с синтезированной апертурой.
3.1.1.2 Описание алгоритма построения детальной карты
доплеровских смещений частоты.

3.1.2 Программная реализация этапов алгоритма фокусировки


радиолокационного изображения.
3.1.2.1 Импорт данных.
3.1.2.2 Алгоритм построения карты доплеровских смещений с
изменяемыми параметрами.

3.1.2.3 Построение опорных функций по дальности и азимуту.

3.1.3 Результаты расчётов.

3.1.3.1 Импортированные несфокусированные данные.

3.1.3.2 Карты доплеровских смещений различной точности.

3.2 Требования к содержанию разделов.


3.2.1 Алгоритм формирования радиолокационного изображения.
3.2.1.1 Описание алгоритма фокусировки радиолокационного
изображения радиолокатора с синтезированной апертурой.
Описание основных этапов алгоритма формирования
радиолокационного изображения: импорт данных, построение опорных
функций, вычисление карт доплеровских смещений, коррекция
миграции по дальности, алгоритм быстрой свертки.

3.2.1.2 Описание алгоритма построения детальной карты


доплеровских смещений частоты.
Реализация алгоритма построения детальных карт доплеровских
смещений на основе сырых данных. Описание всех необходимых
операций.

3.2.2 Программная реализация этапов алгоритма фокусировки


радиолокационного изображения.

3.2.2.1 Импорт данных.

Программная реализация операций конвертации и представления


сырых данных, а также необходимых для фокусировки параметров
съемки.
3.2.2.2 Алгоритм построения карты доплеровских смещений с
изменяемыми параметрами.

Программная реализация алгоритма построения детальных карт


доплеровских смещений на основе сырых данных
3.2.2.3 Построение опорных функций по дальности и азимуту.

Описание и реализация алгоритма построения опорных функций по


дальности и азимуту с использованием импортированных параметров.

3.2.3 Результаты расчётов.


3.2.3.1 Импортированные несфокусированные данные.
Полученные с помощью составленных программ сырые изображения,
представленные в виде квадратур.

3.2.3.2 Карты доплеровских смещений различной точности.

Полученные с применением составленных программ карты


доплеровских смещений.

3.3 Работа должна содержать необходимые иллюстративные материалы.


3.4 Работа должна содержать список используемых источников
информации.

2
4. Порядок выполнения и приемки работы
4.1 Работа должна быть представлена на защиту в электронной форме и
на бумажном носителе.

4.2 Защита в форме доклада предусматривается на территории


ОАО «Газпром космические системы».

3
РЕФЕРАТ

Магистерская диссертация, 113 страниц, 31 рисунок, 5 таблиц, 1 схема,


11 источников литературы, 4 приложения.

РАДИОЛОКАЦИЯ, ДИСТАНЦИОННОЕ ЗОНДИРОВАНИЕ,


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

Диссертация выполнена в ОАО «Газпром космические системы».

Объектом диссертационного исследования является обработка


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

Цель исследования – изучение алгоритма обработки принятого с РСА


несфокусированного изображения и разработка на его основе методов
построения детальных карт доплеровских смещений.

В данной работе приводится программная реализация инструментов,


необходимых для импорта изображения, записанного в стандартном формате
CEOS, вычисления доплеровского центроида, построения детальных карт
доплеровских смещений и опорных функций по дальности и по азимуту.
Рассмотрены карты доплеровских смещений различной точности и их
совместимость с амплитудными составляющими изображений,
сфокусированных с помощью стороннего программного обеспечения ENVI
SARscape.
СОДЕРЖАНИЕ

Введение 3

1 Описание алгоритма фокусировки радиолокационного изображения


радиолокатора с синтезированной апертурой. 6

1.1 Импорт данных 6

1.2 Дальностно-доплеровский алгоритм 10

1.3 Описание алгоритма построения детальной карты


доплеровских смещений 31

2 Программная реализация этапов алгоритма фокусировки


радиолокационного изображения. 37

2.1 Импорт данных 37

2.2 Алгоритм построения карты доплеровских смещений с


изменяемыми параметрами 48

2.3 Построение опорных функций по дальности и азимуту 65

3 Результаты расчетов 70

3.1 Импортированные несфокусированные данные 70

3.2 Карты доплеровских смещений различной точности 74

Заключение 92

Список использованных источников 95

Приложение А Листинг программы импорта на базе ПО Scilab 96

Приложение Б Листинг модуля import_rawdata_mat 96

Приложение В Листинг модуля doppler_centroid_cde. 104

Приложение Г Скрипт программы 109


2
ВВЕДЕНИЕ

Актуальность темы. В настоящее время среди средств дистанционного


зондирования Земли широкое применение получили радиолокаторы с
синтезированной апертурой (РСА). Это обусловлено рядом преимуществ,
которыми обладают данные устройства по сравнению с более традиционными
средствами съемки - оптическими системами. Самым важным является
высокое разрешение снимков и качественно новый формат полученных
данных в сравнении со съемкой в оптическом диапазоне.

Обработка радиолокационных изображений представляет собой


довольно сложную задачу, которая требует поэтапного комплексного
решения. На данный момент существует несколько основных алгоритмов
фокусировки радиолокационных изображений. В большинстве программных
решений они реализованы таким образом, чтобы уменьшить ресурсоемкость
выполняемых операций. Это достаточно сильно влияет на качество
сфокусированного изображения. В настоящее время проблема ресурсоемкости
уже не представляет большой сложности. Необходима реализация
программного обеспечения, которое позволит обрабатывать изображения с
большой точностью без учета загрузки аппаратного обеспечения. Это
позволит получать более точные и актуальные данные о поверхности земли с
учетом всех факторов, искажающих принятый радиосигнал.

Объектом исследования данной работы является обработка сигналов,


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

3
Цель данной работы – изучение и программная реализация алгоритма
фокусировки радиолокационного изображения, получаемого с космических
РСА.

Задачи работы:

1) Изучение основных этапов обработки радиолокационного изображения;


2) Описание алгоритма вычисления детальной карты доплеровских
смещений на основе несфокусированного изображения;
3) Программная реализация импорта данных в среду Python;
4) Программная реализация алгоритмов построения детальной карты
доплеровских смещений.

Методология исследования. Результаты работы основаны на


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

Научная новизна. В рамках данной работы разработан программный


код, с помощью которого можно импортировать несфокусированные
радиолокационные изображения и построить детальные карты доплеровских
смещений. Подобная процедура реализуется на базе языка программирования
с открытым кодом Python.

Практическая ценность. Реализованный в данной работе алгоритм


построения карт доплеровских смещений позволит улучшить качество
процедуры обработки радиолокационных изображений. С его помощью
можно получить более точные данные о земной поверхности. Также карты
смещений могут быть использованы отдельно от алгоритма фокусировки для
анализа подстилающей поверхности.

Работа состоит из титульного листа, реферата (аннотации) оглавления,


введения, основной части, заключения и списка использованной литературы.
Объем работы составляет 95 страниц, составленных в текстовом редакторе
4
Microsoft Office 2016. Из них титульный лист – 1 с, реферат – 1 с., оглавление
– 1 с., введение – 3 с., основная часть, в которой содержится 31 рисунок и 5
таблиц – 86 с., заключение – 3 с., список использованной литературы – 1 с,
приложения -

В первом разделе описываются основные этапы фокусировки


радиолокационного изображения. Он включает в себя описание процедур
импорта данных, различных способов вычисления доплеровского центроида,
сжатия по дальности, коррекции миграции по дальности и сжатия по
азимуту. Также здесь теоретически описана процедура построения детальной
карты доплеровских смещений.

Во втором разделе содержится программная реализация некоторых


этапов обработки. В частности, в нем находятся программы для импорта
изображения, построения детальной карты доплеровских смещений и
опорных функций по дальности.

В третьем разделе показаны результаты обработки радиолокационных


изображений. В нем представлен формат импортированных данных,
содержатся изображения карт смещений, наложенные на амплитудные
изображения, а также геокодированные карты Доплера.

В заключении описаны результаты проведенной работы в рамках


технического задания и перспективы дальнейших исследований.

5
1 Описание алгоритма фокусировки радиолокационного изображения
радиолокатора с синтезированной апертурой.

В данном разделе приводятся теоретические принципы обработки


радиолокационного изображения. В качестве основы взят существующий
дальностно-доплеровский алгоритм фокусировки. Также в разделе описаны
процедуры импорта данных.

1.1 Импорт данных

Данный подраздел посвящен расшифровке и интерпретации


радиолокационных изображений, взятых в формате CEOS.

1.1.1 Расшифровка данных.

Несфокусированное изображение, получаемое со спутников,


оснащенных радиолокаторами с синтезированной апертурой, может быть
закодировано в специальных форматах. Самым распространенным является
формат CEOS (Committee of Earth Observation Satellites). На данный момент
этот формат является стандартной формой представления данных ДЗЗ. В
частности, он используется организацией JAXA (Japan Aerospace Exploration
Agency) для передачи радиолокационных изображений с ALOS-2/PALSAR-2.

Радиолокационные изображения и данные съемки, полученные с


помощью ALOS PALSAR, разбиты на несколько файлов [1]:

1) Leader File – содержит вводную информацию о изображении, такую как


тип продукта, идентификаторы сенсора и миссии и так далее;
2) Imagery File – включает в себя изображение в квадратурном
представлении и дополнительную информацию, связанную с ним:
качество, данные геолокации и так далее. Значения пикселей имеют
конкретный размер в битах и могут быть представлены при
использовании различных алгоритмов записи. Например, значения
могут быть записаны для каждой линии по азимуту, причем квадратуры

6
записываются отдельно и в определенном порядке, зависящем от типа
поляризации изображения.
3) Trailer File – используется для записи данных о контроле качества и
другой информации, недоступной в начале обработки, например,
гистограммы предыдущего изображения
4) Также существует несколько дополнительных файлов, определяющих
характеристики организации данных. Эти файлы необходимы только
для определения конфигурации представления данных и не требуются
при обработке.

Существует специальная документация, раскрывающая структуру


построения каждого файла [1]. В этой документации представлено побайтное
описание файлов, которое может быть использовано для их декодирования.
Пример подобного описания представлен на рисунке 1.1.

Рисунок 1.1 - Пример описания Imagery File формата CEOS. В данном


сегменте описывается структура записи квадратур несфокусированного
изображения [1]

Таким образом, становится возможным независимое выделение и


обработка «сырых» данных с помощью сторонних инструментов. В частности,
это может быть сделано с помощью открытого программного обеспечения
Scilab. Результатом декодирования файлов являются конкретные данные,
7
представленные не в двоичной форме, а в качестве объектов среды, в которую
они были импортированы. Эти данные могут быть использованы для
последующей фокусировки и получения радиолокационного изображения с
помощью программируемого инструментария, основанного на программном
обеспечении с открытым кодом (например, программой Scilab или языком
программирования Python).

1.1.2 Распаковка данных

Данные, получаемые с РСА, передаются в виде квадратур (I и Q), то есть


в комплексной форме. Эти значения квантованы, то есть для каждого отсчета
они представлены в виде двух целых чисел: реальной и мнимой части.
Например, «сырые» данные спутника ERS имеют уровень квантования 5 бит,
то есть каждое значение I и Q находится в диапазоне целых чисел от 0 до 31.

Подобная запись означает, что данные, получаемые со спутника,


первоначально «запакованы», и необходимо провести определенную
процедуру, чтобы использовать их в дальнейшем. Эта процедура называется
распаковкой данных [2]. Она заключается в том, что функция распределения
данных со всех отсчетов должна быть усреднена по нулю. В общем случае для
уменьшения размера используемой памяти подобная процедура происходит в
реальном времени как часть процесса чтения данных. Для этого необходимо
знать смещение значений квадратур, которые могут содержаться в
сопроводительных файлах.

В результате целочисленные данные конвертируются в действительные


(числа с плавающей точкой). Для ERS номинальные значения смещений равны
15,5, а отклонения от этого значения малы. Реальные значения смещений
могут быть получены усреднением всех компонент квадратур, отдельно
реальной, отдельно мнимой частей. Этот процесс можно ускорить, включая в
среднее только каждый десятый отсчет.

8
Результатом распаковки является оригинальное несфокусированное
изображение подстилающей поверхности, амплитудная составляющая
которого представлена на рисунке 1.2.

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


несфокусированного изображения

1.1.3 Параметры, необходимые для фокусировки

Для дальнейшей обработки РЛИ необходимо определить некоторые


параметры съемки [1]. Часть из них непосредственно связана с
радиолокатором:

1) Частота повторения импульсов (PRF)


2) Частота взятия отсчетов (sampling frequency)
3) Длина импульса (pulse length)
4) Наклон ЛЧМ сигнала (chirp slope)
5) Длина волны или несущая частота (wavelength или carrier frequency)
9
Также для обработки требуются орбитальные параметры, такие как
эффективная скорость спутника (effective satellite velocity), вектора положения
спутника, высоты и радиус Земли исследуемой поверхности.

Эти параметры можно найти в сопроводительных файлах. Однако


точности некоторых из них бывает недостаточно. Например, количество
точек, в которых измеряется положение спутника, может быть слишком мало
для точной оценки параметров орбиты. В таких случаях необходимо
построить векторы положения спутника, используя его эфемериды.

1.2 Дальностно-доплеровский алгоритм

Существует несколько алгоритмов фокусировки РЛИ, полученного с


РСА. Самым распространенным на данный момент является дальностно-
доплеровский алгоритм (Range-Doppler Algorithm).

1.2.1 Определение опорных функций. Согласованный фильтр.

Основной количественной характеристикой, используемой при


обработке РЛИ, является отклик точечных целей, находящихся на
поверхности земли [3]. Эта характеристика играет основную роль в
фокусировке РЛИ, так как именно отклик формирует итоговое изображение.
Однако РЛИ в сыром виде содержит не только информацию о поверхности.
Ввиду того, что изучается целая область поверхности, отклик от нее будет
содержать и другие компоненты. Это связано с тем, что РСА излучает
радиоимпульсы с определенной частотой, что определяет форму
передаваемого сигнала, и с тем, что спутник движется во время съемки.
Соответственно, сигнал видоизменяется в зависимости от дальности или
азимута и становится линейно-частотно-модулированным (ЛЧМ) [4].
Следовательно, для получения точной информации о поверхности
необходимо нивелировать составляющие ЛЧМ-сигнала. Эта процедура
проводится с помощью согласованного фильтра, построенного на основе
характеристик РСА и траектории движения спутника.
10
Радарный импульс с единичной амплитудной может быть записан через
функцию 𝑟𝑒𝑐𝑡:
1
1, |t| ≤
rect(t) = { 2
1
0, |t| > (1)
2

В общем случае импульс с амплитудой A(t) и длительностью τ,


центрированной по времени 𝑡 = 𝑡𝑖 , можно записать в виде
τ τ
𝑡 − 𝑡𝑖 1, 𝑡𝑖 − ≤ 𝑡 ≤ 𝑡𝑖 + (2)
𝐴(𝑡) 𝑟𝑒𝑐𝑡 ( )={ 2 2
τ 0, в остальных случаях.

ЛЧМ-сигнал (chirp pulse) 𝑠𝑛 (𝑡), передаваемый в промежуток времени


𝑡 = [−τ𝑝 /2, τ𝑝 /2] и центрированный на 𝑡 = 0 можно записать так:

𝑡 𝐾 𝑡 (3)
𝑠𝑛 (𝑡) = exp(𝑗𝜓) 𝑟𝑒𝑐𝑡 ( ) = exp (𝑗 2𝜋 [𝑓𝑐 𝑡 + 𝑡 2 ]) 𝑟𝑒𝑐𝑡 ( ),
τ𝑝 2 𝛕𝒑

где 𝜓 – фаза передаваемого сигнала, 𝑓𝑐 – несущая частота, 𝐾–скорость ЛЧМ-


сигнала, τ𝑝 – длительность импульса, амплитуда считается произвольной и не
учитывается. В зависимости от знака 𝐾 ЛЧМ-сигнал может быть «верхним»
или «нижним», то есть иметь разную форму в зависимости от времени. На
рисунке 1.3 изображены реальная и мнимая компоненты комплексного ЛЧМ-
сигнала, передаваемого с помощью радиолокаторов с синтезированной
апертурой.

Рисунок 1.3. Реальная и мнимая составляющие комплексного ЛЧМ-


сигнала

11
Частота ЛЧМ сигнала изменяется по закону

1 𝑑𝜓 τ𝑝 τ𝑝 (4)
𝑓= = 𝑓𝑐 + 𝐾𝑡, − ≤ 𝑡 ≤ +
2𝜋 𝑑𝑡 2 2
Ширину полосы ЛЧМ сигнала можно определить с помощью
минимального и максимального значений частоты:

𝐾τ𝑝 (5)
𝑓𝐵𝑊 = (𝑓𝑐 + 𝐾τ𝑝 /2) − (𝑓𝑐 − ) = |𝐾|τ𝑝 .
2
Для упрощения процесса обработки предположим, что наклонная
дальность между радаром и точечным источником постоянна для выбранного
импульса, хотя для разных импульсов она разная. Это называется
аппроксимацией «вперед-назад», и она позволяет разбить двумерный процесс
фокусировки на два одномерных, проводимых в частотной области, как будет
показано ниже. Соответственно, задержка времени τ между излучением
сигнала и его возвращением с точки поверхности, находящейся на расстоянии
𝜌 можно записать в виде [3]:

ρ(s) (6)
τ(s) = 2 ,
c
где s – «медленное» время. Следовательно, отклик 𝑟(𝑠, 𝑡) можно записать как

𝐾 𝑡−𝜏 (7)
𝑟(𝑠, 𝑡) = 𝑠𝑛 (𝑡 − τ) = exp {𝑗 2𝜋 [𝑓𝑐 (𝑡 − 𝜏) + (𝑡 − 𝜏)2 ]} 𝑟𝑒𝑐𝑡 [ ].
2 τ𝑝

Следовательно, отклик – это функция, зависящая и от «медленного» времени,


и от «быстрого».

В результате преобразования сигнала в квадратурное представление


несущая частота удаляется. Эта операция называется гетеродинированием:

𝑡 − 𝜏(𝑠) (8)
𝑟(𝑠, 𝑡) = exp(−j 4𝜋ρ(s)/λ)exp{𝑗𝜋𝐾[(𝑡 − 𝜏(𝑠))2 ]} 𝑟𝑒𝑐𝑡 [ ],
𝛕𝒑

где λ – длина волны.

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


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

Модель, определенная уравнением (8), представляет собой линейную


инвариантную по времени систему (LTI-system). Соответственно,
согласованный фильтр формируется с LTI-характеристиками. Из теории
цифровой обработки сигналов известно, что выходной сигнал можно
представить как свертку входного сигнала с системным единичным
импульсным откликом [3]:
+∞

g(t) = ∫ 𝑓(𝑡 ′ )ℎ(𝑡 − 𝑡 ′ )𝑑𝑡 ′ ,


(9)
−∞

где импульсный отклик – это отклик системы на единичный импульс


𝑓(𝑡) = 𝛿(𝑡 − 𝑡 ′ ):
+∞

g(t)|𝑓(𝑡)=𝛿(𝑡−𝑡 ′ ) = ∫ 𝛿(𝑡 − 𝑡 ′ )ℎ(𝑡 − 𝑡 ′ )𝑑𝑡 ′ = ℎ(𝑡).


(10)
−∞

Соответственно, LTI-система полностью описывается своим единичным


импульсным откликом. Определить согласованный фильтр можно
следующим образом: получен сигнал 𝑠𝑛 (𝑡) и отклик, связанный с точечной
целью на расстоянии ρ от радара и искаженный аддитивным белым шумом;
необходимо выбрать фильтр, чтобы определить положение источника и
сопоставить его соответствующему значению дальности. Сначала
рассматривается фильтрация импульса по дальности, так как предположение
о постоянстве наклонной дальности для одного импульса позволяет не
учитывать положение по азимуту или зависимость от медленного времени.
Соответственно, отклик согласованного фильтра должен быть значительно
больше шума, проходящего через фильтр, и максимальным в момент 𝑡 = 𝜏.

13
Это приводит к ограничению снизу отношения сигнал-шум в момент
времени 𝑡 = 𝜏. Так как согласованный фильтр – это LTI-система, он может
быть описан через импульсный отклик:

ℎ(𝑡) = 𝑠𝑛∗ (−𝑡). (11)


Метод согласованного фильтра используется и в сжатии по дальности, и
в сжатии по азимуту. Стоит отметить, что зависимость медленного времени от
дальности приводит к миграции по дальности точечных откликов в
зависимости от движения спутника по его траектории. Эта проблема может
быть решена с помощью коррекции миграции по дальности (Range Cell
Migration Correction), которая выполняется до сжатия по азимуту.

1.2.2 Доплеровский центроид

Эффект Доплера заключается в изменении частоты принимаемого


сигнала, если существует относительное движение между источником сигнала
и приемником [4]. Он играет основополагающую роль при обработке РЛИ. Это
связано с движением спутника и принципом работы РСА. Если рассмотреть
только один импульс, доплеровские сдвиги будут достаточно малы, и их
можно не рассматривать. Однако в случае серии последовательных импульсов
эффект Доплера – главный аспект, формирующий фазу полученного сигнала
в азимутальном направлении.

Наклонную дальность 𝑅 как функцию медленного времени 𝜂 можно


определить по формуле

𝑉𝑟2 2 (12)
𝑅(𝜂) = √𝑅02 + 𝑉𝑟2 𝜂2 ≈ 𝑅0 + 𝜂 ,
2𝑅0
где 𝑅0 - значение дальности точки, ближайшей к антенне (то есть в
центре синтеза апертуры), 𝑉𝑟 – скорость спутника.

Используя это выражение, можно записать азимутальный сигнал в виде

𝑅0 𝑓0 𝑉𝑟2 𝑓0 2 (13)
𝑆𝑎 (𝜂) = 𝐴′ 𝑤𝑎 (𝜂 − 𝜂𝑎 ) exp {−𝑗 4𝜋 } exp {−𝑗 2𝜋 𝜂 }.
𝑐 𝑐𝑅0

14
Отсюда можно выразить фазу сигнала:

𝑅0 𝑓0 𝑉𝑟2 𝑓0 2 (14)
𝜑(𝜂) = −𝑗 4𝜋 − 𝑗 2𝜋 𝜂 .
𝑐 𝑐𝑅0
Частота сигнала в направлении азимута - это производная фазы по времени:

1 𝑑𝜑(𝜂) 2𝑉𝑟2 𝑓0 (15)


𝑓𝑎 (𝜂) = =− 𝜂.
2𝜋 𝑑𝜂 𝑐𝑅0
Ввиду того, что частота меняется по линейному закону, можно
заключить, что азимутальный сигнал по аналогии с дальностным является
ЛЧМ-сигналом. Этот сигнал имеет два основных параметра. Первый – это
скорость ЛЧМ-сигнала, которая в данном случае называется доплеровской
скоростью:
𝑑𝑓𝑎 (𝜂) 𝑉𝑟2 𝑓0 (16)
𝐾𝑎 = = − .
𝑑𝜂 𝑐𝑅0
Второй параметр – это так называемый доплеровский центроид, то
есть доплеровская частота, соответствующая центру диаграммы
направленности РСА:

𝑉𝑟2 𝑓0 (17)
𝑓𝑑𝑐 = 𝑓𝑎 (𝜂с ) = − 𝜂,
𝑐𝑅0 с
где ηс – момент времени, соответствующий центру диаграммы
направленности. Следовательно, частоту Доплера можно представить как
линейную функцию, зависящую от «медленного» времени:

𝑓𝑑 = 𝑓𝑑𝑐 + 𝐾𝑎 𝜂. (18)
Причина возникновения частотного сдвига в центре диаграммы
заключается в появлении угла скоса между направлением съемки и
перпендикуляром к траектории движения спутника [5]. В идеальном случае,
когда антенна направлена строго перпендикулярно траектории, доплеровский
центроид равен нулю, и сдвига спектра не происходит. Однако из-за
совокупности факторов (например, механических или электромагнитных)
направление антенны в плоскости наклонной дальности может измениться,
что приводит к смещению диаграммы направленности и спектра сигнала.
15
Рисунок 1.4. Возникновение угла скоса (squint angle) при съемке РСА
[5].

Точное вычисление доплеровского центроида необходимо для


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

В идеальных условиях доплеровский центроид может быть вычислен с


помощью геометрии съемки и системных параметров. Однако на практике

16
такой метод является малоэффективным, так как измерения высот пролета
спутника не обладают достаточной точностью. Поэтому для улучшения и
уточнения измерений необходимо использовать несфокусированные
изображения. Из-за того, что отсчеты азимутального сигнала принимаются с
конечной скоростью, полезно разбить доплеровский центроид на две
компоненты. Первая компонента ограничена 𝑃𝑅𝐹 и находится в пределах
[−𝑃𝑅𝐹/2, 𝑃𝑅𝐹/2]. Это связано с тем, что импульсы могут отсчитываться
только с определенной частотой (𝑃𝑅𝐹), и центроид возможно вычислить
только в пределах этой частоты. Однако возможны ситуации, когда реальный
доплеровский центроид находится за пределами 𝑃𝑅𝐹. В этом случае
существует дополнительная компонента, которая кратна 𝑃𝑅𝐹. Поэтому
доплеровский центроид разбивается на узкополосную часть (baseband DC) и
доплеровское число неопределенности (ambiguity number) [6]:

𝑓𝐷𝐶 = 𝑓𝑓𝑟𝑎𝑐 + 𝑀𝑎𝑚𝑏 𝑃𝑅𝐹, (19)


где 𝑓𝑓𝑟𝑎𝑐 - дробная часть 𝑃𝑅𝐹, 𝑀𝑎𝑚𝑏 – число неопределенности.

Доплеровский центроид может изменяться в зависимости от дальности.


В спутниковых РСА-системах относительная дальность между спутником и
изучаемой частью поверхности земли меняется в зависимости от траектории
движения спутника. Эти зависимости приводят к зависимости доплеровского
центроида от медленного времени. Также стоит отметить, что позиция
спутника также зависит от времени, что приводит к смещению направления
луча антенны.

Существует несколько алгоритмов вычисления доплеровского


центроида (узкополосного или абсолютного) [7]. Рассмотрим некоторые из
них.

Корреляционный доплеровский вычислитель (Correlation Doppler


Estimator, CDE) [8]. Этот алгоритм еще называют алгоритмом усредненного
коэффициента кросс-корреляции (AAAC). Он основан на построении

17
автокорреляционной функции азимутального сигнала. Допустим, что имеется
стохастический процесс 𝑠0 [𝑛], тогда автокорреляционная функция двух
отсчетов этого процесса, разделенных 𝑘 отсчетами, принимает вид

𝑟0 (𝑘) = 𝐸{𝑠0 [𝑚 + 𝑘]𝑠0∗ [𝑚]}. (20)


Спектр автокорреляционной функции равен

𝑅0 (𝑓) = 𝐹{𝑟0 (𝑘)} = ∑ 𝑟0 (𝑘) exp(−𝑗 2𝜋𝑘𝑇𝑓),


𝑘=−∞ (21)
1/2𝑇

𝑟0 (𝑘) = 𝐹 −1 {𝑅0 (𝑓)} = 𝑇 ∫ 𝑅0 (𝑓) exp(𝑗 2𝜋𝑘𝑇𝑓) 𝑑𝑓. (22)


−1/2𝑇

Если спектр будет смещен из-за появления доплеровского центроида


𝑓𝑓𝑟𝑎𝑐 , следовательно, изменится и корреляционная функция:

𝑅ℎ (𝑓) = 𝑅0 (𝑓 − 𝑓𝑓𝑟𝑎𝑐 ). (23)

𝑟ℎ (𝑘) = exp(𝑗 2𝜋𝑘𝑇𝑓𝑓𝑟𝑎𝑐 ) 𝑟ℎ (𝑘). (24)

Этот результат является основой для вычисления доплеровского


центроида во временной области. Видно, что фаза корреляционной функции
напрямую связана с 𝑓𝐷𝐶 . Следовательно, зная 𝑟ℎ (𝑘), можно будет определить
значение доплеровского сдвига. На практике данный метод применяется
следующим образом: вычисляется корреляционная функция по формуле
𝑁
1 (25)
𝑟ℎ (𝑘) = ∑ 𝑠[𝑘 + 𝑚] 𝑠 ∗ [𝑚] ,
𝑁
𝑚=1

а затем определяется 𝑓𝑓𝑟𝑎𝑐 как функция аргумента 𝑟ℎ (𝑘):

1 (26)
𝑓𝑓𝑟𝑎𝑐 = arg{𝑟ℎ (𝑘)} .
2𝜋𝑘𝑇
На практике данный алгоритм реализуется с параметром 𝑘 = 1. Стоит
отметить, что этот алгоритм вычисляет значение узкополосного центроида,
так как фаза автокорреляционной функции ограничена диапазоном [−𝜋, 𝜋].

18
Это означает, что с его помощью можно вычислить только дробное значение
доплеровского центроида. Для вычисления абсолютного значения требуются
некоторые усовершенствования алгоритма, которые реализованы, например, в
алгоритме MLCC.

Алгоритм мультиобзорного коэффициента корреляции (Multi-Look


Correlation Coefficient, MLCC). Этот алгоритм основан на методе CDE, однако
он позволяет вычислить абсолютное значение доплеровского центроида [6].
Это достигается путем создания двух обзоров одной азимутальной линии
сжатого по дальности изображения с помощью добавления к несущей частоте
некоторого параметра:
𝛥𝑓 𝛥𝑓
𝑓1 = 𝑓0 − 2
, 𝑓2 = 𝑓0 + 2
. (27)

Полученные два сигнала можно представить в виде

4𝜋
𝑠1 (𝜂) = 𝑤𝑎 (𝜂 − 𝜂𝑐 ) exp {−𝑗 𝑓 𝑅(𝜂)},
𝑐 1
(28)
4𝜋
𝑠2 (𝜂) = 𝑤𝑎 (𝜂 − 𝜂𝑐 ) exp {−𝑗 𝑓 𝑅(𝜂)} .
𝑐 2
Наклонная дальность 𝑅(𝑛) определяется по формуле

𝑣2 2 (29)
𝑅(𝜂) = √𝑅02 + 𝑣 2 𝜂2 ≈ 𝑅0 + 𝜂 ,
2𝑅0
где 𝑅0 – минимальная наклонная дальность (соотнесенная к ближайшей
точке на поверхности), 𝑣 – эффективная скорость движения спутника
относительно цели. Игнорируя постоянные фазовые члены, выражения для
сигналов можно переписать в виде

𝑠1 (𝜂) = 𝑤𝑎 (𝜂 − 𝜂𝑐 ) exp{−𝑗𝜋𝐾𝑎1 𝜂2 },
𝑠2 (𝜂) = 𝑤𝑎 (𝜂 − 𝜂𝑐 ) exp{−𝑗𝜋𝐾𝑎2 𝜂2 }, (30)
где 𝐾𝑎1 , 𝐾𝑎2 - доплеровские скорости двух обзоров соответственно:

2𝑣 2 𝛥𝑓
𝐾𝑎1 = (𝑓0 − ),
𝑐𝑅0 2 (31)

19
2𝑣 2 𝛥𝑓
𝐾𝑎2 = (𝑓0 + ).
𝑐𝑅0 2
Следовательно, существует ненулевая разность между доплеровскими
скоростями обзоров
2𝑣 2 𝛥𝑓𝑟 𝛥𝑓𝑟 (32)
𝐾𝑎2 − 𝐾𝑎1 = = 𝐾𝑎0 ,
𝑐𝑅0 𝑓0
где 𝐾𝑎0 – доплеровская скорость для исходного обзора.

Следует отметить, что 𝜂𝑐 может слабо зависеть от дальностной частоты,


которая создает сдвиг огибающей (например, для ERS-1 он может быть
опущен). Появление зависимости 𝜂𝑐 от дальностной частоты приводит к росту
смещения частот, которое уже не может быть проигнорировано в данном
алгоритме.

На практике алгоритм MLCC реализован следующим образом:


вычисляются автокорреляционные функции двух обзоров, полученных с
помощью описанной выше операции разделения спектра [9]:
𝑁−2
1
𝑟1 [1] = ∑ 𝑠1 [𝑖] 𝑠1∗ [𝑖 + 1],
𝑁−1
𝑖=0
𝑁−2 (33)
1
𝑟2 [1] = ∑ 𝑠2 [𝑖] 𝑠2∗ [𝑖 + 1].
𝑁−1
𝑖=0

Фазы полученных функций принимают вид:

𝜑1 = arg(𝑟1 [1]) , 𝜑2 = arg(𝑟2 [1]). (34)


Разность фаз можно определить с помощью формулы

𝛥 𝜑 = 𝜑1 − 𝜑2 = arg(𝑟1 [1]𝑟2∗ [1]) . (35)


Измеряя наклон сжатого по дальности сигнала 𝛥𝜑/ 𝛥𝑓 (в рад/Гц),
можно определить значение доплеровского центроида:


𝑃𝑅𝐹𝑓0 𝛥𝜑 (36)
𝑓𝐷𝐶 = − .
2𝜋𝛥𝑓
При этом, согласно алгоритму CDE и в обозначениях MLCC, дробная часть
доплеровского центроида равна
20
𝑃𝑅𝐹 𝜑1 + 𝜑2 (37)
𝑓𝑓𝑟𝑎𝑐 = − ( ).
2𝜋 2
Эти вычисления необходимы для точного определения числа
неопределенности и, соответственно, абсолютного значения доплеровского
центроида. Отдельно вычисление дробной части необходимо для уточнения
𝑀𝑎𝑚𝑏 [10]:

𝑓𝐷𝐶 − 𝑓𝑓𝑟𝑎𝑐 (38)


𝑀𝑎𝑚𝑏 = 𝑟𝑜𝑢𝑛𝑑 ( ).
𝑃𝑅𝐹
Абсолютное значение доплеровского центроида можно определить, используя
формулу. Ошибка вычисления равна

𝛥𝑓𝐷𝐶 = 𝑀𝑎𝑚𝑏 𝑃𝑅𝐹 − (𝑓𝐷𝐶 − 𝑓𝑓𝑟𝑎𝑐 ). (39)
Метод частотного разделения сигнала, представленный выше, имеет
важное значение вследствие эффективности его использования при
корректировке спектра доплеровских частот. Чувствительность алгоритма
MLCC сильно зависит от ширины полосы спектра каждого обзора 𝐵𝑊, и
частоты их разделения 𝛥𝑓, а точность измерений пропорциональна скорости
ЛЧМ-сигнала 𝐾𝑟 и длительности пульса 𝜏𝑝 . Для обеспечения надежности
вычислений необходимо ограничить максимально возможную частоту
2
разделения обзоров значением 𝛥𝑓𝑚𝑎𝑥 = |𝐾𝑟 |𝜏𝑝 , а ширину полосы – значением
3
1
𝐵𝑊𝑚𝑎𝑥 = |𝐾𝑟 |𝜏𝑝 . Стоит отметить, что метод MLCC – это алгоритм
3

разрешения неоднозначности по Доплеру, зависящий от сдвигов. Это


означает, что доплеровская частота слабо зависит от частоты передаваемого
ЛЧМ-импульса.

1.2.3 Сжатие по дальности

Описанные выше процедуры можно описать как подготовку сырых


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

21
процедуры составляют общую процедуру свертки изображения. Она состоит
из двух основных процессов: свертки по дальности и свертки по азимуту (или
сжатий) [5]. Между этапами свертки проводятся дополнительные операции по
коррекции алгоритма фокусировки РЛИ и нивелированию искажений,
связанных с формой проведения съемки и априори присутствующим
шумовым фоном.

Для начала рассмотрим процедуру сжатия по дальности. Первое, что


нужно определить – это фильтр, использующийся в алгоритме быстрой
свертки. Этот фильтр еще называют опорной функцией по дальности [11]:

𝑡 (40)
ℎ𝑟 (𝑡) = exp(−𝑗𝜋𝐾𝑡 2 )𝑟𝑒𝑐𝑡 [ ].
𝜏𝑝

Этот фильтр используется для быстрой свертки сигнала в направлении


по дальности. Сама процедура проводится следующим образом: вычисляется
преобразование Фурье имеющегося на входе дальностного сигнала (заданного
в дискретном виде, то есть как некоторое количество отсчетов), полученный
спектр умножается на комплексно сопряженный фурье-образ опорной
функции по дальности. Подобная методика связана с свойством фурье-образа
свертки – так называемой теоремой свертки [5]:

𝐹[𝑠 ∗ ℎ] = 𝐹[𝑠] ∗ 𝐹[ℎ]. (41)


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

Таким образом, подобный способ свертки очень удобен для работы с


дискретными данными, так как он лишает необходимости использование
рядов, применение которых весьма ресурсоемко при обработке больших
массивов.

Используя уравнения, содержащего входной сигнал фильтра и его


импульсный отклик, выходной сигнал, получаемый с помощью быстрой
свертки, принимает вид

22
2𝜌(𝑠) 𝜌(𝑠) (42)
𝑔(𝑠, 𝑡) = 𝑓𝐵𝑊 𝑠𝑖𝑛𝑐 (𝜋𝑓𝐵𝑊 [𝑡 − ]) exp [−𝑗4𝜋 ],
𝑐 𝜆
где было использовано выражение для ширины полосы спектра
импульса, а 𝑠𝑖𝑛𝑐(𝑥) = sin(𝑥)/𝑥.

Расширение опорной функции. Ввиду того, что сигнал, полученный


от точечного источника, распространен во временной области (порядка
нескольких сотен пикселей по дальности) из-за длительности передаваемого
импульса, в сырых данных частично будет присутствовать информация о
целях, расположенных вне области отсчетов. Для их правильной
интерпретации необходимо расширить ЛЧМ-сигнал. Этот процесс проводится
с помощью дополнительных нулевых отсчетов, добавляемых к опорной
функции. Таким образом, вся полученная информация сможет быть
обработана. Стоит отметить, что добавочные отсчеты вносят дополнительный
фазовый шум в опорную функцию, если сравнивать ее с исходной, и,
соответственно, негативно влияют на разрешение изображения.

Расширение опорной функции, определенное в виде некоторого числа


дополнительных дальностных отсчетов (пикселей в выходном изображении),
необходимо для того, чтобы найти распределение энергии, содержащейся в
сырых данных. Размер расширения определяется, исходя из размера строки
изображения по дальности.

1.2.4 Миграция по дальности

Сжатый по дальности сигнал содержит отклики точечных отражателей,


распределенные по азимуту (в пределах синтезированной апертуры). Это
проявляется в том, что информация о точечных отражателях содержится во
многих отсчетах и распределены в пространстве снимка ввиду принципа
синтеза апертуры. Для того, чтобы полностью сфокусировать данные и
получить радиолокационное изображение, отражающее только информацию о
поверхности, необходимо провести процедуру сжатия по азимуту. Однако
перед этой процедурой необходимо скорректировать искажения снимка,
23
связанные с характеристиками движения спутника. Из-за геометрии съемки
возникает эффект, при котором сжатый по дальности сигнал искажается, и
дальностные линии принимают параболическую форму (рисунок 1.5). Этот
эффект называется миграцией по дальности [3]. Его влияние на РЛИ может
привести к неправильной интерпретации строк по азимуту. В последующем
это скажется на результатах сжатия по азимуту, так как на вход будут
подаваться значения с разных строк, которые не были «выпрямлены».

Рисунок 1.5 - Миграция по дальности

Рассмотрим, как миграция по дальности влияет на полученный РСА


сигнал. Из уравнения (42) можно выделить фазу сжатого по дальности отклика
точечного отражателя:

𝜌(𝑠) (43)
𝜓 = −4𝜋 .
𝜆
Отсюда можно выразить доплеровский центроид и доплеровскую
скорость

𝜓̇ 2𝜌̇ (𝑠) (44)


𝑓𝐷С = =− ,
2𝜋 𝜆
𝜓̈ 2𝜌̈ (𝑠) (45)
𝑓𝑅 = =− .
2𝜋 𝜆
Дальность до цели как функцию медленного времени можно записать
через ряд Тейлора, используя значение наклонной дальности 𝜌с (а также его

24
производные) и 𝑠𝑐 – момент времени, когда отражатель находится в центре
луча:

1 (46)
𝜌(𝑠) = 𝜌с + 𝜌̇ с (𝑠 − 𝑠𝑐 ) + 𝜌̈ с (𝑠 − 𝑠𝑐 )2 ,
2
где ряд Тейлора построен до второго порядка. Производные дальности можно
записать в виде

𝜌̇ (𝑠) = 𝜌̇ с + 𝜌̈ с (𝑠 − 𝑠𝑐 ), (47)
𝜌̈ (𝑠) = 𝜌̈ с . (48)
Используя уравнения, можно определить производные по дальности
через доплеровский центроид 𝑓𝐷𝐶 и доплеровскую скорость 𝑓𝑅 . Итоговое
выражение принимает вид

𝜆𝑓𝐷𝐶 𝜆𝑓𝑅 (49)


𝜌(𝑠 − 𝑠𝑐 , 𝑠𝑐 , 𝜌с ) = 𝜌с − (𝑠 − 𝑠𝑐 ) − (𝑠 − 𝑠𝑐 )2 .
2 4
Известно, что 𝑓𝐷𝐶 и 𝑓𝑅 находятся в прямой зависимости от 𝜌с и 𝑠𝑐 . Иными
словами, 𝑓𝐷𝐶 и 𝑓𝑅 изменяются в зависимости от дальности, на которой
находится исследуемый объект.

Миграция по дальности определяется как дальность до точечного


источника относительно значения дальности в центре луча с течением
«медленного» времени. Выражение, определяющее миграцию 𝛥𝜌, имеет вид
𝜆𝑓𝐷𝐶 𝜆𝑓𝑅
𝛥𝜌 = 𝜌(𝑠 − 𝑠𝑐 , 𝑠𝑐 , 𝜌с ) − 𝜌с = − (𝑠 − 𝑠𝑐 ) − (𝑠 − 𝑠𝑐 )2 . (50)
2 4

Первое слагаемое относится к так называемому сдвигу по дальности, в то


время как второе слагаемое описывает искривление изображение по
дальности. Как видно из уравнения, существенные дальностные сдвиги можно
наблюдать при относительно больших длинах волн.

Стационарность сжатого по дальности отклика точечной цели .


Слабая зависимость 𝑓𝐷𝐶 и 𝑓𝑅 от 𝑠𝑐 приводит к тому, что сжатый по дальности
импульсный отклик приближенно стационарен относительно медленного
времени 𝑠. Соответственно, уравнение (49) можно упростить:

25
𝜆 1 (51)
𝜌(𝑠 − 𝑠𝑐 , 𝑠𝑐 , 𝜌с ) ≈ 𝜌(𝑠 − 𝑠𝑐 , 𝜌с ) ≡ ̃𝜌(𝑠, 𝜌с ) = = 𝜌с − (𝑓𝐷𝐶 𝑠 + 𝑓𝑅 𝑠 2 ) .
2 2
Здесь произведена замена 𝑠 − 𝑠𝑐 → 𝑠.

Ввиду стационарности импульсного отклика в «медленном» времени,


доплеровский спектр сжатого по дальности сигнала может быть измерен
методом стационарной фазы: основной вклад в интеграл Фурье дает точка 𝑠̂
стационарной фазы.

Фаза подынтрегальной комплекснозначной функции доплеровского


спектра можно записать как

4𝜋 (52)
𝛹(𝑠, 𝜌с ) = − ̃𝜌(𝑠, 𝜌с ) − 2𝜋𝑓𝑠,
𝜆
где 𝑓 – частота Доплера. Метод стационарной фазы заключается в следующем
выражении:

[𝛹̇(𝑠, 𝜌с )]𝑠=𝑠̂ = 0. (53)


В результате можно определить отношение между временем и частотой:

𝑓 − 𝑓𝐷𝐶 (54)
𝑠̂ = .
𝑓𝑅
Подставляя это выражение в уравнение (1.51), дальность, связанная с точками
стационарной фазы будет равна

𝜆 2 ). (55)
̃𝜌(𝑠̂ , 𝜌с ) = 𝜌с − (𝑓 2 − 𝑓𝐷𝐶
4𝑓𝑅
Стоит отметить, что сжатый по дальности отклик цели распределен
между несколькими смежными отсчетами по дальности (как точечный
источник, изображенный с течением «медленного» времени). Коррекция
миграции по дальности – это процедура, посредством которой дальность,
соотнесенная с откликом цели скорректирована постоянным значением
дальности 𝜌с в центре луча.

Схема алгоритма коррекции миграции по дальности. Алгоритм


коррекции миграции по дальности заключается в интерполяции сжатого по

26
дальности сигнала. Для малых смещений по дальности интерполяцию можно
полностью провести в частотной области. С другой стороны, большие
смещения по дальности усложняют процедуру. Для их нивелирования
требуются дополнительная процедура так называемого азимутального сжатия
по дальности или второго сжатия по дальности.

В общем виде процедуру коррекции миграции по дальности можно


разбить на два шага. Во-первых, необходимо вычислить значение миграции по
дальности и представить результаты в виде целого и дробного чисел
дальностных отсчетов. Во-вторых, необходимо провести интерполяцию
дробного числа дальностных отсчетов, принимая во внимание смещение,
соотнесенное к целым количествам отсчетов по дальности.

Наиболее распространенной моделью интерполяции при обработке РЛИ


является интерполятор, основанный на использовании 𝑠𝑖𝑛𝑐-функции [11].
Например, для серии отсчетов 𝑠(𝑖) интерполированное с помощью N-
точечной 𝑠𝑖𝑛𝑐-функции значение 𝑠(𝑥) в точке со значением дальности
xможно представить в виде
𝑁 𝑁
2 2
𝑠𝑖𝑛𝑐[𝜋(𝑥 − 𝑖)] (−1)𝑖
𝑠(𝑥) = ∑ 𝑠(𝑖)𝑠𝑖𝑛𝑐[𝜋(𝑥 − 𝑖)] = ∑ 𝑠(𝑖). (56)
𝜋 𝑥 − 𝑖
𝑁 𝑁
𝑖=− +1 𝑖=− +1
2 2

Результат коррекции схематично представлен на рисунке 1.6.

27
Рисунок 1.6 - Коррекция миграции по дальности. На рисунке слева
изображена параболическая линия по азимуту, справа – выпрямленная
вследствие корректировки.

1.2.5 Сжатие по азимуту

Последний этап фокусировки РЛИ - это сжатие по азимуту. Эта


процедура мало отличается от сжатия по дальности, однако здесь требуются
некоторые уточнения. Дело в том, что согласованный фильтр свертки (или
опорная функция по азимуту) строится на основе данных о доплеровских
частотах и зависит от времени синтеза апертуры 𝜏𝑎 (время интеграции РСА).
Импульсный отклик такого фильтра имеет вид

1 𝑠 (57)
ℎ𝑎 (𝑠) = exp [𝑗2𝜋 (𝑓𝐷𝐶 𝑠 − 𝑓𝑅 𝑠 2 )] rect [ ] ,
2 𝜏𝑎
где 𝜏𝑎 = 𝜆𝜌с /2𝑉𝑠𝑡 𝛿𝑎, 𝛿𝑎 ≥ 𝐿𝑎 /2.Время 𝑠 измеряется относительно 𝑠𝑐 , 𝑉𝑠𝑡 –
скорость спутника относительно цели, 𝐿𝑎 – длина антенны в направлении
азимута, 𝛿𝑎– требуемое разрешение по азимуту (теоретический нижний порог
- 𝐿𝑎 /2). Здесь разрешение используется как входной параметр, изменение
которого повлечет за собой изменение времени синтеза [11].

Модуль отклика точечной цели после сжатия по азимуту принимает вид

|𝑔(𝑠)| = 𝐵𝐷 𝑠𝑖𝑛𝑐(𝜋𝐵𝐷 𝑠), (58)

28
где 𝐵𝐷 = |𝑓𝑅 |𝜏𝑎 – ширина полосы доплеровских частот. Следовательно,
разрешение по азимуту 𝛿𝑎 можно записать как

𝑉𝑠𝑡 (59)
𝛿𝑎 = 𝑉𝑠𝑡 𝛿𝑠 = 𝑉𝑠𝑡 𝐵𝐷−1 = ,
|𝑓𝑅 |𝜏𝑎
где 𝛿𝑠 –это ширина лепестка диаграммы направленности выходного сигнала
азимутального фильтра на уровне половинной мощности. Из этого выражения
видно, что лучшее разрешение по азимуту можно получить, увеличивая время
синтеза апертуры. Например, при режиме точечной съемки (Spotlight-mode
SAR) луч радара направляется на фиксированную область поверхности на
протяжении всей съемки. При этом увеличивается время синтеза (для
небольшого участка поверхности), следовательно, растет интервал синтеза
апертуры и ширина полосы частот. Тем самым достигается уменьшение 𝛿𝑎 и
улучшение качества изображения в сравнении с полосовым режимом съемки
РСА (Stripmap-mode SAR). Однако подобное улучшение возможно только для
относительно небольших участков земной поверхности.

Сжатие по азимуту представляет собой свертку сжатого и


скорректированного по дальности массива сырых данных при использовании
опорной функции по азимуту. Подобно сжатию по дальности, эту процедуру
можно провести в области доплеровских частот. Процедура заключается в
умножении спектра азимутальных полос сырого РЛИ и спектра опорной
функции по дальности с последующим преобразованием обратно во
временную область. Однако, при ближайшем сравнении двух алгоритмов
оказывается, что процедура сжатия по азимуту требует разрешения двух
дополнительных проблем. Первая проблема заключается в том, что опорная
функция по азимуту зависит от 𝜌с и, следовательно, от 𝑓𝐷𝐶 и 𝑓𝑅 . Это означает,
что ее нужно пересчитать в зависимости от дальности, используя данные о
доплеровском центроиде. Вторая проблема связана с тем, что время синтеза
апертуры также зависит от 𝜌с . Из уравнения видно, что 𝜏𝑎 возрастает с
увеличением дальности в центре синтезированной апертуры. Следовательно,

29
для сохранения однородности разрешения по азимуту на всем снимке
необходимо увеличивать число отсчетов по азимуту, используемых в сжатии
по дальности.

В результате проведения процедуры сжатия по азимуту строится


сфокусированное комплексное радиолокационное изображение, амплитудная
составляющая которого представлена на рисунке 1.7.

Рисунок 1.7 - Амплитуда полностью сфокусированного изображения

В заключении необходимо добавить, что для больших массивов данных


(например, при режиме съемки Stripmap) следует разбивать данные на части.
При этом необходимо учесть, что для пикселей, расположенных на расстоянии
половины синтезированной апертуры от границ снимка, данные могут
потеряться, так как информация об их отклике распределена по сырым данным
с шагом в длину синтезированной апертуры. Эту проблему можно решить,
используя участки с общими областями для вычислений. При этом смежные
30
боковые области не используются как выходные данные, так как они нужны
только для полной оценки отклика граничных пикселей. Этот процесс сжатия
можно представить в виде окна вычислений, которое смещается на
определенный шаг по массиву сырых данных.

Стоит отметить, что полученное таким образом РЛИ необходимо


обрезать с обоих краев на величину половины синтеза апертуры. Это связано
с тем, что для боковых пикселей будет недостаточно данных для того, чтобы
получить изображение с тем же разрешением, ввиду того, что для них
используется меньший интервал синтеза апертуры, чем для внутренних точек.

1.3 Описание алгоритма построения детальной карты доплеровских


смещений

Дальностно-доплеровский алгоритм фокусировки хорошо


зарекомендовал себя как надежный и быстрый способ фокусировки
радиолокационных изображений. Получаемые с его помощью данные
достаточно точны для дальнейшей реализации. Однако из-за того, что
алгоритм реализован на основе большого количества вычислений с большими
массивами чисел, в большинстве используемых на данный момент систем
используются алгоритмы, заметно уменьшающие нагрузку на систему. Это
достигается путем усреднения и использования полиномиальных конструкций
в фильтрах, отдельных этапах алгоритма фокусировки, коррегистрации и
других процедурах. Из-за подобных упрощений страдает качество выходной
информации. В частности, это касается вычисления доплеровского центроида.

Значение доплеровского центроида в определенном местоположении


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

31
тому, что значение доплеровского центроида в данной области съемки
изменится. Подобные изменения могут серьезно повлиять на всю процедуру
обработки и, соответственно, качество выходного изображения. Это связано с
тем, что операция быстрой свертки проводится в частотной области, где из
спектра переданного сигнала исключается спектр входного (для получения
сигнала отраженной поверхности). Неправильное построение опорной
функции по азимуту без учета карты доплеровских смещений приведет к
множественным ошибкам в самой процедуре сжатия.

Стоит отметить, что детальные карты доплеровских смещений сами по


себе могут содержать полезную информацию, которая может быть
использована для анализа процессов, происходящих в атмосфере и на
поверхности. Дело в том, что в идеальном случае значение доплеровского
центроида должно быть равно нулю. В реальной ситуации возможно, что
направление главного лепестка радиолокатора может повернуться на
определенный угол в плоскости визирования (угол скоса), что приведет к
изменению значения доплеровского центроида. Однако это не объясняет
появление, например, локальных артефактов в детальной карте смещений
(смотри раздел 3.2).

Чтобы включить подобные результаты в процесс обработки,


необходимо разработать новый алгоритм фокусировки радиолокационных
изображений, использующий точную информацию о значениях
доплеровского центроида. Следовательно, первостепенной задачей является
построение детальной карты доплеровских смещений. Эта задача может быть
решена, используя метод плавающего окна применительно к стандартным
методам вычисления доплеровского центроида.

Метод плавающего окна основан на том, что доплеровский центроид


вычисляется не для всех линий по азимуту сразу, а для нескольких,
находящихся в пределах некоторого интервала. Это позволит учесть
локальные искажения в частотной области. При этом необходимо, чтобы
32
размеры окна могли варьироваться. Дело в том, что изначально неизвестно,
какая точность измерения доплеровского центроида требуется для получения
корректных изображений. Недостаток вычислений может привести к
усреднению локальных смещений доплеровского центроида и ухудшению
качества изображения. В то же время карты с большой детализацией могут
содержать ошибки, связанные с шумовым фоном, присутствующим в любом
наборе данных. Например, в рассмотренном выше алгоритме CDE
корреляционная функция строится как среднее от набора произведений,
смещенных на определенное количество пикселей комплексных значений.
Естественно утверждать, что при малом количестве элементов в массиве
среднее может содержать значительные ошибки. Это означает, что
необходимо найти оптимальный размер окна, при котором учитывается
локальность искажений и нивелирование ошибок, связанных с шумом.

Алгоритм вычисления детальных карт доплеровских смещений на базе


алгоритма CDE состоит в следующем:

1) Определяется размер окна по азимуту. В этом окне проводятся


вычисления автокорреляционной функции и, соответственно,
доплеровского центроида. Эти вычисления проводятся по всем строкам
по дальности;
2) Окно смещается с определенным шагом в направлении азимута. Размер
этого шага можно сделать меньше размера окна, то есть окно будет
двигаться «внахлёст». В данной работе стандартным размером шага
принято значение 1/8 от размера окна. Такой выбор позволит построить
относительно гладкие карты Доплера без особых потерь в качестве
информации;
3) Параллельно эти вычисления сопровождаются составлением массива с
координатами в системе «дальность-Доплер». Координатой для
конкретного окна принимается положение его центра относительно
всего изображения;
33
4) После того, как все вычисления центроида были сделаны, необходимо
произвести усреднение по дальности. Для этого определяется размер
окна, в котором будет проводиться усреднение, и шаг (стандарт – 1/8 от
размера окна). После этого проводится похожая процедура с
параллельным вычислением координаты центра окна по дальности.

После проведения вышеперечисленных процедур цикл повторяется. На


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

Для демонстрации проявления локальности в построении карт Доплера


рассмотрим следующие результаты, полученные в ходе разработке метода
окон. Исходным материалом является необработанное изображение со
спутника ALOS PALSAR за 2007 год. На рисунках 1.8 представлены графики
доплеровских центроидов, полученных для начальных линий по дальности.
Видно, что при выборе количества линий от 1000 до 2000 графики не меняют
своих очертаний, а значения все больше усредняются. Однако при переходе от
2000 линий к 5000 картина резко меняется. Это говорит о том, что локальные
смещения, зафиксированные при относительно малом количестве
задействованных линий, усредняются и теряются, если число линий
увеличить. Если построить график для доплеровского центроида,
построенного на основе всех линий, все локальные искажения исчезнут
(рисунок 1.9). Это означает, что все локальные неоднородности,
присутствовавшие на снимке, сгладились из-за полного усреднения всего
изображения. Стоит отметить, что вычисление доплеровского центроида для
всего изображения затрачивает гораздо меньше ресурсов, чем построение
детальной карты, что можно объяснить большой разницей в количестве
проводимых операций. Это связано с тем, что вычисление карты проводится с
наложением окон друг на друга, в результате чего количество элементов,
участвующих в обработке, становится больше реального числа линий и
отсчетов в каждой линии.
34
(а)

(б)

(в)
Рисунок 1.8. Графики зависимости доплеровского центроида от
дальности для: а-1000 линий по азимуту; б – 2000 линий по азимуту; в – 5000
линий по азимуту.

35
Рисунок 1.9. График зависимости доплеровского центроида от
дальности для всех линий по азимуту.

Таким образом, показано, что построение карты доплеровских


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

36
2 Программная реализация этапов алгоритма фокусировки
радиолокационного изображения.

В данном разделе содержатся инструменты, необходимые для


проведения начальных этапов фокусировки радиолокационного изображения.
Они реализованы в виде программ на базе программного обеспечения Scilab и
языка программирования Python.

2.1 Импорт данных

Данный подраздел представляет необходимый программный


инструментарий, необходимый для импорта записанных в формате CEOS
файлов радиолокационного изображения во внутреннюю среду Scilab и
Python.

2.1.1 Импорт данных в формат MATLAB

В данном пункте представлены алгоритмы импорта сырых данных,


полученных с космического аппарата ALOS PALSAR. Изначальные данные
записаны в стандартном формате CEOS (его общее описание содержится в
пункте 1.1.1). В дополнение к собственно сырым данным в файлах содержится
информация о параметрах съемки, необходимых для дальнейшей обработки
изображения.

В данной работе была реализована задача по импорту сырых данных,


полученных с ALOS PALSAR. Она была выполнена на базе программного
обеспечения с открытым кодом Scilab. Для этого использовались
спецификации формата данных, используемые Центром анализа данных
дистанционного зондирования Земли (ERSDAC) [1].

Программа реализована таким образом: сначала из файла с данными о


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

37
строк, каждая из которых состоит из "шапки" и основных данных. В "шапке"
находятся различные параметры съемки: дата съемки, длительность импульса
радиосигнала, частота повторения импульса, тип поляризации, количество
отсчетов по дальности и номер строки по азимуту. Следует отметить, что при
подобном расположении данных "шапка" остается практически неизменной.
Однако это необходимо при дешифрировании данных типа ScanSAR. Дело в
том, что при этом режиме съемка проводится сразу с пяти лучей, обладающих
разными значениями PRF, а также количеством отсчетов по дальности. При
этом запись проводится в реальном времени по частям, то есть данные с
разных лучей записываются в зависимости от времени, а не расположения, и,
следовательно, разбиты. Именно для подобного формата записи необходимо в
каждой строке указывать все параметры, в том числе и неизменяемые.

В файле формата CEOS, согласно спецификациям, размер вводной части


файла составляет 16252 байта, размер шапки - 292 байта, размер строки с
данными - 20608 байта. Следовательно, размер строки составляет 20900 байт.
Это справедливо снимков с различной поляризацией, исключая режим съемки
ScanSAR: в нем число пикселей по дальности зависит от луча, следовательно,
для разных лучей длина строки будет разной.

Перед началом импорта необходимо определить размеры массива


данных, то есть число пикселей по дальности и по азимуту. Для режима
съемки Stripmap первые определяются из шапки файла:

mseek(16276, fd)
range_pixels=mget(1, 'uib', fd)

где fd - номер импортируемого файла, mseek(n, fd) - операция перехода к


определенному месту в файле, mget(n, k, fd) - извлечение данных из файла в
формате, определяемым пользователем. Стоит отметить, что формат данных
изначально был неизвестен и был подобран, исходя из размера данных в
спецификациях (в байтах).

38
Число пикселей по азимуту можно определить, зная номера начальной и
конечной строк. Номер начальной строки определяется таким образом:

mseek(16264)
azimuth_1=mget(1, 'uib', fd)

Для того, чтобы получить номер конечной строки, необходимо перейти


в конец файла. Для этого используется операция fileinfo(fn), где fn - путь к
файлу.

info=fileinfo(fn)
raw_end=info(1)
i_number_azimuth=raw_end-20888
mseek(i_number_azimuth, fd)
azimuth_2=mget(1, 'uib', fd)

Число пикселей по азимуту определяется выражением

azimuth_pixels=azimuth_2-azimuth_1+1

Следующее, что нужно определить - дата съемки. В формате CEOS она


представлена в виде трех значений: года, дня года и миллисекунд в момент
начала записи строки. Таким образом, можно определить время начала
съемки:

mseek(16288, fd)
year=mget(1, 'uib', fd)
day=mget(1, 'uib', fd)
msec_begin=mget(1, 'uib', fd)

Определив число миллисекунд от начала дня в конце съемки, можно


определить ее длительность. Это достигается так же, как и в случае с числом
пикселей по азимуту:

i_msec=raw_end-20856
mseek(i_msec)
msec_end=mget(1,'uib', fd)
slow_time=msec_end-msec_begin

где slow_time - длительность съемки.

39
Подобным образом определяются частота повторения импульсов PRF и
длительность импульса 𝜏𝑝 :

mseek(16308, fd)
PRF=mget(1, 'uib', fd)
taup=mget(1, 'uib', fd)
disp(taup)

Для импорта квадратур сырого изображения необходимо определить


тип поляризации. Дело в том, что данные при разных типах поляризации
записаны по-разному. Например, при одиночной поляризации значения
квадратур I(TR) и Q(TR) представлены в виде:

1 строка: I(TR), Q(TR), I(TR), Q(TR), ...


2 строка: I(TR), Q(TR), I(TR), Q(TR), ...
...
Здесь T - поляризация исходящего сигнала, R - полученного: T= H,V;
R=H,V. Как видно из схемы построения строк, на каждый отсчет по дальности
приходится два значения квадратур, записанных отдельно. Отсюда можно
сделать вывод, что число пикселей по дальности для изображения с одиночной
поляризацией будет равно 20608/2=10304 отсчетов.

Для снимков с двойной поляризацией (T=H,V; R=H+V) форма записи


будет следующей:

1 строка: I(HH), Q(HH), I(HV), Q(HV), ...


2 строка: I(HH), Q(HH), I(HV), Q(HV), ...
...
или

1 строка: I(VH), Q(VH), I(VV), Q(VV), ...


2 строка: I(VH), Q(VH), I(VV), Q(VV), ...
...
Как видно, для описания каждого пикселя необходимо уже 4 значения
квадратур. Следовательно, число пикселей по дальности будет равно 20608/4
= 5152 отсчетов.

Стоит отметить, что для ускорения процесса импортированные данные


лучше всего сохранять по частям. Для этого весь имеющийся массив
разбивается на несколько сегментов по азимуту длиной 2000 строк, то есть
40
2000×r строк, где r - число пикселей по дальности. Подобное разбиение очень
удобно интерпретировать и соединять в дальнейшем, так как для каждого
изображения априори неизвестным является именно число пикселей по
азимуту, в то время как отсчеты по дальности принимают значения либо 10304
пикселей, либо 5152 (для одиночной и двойной поляризации соответственно).

Получаемые сегменты сырого изображения затем сохраняются в


формате файлов MATLAB. Подобная форма записи является удобной, так как
она поддерживается различным программным обеспечением, в том числе и
языком программирования Python.

Структура записи mat-файлов такова: создается папка с названием,


содержащим поляризацию снимка и время его записи с точностью до
миллисекунды (подобная форма записи оказалась необходимой при обработке
снимков, снятых "внахлест"). В этой папке создается отдельный файл
"parameters.mat", содержащий, соответственно, данные о параметрах съемки:
размерах изображения, дате съемки, времени съемки, PRF и 𝜏𝑝 :

path_par='/'+string(year)+'_'+string(day)+'_HH/'
mkdir(path_par)
savematfile(path_par+'parameters.mat', 'azimuth_pixels',
'range_pixels', , 'year', 'day', 'slow_time', 'PRF', 'taup', '-
v6')

Сами сегменты записываются в виде mat-файлов, содержащих массивы


данных с одиночной или двойной поляризацией, причем в последнем случае
сохраняются два отдельных массива.

Все эти операции проводятся в рамках одного большого цикла,


охватывающего весь массив данных. Алгоритм составлен на основе цикла
while, чтобы не определять заранее количество шагов. Последний сегмент
массива записан так, чтобы суммарный размер изображения по сегментам
сохранялся.

41
Ниже описан алгоритм импорта квадратур для снимков с одиночной
поляризацией:

[Фрагмент программного кода]

Алгоритм импорта снимков с двойной поляризацией записывается


примерно так же, но с некоторыми изменениями:

[Фрагмент программного кода]

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

if T==0 then
if R==0 then
disp("Single polarisation")

end

if R==2 then
disp("Double polarisation')

end

43
Представленный здесь алгоритм импорта данных в формат .mat имеет
несколько существенных недостатков. Основной проблемой является
ресурсоемкость программного обеспечения и, соответственно, низкая
скорость выполнения операций. Разбиение на сегменты является
вынужденной мерой, так как объем памяти, используемый программной
средой Scilab, не может превышать 2,1 гигабайт. В то же время объемы
импортируемых данных с ALOS PALSAR составляют размер больше 5
гигабайт. Также стоит отметить сильное уменьшение скорости вычислений в
зависимости от роста размера массивов.

Другой проблемой является слабая интегрируемость Scilab с другим


программным обеспечением. Формат .mat, используемый для импорта
данных, выбран в связи с тем, что другие форматы представления данных
невозможно прочитать без использования Scilab.

Следует отметить, что формат языка Scilab не предполагает


использование отдельных модулей для обработки. Все операции необходимо
совершать в одном или нескольких файлах-скриптах, которые нельзя связать
между собой. В то же время языка программирования Python позволяет
строить отдельные модули, которые потом можно использовать в общем
скрипте.

2.1.2 Импорт данных в среду языка программирования Python

Таблица 2.1 - Программы, используемые для импорта


несфокусированных изображений в среду Python

Импорт параметров prf, range_size, azimuth_size, taup, date,


slow_time_duration
Импорт сегментов import_data, data_unpack
Объединение сегментов getting_names, getting_paths, concatenate

44
Дальнейшая обработка радиолокационных изображений проводится на
базе языка программирования Python. Следовательно, импортированные с
помощью Scilab данные необходимо импортировать в среду Python. Для этого
был построен модуль, состоящий из подпрограмм, которые оперируют с
данными в формате .mat.

Следует отметить, что для работы программы необходимы следующие


импортируемые модули Python:

1) Numerical Python (numpy)


2) Scientific Python (scipy) и его расширение scipy.io
3) Matplotlib (matplotlib.pyplot)

Здесь и далее эти модули импортируются в виде

import numpy as np
import matplotlib.pyplot as plt
import scipy.io as spio

Первая программа представляет из себя, собственно, импорт данных:

def import_data(path):
import scipy.io as spio
data=spio.loadmat(path)
return data[‘HH’]

Структура формата .mat такова, что все массивы записываются как


элементы словаря, где их названия в среде Scilab играют роль ключей.
Функция, описанная выше, возвращает массив данных с одиночной
поляризацией из файла, расположенного в “path”.

Здесь важно сделать некоторое замечание. Квадратуры сырого


изображения имеют размер 1 байт на каждое значение. Естественно
предположить, что такого размера недостаточно для записи десятичного числа
с плавающей точкой. Это означает, что данные проквантованы и "запакованы"
в виде целых чисел. В таком виде их невозможно правильно обработать.
Следовательно, массив нужно «развернуть». Это делается с помощью

45
процедуры, описанной в разделе 1.1.2. Функция, выполняющее распаковку,
имеет вид:

def data_unpack(raw_data):
import numpy as np
return raw_data - np.mean(raw_data)

Подобным образом определены функции, возвращающие значения PRF,


размеров изображения, 𝜏𝑝 , длительности съемки:

def prf(par_path):
data=spio.loadmat(par_path)
return int(data['PRF'])

def range_size(raw_data):
return raw_data.shape[1]

def azimuth_size(raw_data):
return raw_data.shape[0]

def taup(par_path):
data=spio.loadmat(par_path)
return int(data['taup'])

def slow_time_duration(par_path):
data=spio.loadmat(par_path)
return int(data['slow_time'])

Более нетривиальной задачей представляется импорт даты, так как на


входе известны только год и день года. Для конвертации даты в традиционную
форму «год-месяц-день» применяется программа

[Фрагмент программного кода]

46
Эта программа реализована таким образом, чтобы учитывать, является ли год
високосным.

Приведенных выше процедур недостаточно для того, чтобы


импортировать массивы. Как было показано в предыдущем пункте, сырые
данные представляются в виде нескольких сегментов, поделенных по азимуту.
Следовательно, необходимо их объединить. Для начала нужно определить
названия файлов в папке изображения, а также общие пути к ним, чтобы
можно было к ним обращаться. Для этого задаются функции getting_names и
getting_paths:

def getting_names(folder_path)
import os
from os import listdir
return listdir(folder_path)

def getting_paths(folder_path):
import os
from os import listdir
names=listdir(folder_path)
paths=[]
for name in names:
paths.append(str(folder_path)+'/'+str(name))
return paths

Объединение файлов с сегментами сырого изображения проводится с


помощью функции concatenate_and_save:

[Фрагмент программного кода]

47
Данная программа возвращает объединенный массив данных conc,
значения PRF pulse_freq, длительность съемки atime, длительность импульса
rtime и дату съемки. Файл “parameters.mat”, в котором содержатся параметры
съемки, из списка сегментов при объединении удаляется. При этом
долонительно проводится сортировка файлов, чтобы избежать неправильной
склейки

К сожалению, специфика формата .mat не позволяет сохранить


объединенные массивы сырых данных в одном файле из-за их размера. Это
справедливо для снимков с ALOS PALSAR. В данном случае использование
сегментарной структуры представляется удобной альтернативой общему
массиву данных ввиду не слишком большой продолжительности работы
операции объединения. Вследствие этого все дальнейшие процедуры
обработки включают в себя операцию по объединению сегментов массива без
каких-либо предварительных сохранений.

2.2 Алгоритм построения карты доплеровских смещений с


изменяемыми параметрами

Данный подраздел посвящен программной реализации алгоритмов


вычисления детальных карт доплеровских смещений. Для этого описанный в
разделе 1.2.2 алгоритм вычисления доплеровского центроида используется
вместе с методом окон из раздела 1.3. Ниже представлен код программ,
реализующих отдельные процедуры этого алгоритма.

48
Также в разделе описывается программная реализация алгоритма
MLCC. Для применения этого алгоритма требуется изображение, сжатое по
дальности. Процедура сжатия по дальности находится в не рамок данной
работы, поэтому этот пункт представлен в виде некоторого предварительного
замечания к будущей работе.

2.2.1 Карты Доплера, построенные на основе алгоритма CDE

Таблица 2.2 - Программы, используемые для построения детальной


картой доплеровских смещений по методу CDE.

Вычисление доплеровского correlation_function, centroid


центроида
Построение аппроксимирующей centroid_all_lines, centroid_window
карты доплеровских смещений
Построение детальной карты centroid_range_map, doppler_map
доплеровских смещений
Изображение графиков и карт plotting, image, plotting_3d

С помощью алгоритма CDE можно произвести вычисления


доплеровского центроида в пределах [−𝑃𝑅𝐹/2, 𝑃𝑅𝐹/2]. Основным объектом
рассмотрения здесь является автокорреляционная функция 𝑟ℎ (𝑘). В языке
программирования Python она реализуется следующим образом:

def correlation_function(azimuth_line, k):


n=azimuth_line.shape[0]
acf=0
for i in range(n-1):
acf+=azimuth_line[i+k]*(azimuth_line[i].conjugate())
acf=acf/(n-1)
return [acf, k]

Как видно, данная функция производит вычисления для одной строки с


данными. При этом изменяемым параметром является k – расстояние между
умножаемыми отсчетами (в пикселях). Выходными параметрами являются,

49
собственно, автокорреляционная функция acf и шаг k. Подобный выбор
выходных данных требуется для дальнейшей обработки.

Можно сказать, что значение параметра k не представляет особого


значения в том смысле, что вычисления центроида при k>1 не проводились.
Однако добавление этого параметра может сыграть важную роль при
дальнейшем изучении проблемы.

Вычисление доплеровского центроида, согласно пункту 1.2.2,


производится с помощью функции centroid:

[Фрагмент программного кода]

Эта функция использует выходные данные, полученные с помощью


функции correlation_function, и на их основе вычисляет значение центроида
для конкретной линии. Стоит отметить, что здесь не используется специальная
библиотека для вычисления аргумента комплексных чисел. Вместо нее
используется операция возвращения значения арктангенса от отношения
мнимой части к реальной, что по определению является аргументом.

Функции, представленные выше, являются основой для построения


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

Для того, чтобы вычислить значение центроида по всем отсчетам по


дальности, применяется функция centroid_all_lines:

[Фрагмент программного кода]

50
Данная программа возвращает массив значений доплеровского
центроида для каждого значения дальности. Входными данными является
двумерный массив сырых данных, значения 𝑃𝑅𝐹 и параметра k. Для начала
создается пустой список. Затем в виде цикла производятся последовательные
вычисления доплеровского центроида для каждого отсчета по дальности.
Полученные значения последовательно добавляются в массив данных. Такая
структура работы программы обеспечивает относительно слабое влияние на
ресурсы системы, так как список увеличивается постепенно, с каждой
итерацией цикла. После прохождения всех вычислений список сохраняется в
виде стандартного массива модуля NumPy. Это делается для удобства
интерпретации данных и сохранения однородности их представления.

Однако, как было показано в подразделе 1.3, точные значения


доплеровского центроида в каждом отсчете по азимуту могут в дальнейшем
навредить процедуре фокусировки, поэтому их необходимо усреднить. Для
этого вводится специальная функция centroid_window:

[Фрагмент программного кода]

Входными данными являются массив значений частот Доплера,


полученный предыдущей функцией, число отсчетов по дальности исходного
изображения и размер окна усреднения. Эта функция вычисляет среднее
значение центроида в пределах некоторого окна. При этом шаг равен самому
окну. Подобная функция при должном выборе параметров позволяет
построить массив значений, более подходящий для дальнейших операций.

51
Полученные массивы данных можно изобразить в виде графиков
зависимости от пикселей по дальности. Этот шаг реализован следующим
образом:

def plotting(array, x, name, xlabel, ylabel):


import matplotlib.pyplot as plt
arange=np.arange(0, float(x), float(x)/array.shape[0])
fig = plt.figure()
ax2 = fig.add_subplot(1, 1, 1)
ax2.plot(arange, array, 'b')
ax2.set_title(name)
ax2.set_xlabel(xlabel)
ax2.set_ylabel(ylabel)
Здесь array – входной массив значений центроида, x – число отсчетов по
оси абсцисс, name, xlabel, ylabel – подписи к графику и осям. Примеры
графиков представлены в разделе 1.3 (рисунки 1.8, 1.9)/

Для того, чтобы построить карту смещений, необходимо описать


алгоритм хода окон по изображению с последующим их вычислением. Для
этого требуется две дополнительные функции, описывающие этот алгоритм
применительно к ходу по дальности и по азимуту соответственно. Первая
функция, centroid_range_map, описывает построение окон по дальности:

[Фрагмент программного кода]

Для этой функции необходимо задать массив значений доплеровского


центроида doppler_centroid в зависимости от дальности, размер окна
size_window и его шаг step_window. Алгоритм реализован следующим
образом: для каждого окна определяется его начальное и конечное положение.
В каждой итерации цикла эти значения изменяются в зависимости от шага.

52
Если же конечное положение находится вне значения массива (случай
последнего окна), то оно становится равно номеру последнего отсчета. Внутри
окна производится операция усреднения значений. Полученные средние
добавляются к изначально пустому списку dc_win, аналогично функции
centroid_all_lines. Итоговый список возвращают как массив формата NumPy
вместе с координатами центров окон range_pixel_samples, которые
понадобятся в дальнейшем.

Вторая функция, необходимая для построения карты смещений,


использует первую:

[Фрагмент программного кода]

53
Данная функция требует таких исходных данных, как сырое
изображение raw_data, частота повторения импульсов prf, размер окна по
азимуту wa, размер окна по дальности wr, шаг окна по азимуту sa, шаг окна по
дальности sr. Цикл реализован так, что сначала определяется положение окна
по азимуту способом, описанным для функции doppler_range_map. Затем в
этом окне проводятся вычисления доплеровского центроида для всех отсчетов
по дальности, а также «оконный» массив по дальности. Эти значения
сохраняются в большом списке doppler_map, который в качестве своих
элементов содержит списки, составленные из вычислений центроида в
отдельных окнах по азимуту. Таким образом, после прохождения всего цикла
получается массив, содержащий детальную двумерную карту доплеровских
смещений. При этом функцией возвращается целый набор данных: список,
состоящий из списков координат центров окон, карта смещений со всеми
значениями центроида по дальности в формате NumPy и ее усредненная
версия.

Эта программа также содержит команды, необходимые для наглядного


представления процесса вычисления карты. Дело в том, что на данный процесс
занимает продолжительное время, и для нормальной работы требуются
индикаторы, характеризующие ее ход. В данной версии функции информация
о процессе появляется в консоли через каждые сто пройденных окон по
азимуту.

Для представления данных внутри среды Python используется две


функции. Первая позволяет построить двумерное изображение карты
доплеровских смещений в системе координат «дальность-Допплер»:

def image(doppler_map):
fig = plt.figure()
ax6 = fig.add_subplot(1,1,1)
ax6.imshow(doppler_map, aspect='equal', vmax=250)
ax6.set_title('Doppler map')
ax6.set_xlabel('Range pixels')
ax6.set_ylabel('Azimuth pixels')
ax6.set_xticks([])
54
ax6.set_yticks([])
return True

Вторая функция необходима для получения трехмерной карты


доплеровских смещений:

def plotting_3d(array, x, name, xlabel, ylabel):


arange=np.arange(0, float(x), float(x)/array.shape[0])
fig = plt.figure()
ax2 = fig.add_subplot(1, 1, 1)
ax2.plot(arange, array, 'b')
ax2.set_title(name)
ax2.set_xlabel(xlabel)
ax2.set_ylabel(ylabel)
return True

Таким образом, с помощью приведенного выше ряда подпрограмм


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

2.2.2 Карты Доплера, построенные на основе алгоритма MLCC

Таблица 2.3 - Программы для вычисления доплеровского центроида по


методу MLCC

Извлечение обзоров range_look, range_look_all,


Вычисление доплеровского correlation_function, centroid,
центроида по методу MLCC centroid_all_lines

Для алгоритма MLCC, описанного в разделе 1.2.2, структура построения


детальной карты смещений в целом не претерпевает существенных
изменений, в отличие от способа измерения центроида. Для того чтобы
вычислить значение центроида, требуется ряд совершенно отличных функций.

Первое, что нужно сделать – определить дальностные обзоры сжатого


по дальности изображения, то есть получить два массива данных,

55
соответствующие разным частям спектра. Для этого реализована функция
range_look:

[Фрагмент программного кода]

Входными параметрами здесь является строка по дальности и параметр


i. Как видно, в зависимости от выбора i можно обрезать верхнюю или нижнюю
часть спектра. При этом обрезка состоит из обнуления соответствующих
значений спектра. Операция построена таким образом, чтобы сохранить
размер изображения при обратном преобразовании Фурье. При этом форма
спектра не изменится, так как на алгоритм быстрого преобразования Фурье,
используемый в модуле NumPy, не влияют нулевые значения. Таким образом,
на выходе данной функции получаются строки по дальности определенного
обзора: нижнего или верхнего.

Функция range_look используется в функции range_look_all для


построения полного изображения:

[Фрагмент программного кода]

Данная подпрограмма последовательно проходит все строки по


дальности и возвращает полное изображение в одном из выбранных обзоров.

Следующая подпрограмма вычисляет автокорреляционную функцию


для строки по азимуту одного из обзоров исходного изображения:

[Фрагмент программного кода]

56
Она сравнительно похожа на аналогичную подпрограмму из
предыдущего раздела с тем лишь исключением, что здесь не задается параметр
k, то есть функция всегда считается с шагом k=1.

Для вычисления доплеровского центроида в строке по азимуту


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

[Фрагмент программного кода]

В этой функции acf_look_1, acf_look_2 – верхний и нижний обзоры


изображения, f_0 – несущая частота, delta_f – сдвиг по частоте

Таким образом, можно вычислить абсолютное значение доплеровского


центроида по всем отсчетам по дальности:

[Фрагмент программного кода]

Эта функция объединяет в себе все вышеперечисленные операции и в


итоге возвращает массив значений доплеровского центроида для всех отсчетов
по дальности. Стоит отметить, что в этом алгоритме используются значение

57
сдвига частот delta_f, равное fs – частоте отсчетов. Подобный выбор позволяет
использовать в качестве обзоров верхнюю и нижнюю половины спектра.

Остальные операции по построению карты доплеровских смещений


аналогичны операциям из предыдущего раздела. Разница двух методов
заключалась только в способе вычисления центроида. Стоит отметить, что
алгоритм MLCC может проводиться только для сжатого по дальности
изображения, поэтому перед вычислением обзоров изображение необходимо
свернуть по дальности.

2.2.3 Сохранение и масштабирование данных

Таблица 2.4 - Программы для сохранения данных.

Сохранение данных save_csv


Масштабирование данных resize, dop_resize
После получения карт Доплера необходимо их сохранить. Для этого
используются файлы формата .mat. В них записывается карта доплеровских
смещений по всем отсчетам по дальности, ее оконная версия, списки со
значениями координат центров окон, размеры исходного изображения, PRF,
длительность импульса, дата съемки и длительность съемки. Это реализуется
с помощью следующего скрипта:

[Фрагмент программного кода]

Здесь doppler_centroid_cde – модуль, в котором содержатся функции,


вычисляющие карту доплеровских смещений методом CDE.

Этот скрипт можно использовать для каскадных вычислений. Для этого


нужно использовать функцию getting_paths, использовавшуюся ранее:
58
[Фрагмент программного кода]

В этой программе вычисляются карты Доплера для всех


импортированных с помощью Scilab сырых, которые расположены в dir_path.
После определения путей для всех папок с данными проводится объединение
сегментов с последующим вычислением карты Доплера. В следующем шаге
необходимо присвоить всем переменным значение 0, так как иначе памяти
интерпретатора будет недостаточно для обработки. Это возможно благодаря
динамической типизации, которой обладает язык Python.

Этот алгоритм можно дополнить еще несколькими шагами, которые


позволят построить карты доплеровских смещений различной точности:

[Фрагмент программного кода]

59
Здесь происходит несколько последовательных вычислений карт
Доплера для набора снимков с размерами окон 4096 и 1024, 256 и 64, 64 и 64,
32 и 8. При этом не возникает проблем с памятью, так как после каждого
вычисления происходит ее очистка.

Следует отметить, что формат .mat не подходит для последующего


импорта изображений в программы, необходимые для дальнейшей обработки
– SARscape и QGIS. Процедура импорта требует другого формата данных. Для
60
импорта карт в QGIS необходимо создать файл формата GEOtiff, в который
помещается карта смещений. Это реализуется с помощью следующего
скрипта:

[Фрагмент программного кода]

Данный скрипт создает изображения в формате .tiff, которые можно


импоритовать в QGIS. К сожалению, полученные изображения квантуются, и
в результате получается набор целых псевдозначений, который не несет
практически никакой информации о доплеровских смещениях. Однако
подобные файлы можно использовать при сравнении карт Доплера и
амплитуды сфокусированных в программе SARscape изображений, поэтому
этот метод имеет некоторое значение.

Для того, чтобы импортировать реальные карты доплеровских


смещений в программу SARscape, необходимо конвертировать их в формат
.csv. Файлы такого формата представляют собой наборы столбцов данных,
разделенных табуляцией. В столбцах содержится информация о координатах
центра окна и соответствующем значении доплеровского центроида. Такая
форма представления данных представляется весьма громоздкой, так как
количество строк в файле равно количеству пикселей в карте Доплера. Однако
на раннем этапе разработки подобный формат достаточен для анализа работы
программы.

Для построения csv-файлов используется функция save_csv:

def save_csv(doppler_map, output_dir, name):


name = name+'.csv'
f=open(output_dir+'/'+name, 'w')
for i in range(doppler_map.shape[0]):
61
if (i+1)% 1000 ==0:
print 'Line ', i+1
for j in range(doppler_map.shape[1]):
print >> f, '%d\t%d\t%f' % (j, i-
doppler_map.shape[0]+1, doppler_map[i,j])
f.close()
return True

Значения записываются в следующем виде: первый столбец – номер


пикселя по дальности, второй – обращенное значение номера пикселя по
азимуту, третий – соответствующее значение доплеровского центроида. Такая
форма записи необходима для того, чтобы SARscape правильно их
интерпретировал.

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


раз меньший, чем размер исходных данных. Это связано с тем, что, в любом
случае, для вычисления доплеровского центроида нужен набор данных. В
результате получаемая карта может точно описывать локальные искажение в
спектре доплеровских частот, однако размер карты не позволяет ее
«наложить» на сфокусированное изображение, чтобы провести сравнение с
локальными неоднородностями в карте и реальными объектами на
поверхности земли.

Из всего этого следует, что необходимо увеличить карты смещений, что


можно сделать с помощью операции масштабирования. Технически она
заключается в том, что пиксели «растягиваются» на определенную длину, что
позволяет увеличить суммарные размеры изображения. Если при этом учесть
положения центров окон, при которых проводились вычисления, то подобные
операции не нарушат структуру карты, так как конкретная зона вычисляемого
значения доплеровского центроида сконцентрирована вокруг координат
середины.

Для проведения операции масштабирования используется функция


resize:

62
[Фрагмент программного кода]

Входные данные – путь к mat-файлу, в котором содержатся исходная


карта Доплера, координаты центров окон и размеры исходного изображения,
необходимые для проведения операции. Подпрограмма состоит из трех
частей:

1) Определение переменных, описывающих входные данные: range_pixels,


azimuth_pixels - размеры исходного изображения; doppler_map_win –
карта доплеровских смещений; azimuth_samples, range_samples –
координаты центров окон

63
2) Определение параметров окон, по которым будет проводиться
масштабирование: sr – окно по дальности, sa – по азимуту
3) Масштабирование изображения: в основе лежит двойной цикл,
присваивающий выходному массиву данных значения исходной карты
Доплера, линейно «растянутые» по массиву. Линейность растяжения
связана с тем, что положения окон равномерно распределены по снимку.

На выходе функция возвращает масштабированную в размерах


исходного изображения карту Доплера.

Существует еще одна версия этой подпрограммы. Она отличается от


первой тем, что масштабирование идет в двух отдельных двойных циклах –
сначала по дальности, затем по азимуту:

[Фрагмент программного кода]

64
Результаты тестирования показали, что первая подпрограмма
масштабирует изображения быстрее второй. Это представляется вполне
логичным ввиду того, что в первой программе используется один двойной
цикл вместо двух во второй.

2.3 Построение опорных функций по дальности и азимуту

Таблица 2.5 - Программы построения опорных функций

Опорная функция по дальности range_chirp, zero_padding,


range_reference
Опорная функция по азимуту azimuth_chirp

В разделе 1.2.1 описана процедура построения согласованного фильтра,


необходимого для фокусировки изображения. Фильтр состоит из двух
опорных функций: по дальности и по азимуту. Эти функции строятся на
основе параметров съемки.

Для построения опорной функции по дальности применяется


подпрограмма range_chirp:

def range_chirp(bandwidth, taup, fs):

#1. Defining of axis array.


tau = np.arange(-float(taup)/2, float(taup)/2, 1.0/fs)

#2. Constructing of temporal range chirp.


K_r=bandwidth/taup
phase = 1j*math.pi*K_r*tau**2
ra_chirp_temp = np.exp(phase)
return ra_chirp_temp

Здесь входные данные – это ширина спектра сигнала bandwidth,


длительность импульса taup и частота отсчетов fs. Программа строит опорную
функцию по дальности как ЛЧМ-сигнал, зависящий от дальности.

Однако этого недостаточно для операции сжатия по дальности. Дело в


том, что размер массива опорной функции по дальности может отличаться от
числа пикселей по дальности изображения. Для того, чтобы правильно
65
совместить их, необходима дополнительная процедура, называемая
дополнением нулями. Функция, реализующая эту операцию, имеет
следующий вид:

[Фрагмент программного кода]

Здесь range_size – размер сырого изображения по дальности,


ra_chirp_temp – опорная функция, построенная с помощью предыдущей
программы. Программа добавляет нули таким образом, чтобы опорная
функция находилась точно в центре дополненной строки.

Для проведения операции быстрой свертки необходимо сделать


преобразование Фурье дополненной опорной функции с последующим
комплексным сопряжением. Это выполняется с помощью следующей
программы:

def range_reference(range_chirp):
return
np.conjugate(np.fft.fftshift(np.fft.fft(range_chirp)))

Полученные массив данных теперь можно перемножать со спектром


строки по дальности, чтобы выполнить сжатие.

Для опорной функции по азимуту процедура построения примерно такая


же. Разница заключается в параметрах, на основе которых проводится
вычисление:

def azimuth_chirp(V, lambda, prf, ta, R_0):


#1. Defining of axis array.
t = np.arange (-float(ta)/2.0, float(ta)/2.0, 1.0/float(prf))
#2. Constructing of temporal azimuth chirp.
K_a = (-2*V**2)/(Lambda*R_0)
phase = 1j*math.pi*K_a*t**2
az_chirp_temp = np.exp(phase)
return az_chirp_temp

66
Здесь ta – время синтеза апертуры, V – эффективная скорость движения
спутника, R_0 – минимальная наклонная дальность (в центре орбиты), lambda
– длина несущей волны.

Стоит отметить, что это не единственное различие между двумя


алгоритмами. Дело в том, что в опорную функцию по азимуту для улучшения
процедуры фокусировки необходимо включить данные детальной карты
доплеровских смещений, вычисленные с помощью алгоритмов,
представленных в предыдущем разделе. Подобное включение должно быть
аккуратно выполнено, чтобы учесть все локальные частотные искажения.
Таким образом, получается, что опорная функция по азимуту будет разной для
разных дальностных строк и уже сама по себе представляет массив значений
с размерами, равными размерам всего изображения. Проведение подобной
операции составляет некоторые трудности при разработке алгоритма.

Также следует учесть, что размер опорной функции по дальности


изменяется в зависимости от выбора дальности из-за зависимости времени
синтеза апертуры от дальности. Это тоже необходимо учесть при построении
опорной функции.

В данной работе не представлен метод включения детальной карты


смещений, однако предложена методика по его разработке. Алгоритм должен
строиться следующим образом:

1) Строится опорная функция по азимуту для конкретного значения по


дальности с учетом зависимости времени синтеза апертуры от
дальности;
2) Производится преобразование Фурье функции и переход в частотную
область. В этой области добавляются значения доплеровского
центроида для соответствующих пикселей. Затем выполняется
процедура комплексного сопряжения;

67
3) Полученный спектр перемножается со спектром соответствующей
дальностной строки, после этого проводится обратное
преобразование Фурье.
4) Выбирается следующая итерация и следующая строка по дальности.

Итоговая схема строения реализованных этапов алгоритма обработки


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

68
Схема 2.1 – Структура программ, реализующих этапы обработки
радиолокационных изображений.
Импорт данных
Импорт сегментов изображения и параметров
съемки, сохранение в формате .mat (Scilab)
Импорт в Python файлов с сегментами
изображения и файла с параметрами:
prf, range_size, azimuth_size, taup, date, slow_time_duration,
import_data, data_unpack

Объединение сегментов:
getting_names, getting_paths, concatenate

Вычисление детальных карт доплеровских смещений

Вычисление доплеровского центроида:


correlation_function, centroid, range_look, range_look_all
Построение детальной карты доплеровских смещений:
centroid_all_lines, centroid_window, centroid_range_map,
doppler_map
Сохранение и масштабирование данных:
save_csv, resize, dop_resize

Построение опорных функций по азимуту и по


дальности
Опорная функция по дальности:
range_chirp, zero_padding, range_reference
Опорная функция по азимуту:
azimuth_chirp

69
3 Результаты расчетов

3.1 Импортированные несфокусированные данные

В разделе 2.1. описана процедура импорта из формата CEOS


несфокусированного радиолокационного изображения на базе программной
среды Scilab и языка программирования Python. Процедура импорта состоит
из нескольких этапов: импорт параметров съемки, сохранение файла с
параметрами, импорт сегментов изображения, сохранение файлов с
сегментами. Все сохраненные файлы помещаются в папку, название которой
определяется автоматически с помощью импортированных данных о времени
съемки.

На рисунках 3.1 и 3.2 представлены исходные данные съемки в виде


последовательности байтов. Рисунок 3.1 демонстрирует начальные данные,
включающие в себя параметры съемки, а также множество технических
характеристик, связанных с форматом представления. На рисунке 3.2
изображены значения квадратур для первой строки изображения. Как видно,
эти значения целочисленные, что уменьшает размер файлов, их содержащих.

Рисунок 3.1 - Пример "шапки" файла с сырыми данными

70
Рисунок 3.2 - Пример записи квадратур в сыром файле

На рисунке 3.3 представлен пример папки изображения,


импортированного с помощью описанного ранее кода. Как видно, все
сегменты пронумерованы в порядке их вычисления для того, чтобы в
дальнейшем правильно их соединить.

Рисунок 3.3 - Папка изображения, в которой расположены


импортированные сегменты и файл «parameter.mat»

71
Структура mat-файлов представлена на рисунках ниже. Рисунок 3.4
изображает mat-файл, соответствующий некоторому сегменту изображения.
Как видно, массивы данных с разной поляризацией записываются в разные
матрицы с соответствующими названиями - «HH» или «HV». Структура
самих матриц представлена на рисунке 3.5. Здесь квадратуры еще не
распакованы и, следовательно, представлены в виде массива целых чисел.

Рисунок 3.4 - Структура файла сегмента изображения с двойной


поляризацией.

Рисунок 3.5 - Формат записи матрицы квадратур.

На рисунке 3.6 представлена структура файла «parameters.mat». Его


формат одинаков для всех изображений, что необходимо при дальнейшем
импорте.

72
Рисунок 3.6 - Структура файла «parameters.mat»

Следующий этап – импорт файлов в Python и их объединение. Сохранить


общий файл не удается из-за ограничений, наложенных на формат .mat,
поэтому файлы соединяются непосредственно перед вычислениями
доплеровских карт. После объединения проводится распаковка данных, в
результате которой получается массив реальных данных. Следует отметить,
что среднее значение по всему массиву первоначальных данных хорошо
коррелируется со стандартным значением, задаваемым в файлах
спецификаций. На рисунке 3.7 представлен «распакованный» массив
квадратур в виде чисел с плавающей точкой.

Рисунок 3.7 - Массив «распакованных» квадратур


73
3.2 Карты доплеровских смещений различной точности

В данном подразделе представлены результаты обработки сырых


данных на предмет получения детальных карт доплеровских смещений.
Алгоритм используется для обработки снимков разных областей в разное
время. Обсуждается необходимая детализация карты смещений, карты
сравниваются с амплитудными изображениями, полученными с помощью
программы ENVI SARscape, локальные искажения, вносимые сезонными
изменениями и степень достоверности полученных карт смещений частот.

3.2.1 Представление данных в среде Python

Существует несколько инструментов, позволяющих построить


двумерные графики на основе массива данных. Это можно применить и к
картам доплеровских смещений. Представление карт в виде изображений
представляется весьма удобным и наглядным для последующего анализа и
экспорта.

Карты смещений строятся с помощью программ, описанных в


предыдущей главе. Программа imaging модуля doppler_centroid_cde строит
двумерные изображения карт. На рисунках 3.8.а, 3.8.б, 3.8.в представлены
примеры доплеровских карт смещений, полученные на основе снимков,
сделанных в Заполярье в 2007-2009 годах. Эти карты интересны тем, что
используемые снимки были сделаны с одного ракурса, но в разное время:
первый – 15 января 2007 года, второй – 2 марта 2007 года, третий – 4 марта
2008 года. Подобный выбор дат позволяет проанализировать, как влияет смена
времени года на значения доплеровских частот, а также оценить, как
изменяются карты в течение продолжительных промежутков времени.

Как видно из рисунков, общая структура карт доплеровских смещений


для изображений одной местности в целом остается неизменной с течением
времени. Стоит отметить, что подобная форма представления данных является
не вполне точной, так как при формировании карт для каждого массива
74
данных используются разные промежутки для квантования. Это приводит к
тому, что при любом выборе цветовой схемы изображения возможны
неточности при его отображении. Эти проблемы можно решить, используя
стороннее программное обеспечение, например, открытую ГИС QGIS (раздел
3.2.2).

Подобных проблем решена программа plotting_3d, изображающая


трехмерные графики карт доплеровских смещений. Один из таких графиков
представлен на рисунке 3.9. С помощью этого графика точно представлены
данные о доплеровских частотах, однако слабая информативность и
наглядность подобного представления данных не позволяет провести
должный анализ.

Рисунок 3.8 - Карты доплеровских смещений, полученные для снимков


с одного ракурса. Время съемки: а)15 января 2007 года; б) 2 марта 2007 года;
в) 4 марта 2008 года

75
Рисунок 3.9. 3d-график карты доплеровских смещений, полученный
для снимка от 15 января 2007 года, сделанного в районе Заполярья

3.2.2 Экспорт данных

Полученные с помощью описанных в пункте 2.2.1. функций карты


доплеровских смещений необходимо экспортировать таким образом, чтобы
можно было сравнить их с амплитудными изображениями данных,
сфокусированных с помощью другого программного обеспечения, например,
Envi SARscape. В этом случае удобным решением представляется
использование свободной кроссплатформенной ГИС QGIS.

Для того, чтобы экспортировать карты доплеровских смещений в QGIS


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

1) Масштабирование доплеровских карт до размеров исходного


изображения;
2) Обрезка изображения таким образом, чтобы по дальности оно
совпадало с амплитудным изображением, получаемым в SARscape;
3) Сохранение данных в формате .tiff

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

Примеры полученных карт Доплера приведены ниже. На рисунках 3.10


приведены сегменты карт Доплера разной точности, полученные на основе
снимка, сделанного в районе Карских ворот 16 апреля 2011 года. Первое
изображение относится к карте с размером окна 4096*1024 пикселей, второе -
256*64, третье – 64*64 и четвертое – 32*8. Необходимость построения такого
количества карт смещений заключается в том, что для дальнейшей работы
необходимо определить, какая точность необходима для оптимального
анализа.

Стоит отметить, что на всех картах сохраняется общая форма структуры


массива доплеровских частот. Это означает, что использованный алгоритм не
влияет на само изображение, только на точность карты. Однако здесь нужно
сделать следующее замечание. Если детально рассмотреть карты смещений,
то можно заключить, что наиболее точными являются вторая и третья, так как
в них наиболее четко сохраняется общая структура локальных
неоднородностей доплеровских частот. При этом четвертая карта с
наименьшим размером окон недостаточно точная, так как она содержит в себе
большой шумовой фон. Следовательно, при процедуре фокусировки
изображения и построения опорных функции по азимуту эти шумы будут
включаться в них, что приведет к ухудшению качества процедуры. Вполне
возможно, что для фокусировки изображения будет достаточно карт типа
первой, то есть с достаточно большим размером окна вычисления.

Подобные выводы можно заключить, рассмотрев набор подобных карт


для другого сегмента снимка, которые представлены на рисунках 3.11.

77
После экспорта масштабированных карт Доплера в QGIS можно
рассмотреть их вместе с амплитудными изображениями, полученными с
помощью программы SARscape. Для большей наглядности карта
накладывается на амплитуду. На рисунках 3.12 и 3.13 представлены карты
доплеровских смещений вместе с соответствующими амплитудными
изображениями, наложенные друг на друга. Эти изображения соответствуют
серии снимков, сделанных в районе Карских ворот 11 апреля 2011 года.

Съемка проводилась в один и тот же день. Данные снимки получены с


некоторым наложением друг на друга, поэтому в соответствующих смежных
областях предполагается, что карты смещений должны быть идентичны. На
рисунках 3.14 представлены сегменты карт смещений, смежные для разных
снимков.

78
Рисунок 3.10 - Сегменты карт доплеровских смещений, полученных с
разным размером плавающего окна: а – 4096*1024, б - 256*64, в – 64*64, г –
32*8 пикселей.

79
Рисунок 3.11 – Сегменты карт доплеровских смещений с аналогичными
размерами окон для другой области.

80
Рисунок 3.12 - Снимки, сделанные 11 апреля 2011 года в районе
Карских ворот: а – первый, б - второй

81
Рисунок 3.13 - Снимки, сделанные 11 апреля 2011 года в районе
Карских ворот: а – третий, б – четвертый.

82
Рисунок 3.14 - Смежные сегменты карт смещений для двух
последовательных снимков: а- первого, б - второго

Видно, что полученные данные имеют общую структуру, жестко


связанную с амплитудными изображениями, что подтверждает правильность
вычислений.

Стоит отметить, что при анализе наложенных карт наблюдается


следующая картина: значения доплеровских частот в низинах рек принимают
отрицательные значения, но с обязательным резким подъемом в
положительную область на границах. Подобные перепады, возможно, связаны

83
с движением водных масс и, следовательно, нестабильной топографией
берегов рек.

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


собой дополнительный интерес. Дело в том, что с помощью таких карт
становится возможным анализ ледовой обстановки и движения водных масс
интересующих областях, в первую очередь в северных районах России.
Вычисление доплеровских частот позволяет оценить скорости движения тех
или иных областей съемки, если они существенны. Это можно применить к
снимкам, которые были представлены выше.

3.2.3 Геокодирование данных

Для дальнейшей обработки карт смещений необходимо связать их с


реальным положением на поверхности земли, то есть геокодировать. Это
возможно сделать, используя данные орбиты движения спутника, а также
параметры съемки. Проблема геокодирования карт доплеровских смещений
лежит вне рамок этой работы, однако она может быть решена на базе
программного обеспечения ENVI SARscape. Основная идея заключается в
замене файла амплитудного изображения, полученного на базе этой
программы, на карту доплеровских смещений. Это позволит провести
геокодирование карты без написания дополнительных программ. Важность
этой процедуры заключается в том, что теперь станет возможным анализ карт
смещений, полученных с разных ракурсов.

Ниже представлены результаты геокодирования карт доплеровских


смещений для Заполярья. Карты накладываются либо на геокодированное
амплитудное изображение (рисунки 3.15 - 3.17), либо на цифровую модель
местности (рисунки 3.18 - 3.20), на основе которой осуществляется
геокодирование. Как видно из этих рисунков, в результате проведенных
операций карты смещений накладываются относительно точно как на
амплитудное изображение, так и на цифровую модель местности. В частности,

84
это подтверждается сравнением исходных масштабированных карт Доплера с
исходными изображениями. Как видно, и здесь общая структура карт
сохраняется от снимка к снимку. Стоит отметить, что экспорт данных в
SARscape позволяет получить исходные массивы данных без какого-либо их
квантования. Теперь можно провести более детальный анализ полученных
карт. На его основании можно заметить, что в зависимости от времени съемки
значения доплеровских частот смещаются в положительную либо
отрицательную область. При этом локальные перепады частот становятся
более резкими.

Представленные ниже карты относятся к одной области съемки, которая


была проведена с разных ракурсов. Рисунки 3.15 изображают карты
смещений, полученные с условно первого ракурса, рисунки 3.16 - второго,
рисунки 3.17 - третьего.

Рисунок 3.15. Геокодированные карты доплеровских смещений,


полученные из снимков, сделанных в Заполярье с первого ракурса: а – 15
января 2007 года, б – 2 марта 2007 года, в – 4 марта 2008 года.
85
Рисунок 3.16 - Геокодированные карты доплеровских смещений,
полученные из снимков, сделанных в Заполярье со второго ракурса: а – 18
мая 2008 года, б – 3 июля 2008 года.

Рисунок 3.17 - Геокодированные карты доплеровских смещений,


полученные из снимков, сделанных в Заполярье с третьего ракурса: а –19
июня 2008 года, б – 4 августа 2008 года.

Важно отметить, что структура полученных с разных ракурсов карт в


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

86
Ниже представлены изображения с наложенными на цифровую модель
рельефа картами смещений частоты Доплера, полученными с тех же ракурсов
и расположенные в том же порядке.

Рисунок 3.18 - Геокодированные карты доплеровских смещений,


наложенные на цифровую модель местности и полученные из снимков,
сделанных в Заполярье с первого ракурса: а – 15 января 2007 года, б – 2
марта 2007 года, в – 4 марта 2008 года.

Рисунок 3.19 - Геокодированные карты доплеровских смещений,


наложенные на цифровую модель рельефа и полученные из снимков,
сделанных в Заполярье со второго ракурса: а – 18 мая 2008 года, б – 3 июля
2008 года.
87
Рисунок 3.20 - Геокодированные карты доплеровских смещений,
наложенные на цифровую модель местности и полученные из снимков,
сделанных в Заполярье с третьего ракурса: а –19 июня 2008 года, б – 4
августа 2008 года.

При наложении самих карт Доплера с разных ракурсов наблюдается


весьма точное соответствие между ними. Это показано на рисунках 3.21.
Стоит отметить, что и здесь наблюдаются локальные несоответствия между
картами. Это обусловлено существенно разницей во времени между съемками.
Подобные искажения, как это было предположено выше, могут зависеть от
атмосферных аномалий, вызывающих изменение спектра распространяемого
сигнала.

Стоит отметить, что при сравнении снимков наблюдается следующая


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

88
Рисунок 3.21. Наложенные друг на друга карты доплеровских
смещений с первого и второго ракурсов: а – 15.01.2007 и 18.05.2008; б –
02.03.2007 и 18.05.2008

Однако это не единственная причина, по которой возможны подобные


изменения. На рисунках 3.22 представлены сегменты карт доплеровских
смещений, полученные с одного ракурса 18 мая 2008 года и 3 июля 2008 года
соответственно. Как видно из амплитудных изображений, в данной области
наблюдался существенный приток воды. Это привело к тому, что
относительно гладкая область доплеровских смещений изменилась. При этом
наблюдается сохранение общей структуры карты в целом. Это означает, что
сезонные изменения подстилающей поверхности, связанные, например, с
движением и превращением воды, отражаются на карте смещений частот.
89
Возможно, что подобные сдвиги в карте частот возникают вследствие наличия
определенной скорости движения у отдельных участков области снимка
(например, поверхности воды). Для детального анализа связи между
доплеровскими частотами и топографией поверхности необходимы
дополнительные данные о географии областей, геомагнитной обстановке и так
далее.

Нужно отметить, что карты смещений были получены непосредственно


из сырых данных. Как было показано в разделе 1, отклик точечного источника
в сырых данных распределяется не значительном диапазоне соседних
отсчетов, связанном с временем синтеза апертуры. Соответствующие
значения доплеровского центроида, приводимы в картах, также распределены
по снимку. Ситуация немного сглаживается тем, что для их построения
используются плавающие окна, а не отдельно взятые отсчеты, однако этого
мало, чтобы «сфокусировать» сами карты. Большей точности в построении
детальных карт можно достичь, построив их для сжатых по дальности
изображений. Можно попытаться реализовать алгоритм вычисления карт
Доплера для полностью сфокусированного изображения, импульсные отклики
точечных источников которого целиком содержатся в соответствующих
отсчетах. Очевидно, что для этого необходимо реализовать весь алгоритм
фокусировки. Поэтому карты смещений, полученные из сырых данных, все
равно необходимо построить. Однако, несмотря на то, что сигнал,
поступающий от отсчетов, в несфокусированном изображении, распределен в
пространстве, видно, что получаемые карты смещений связаны с локальной
топографией снимка. Построение карт смещений на основе сфокусированных
изображений может помочь определить эту связь.

Таким образом, полученные результаты позволяют утверждать, что


детальные карты доплеровских смещений несут в себе дополнительную
информацию о поверхности. Это означает, что подобные карты могут быть
применены не только в процедуре фокусировки, но и в других областях ДЗЗ.
90
Рисунок 3.22 - Изменения в карте доплеровских смещений в
зависимости от времени съемки: а – 18 мая 2008 года, б – 3 июля 2007 года.

91
ЗАКЛЮЧЕНИЕ

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


исследования, были получены следующие результаты.

Были изучены основные технические особенности алгоритма


фокусировки, учет которых необходим для последующей реализации всего
алгоритма. Учтены вопросы, касающиеся формата приводимых данных,
параметров, необходимых для обработки радиолокационных изображений,
построения опорных функций по дальности и по азимуту, реализации
алгоритма коррекции миграции по дальности и быстрой свертки с точки
зрения вычислительных процессов, проводимых с помощью программного
обеспечения.

Дальностно-доплеровский алгоритм фокусировки радиолокационных


изображений обладает некоторыми особенностями, которые связаны с его
структурой. Ввиду того, что алгоритм проводится в частотной области,
ошибки при построении аппроксимирующей функции доплеровского
центроида могут приводить к ухудшению качества конечного продукта.
Детальная карта доплеровских частот позволит избежать проблем усреднения
локальных изменений доплеровского центроида. Внедрение карты в процесс
фокусировки в качестве корректировочного массива частот для опорной
функции по азимуту приведет к улучшению информативности и
достоверности изображения.

В работе приведена программная реализация процедуры импорта


несфокусированного изображения формата CEOS, полученного со спутников
серии ALOS. Представленные программы позволяют интерпретировать
данные во внутренний формат языка программирования Python, на основе
которого реализуются следующие этапы разработки. В работе содержатся
соответствующие программы для импорта изображения в квадратурной
записи и параметров съемки, необходимых для дальнейшей работы.

92
Был разработан алгоритм построения детальных карт доплеровских
смещений. Он основан на методе плавающего окна, реализация которого
является оригинальным результатом данной работы. Набор подпрограмм,
необходимых для построения карты, решает следующие задачи: вычисление
доплеровского центроида с помощью двух методов - CDE и MLCC,
построение двумерной карты смещений на основе описанных методов,
сохранение и масштабирование данных для последующего экспорта в
стороннее программное обеспечение. Подобные процедуры необходимы для
последующего сравнения полученных результатов с радиолокационными
изображениями, полученными с помощью ENVI SARscape.

В работе приводятся примеры вычислений карт доплеровских смещений


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

1) В карте смещений существуют постоянные структуры, зависящие от


места съемки, но не от времени. Эти структуры представляются в
виде локальных максимумов и минимумов значений доплеровского
центроида для определенных областей на снимке;
2) Существует определенная связь между картами частот, полученных
на основании изображений одной области с разных ракурсов.
Наблюдается некоторая корреляция между картами, связанная со
взаимным расположением спутников в моменты съемки;
3) Обнаружены некоторые зависимости карты смещений от топографии
поверхности. В частности, это связано с движением водных масс. На
некоторых снимках, сделанных в момент половодья, наблюдается
качественное изменение карты смещений с сохранением локальных
артефактов вне изменившейся области.

Таким образом, реализованная технология построения детальных карт


может быть реализована как промежуточный этап обработки

93
несфокусированных изображений и как дополнительный инструмент анализа
данных дистанционного зондирования.

Дальнейшая работа автора может быть направлена на решение


следующих задач:

1) Полная реализация алгоритма фокусировки радиолокационного


изображения на базе языка программирования Python;
2) Исследование зависимости карты доплеровских смещений от
атмосферных изображений и топографии изучаемой поверхности;
3) Оптимизация существующих алгоритмов, создание единого
программного продукта, нацеленного на обработку
радиолокационных изображений.

94
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. ERSDAC PALSAR CEOS Format Specification [учеб.-метод. пособие]. –


Tokyo, 2009. – 217 с.
2. Akliouat H. Synthetic aperture radar image formation process: application to a
region of North Algeria. // H. Akliouat, Y. Smara, L. Bouchemakh. –
Laboratory of Image Processing and Radiation, University of Sciences and
Technology Houari Boumediene. – 6 p.
3. Верба В. С. Радиолокационные системы землеобзора космического
базирования. // В. С. Верба [и др.]. – М.: Радиотехника, 2010 - 676 с.
4. Richards M. A. Fundamentals of Radar Signal Processing. // M. A. Richards. –
New York: McGraw-Hill, 2005. – 513 c.
5. SAR Processing [учеб.-метод. пособие]. – Gűmligen, Switzerland: Gamma
Remote Sensing, 2008. – 19 с.
6. Sew B.C. Modified multilook cross correlation (MLCC) algorithm for Doppler
centroid estimation in synthetic aperture radar signal processing. //B.C. Sew [и
др.]. – Progress in Electromagnetic Research C, 2011. – Vol. 20. – P. 215-225.
7. Weidong Yu. Comparison of Doppler Centroid Estimation Methods in SAR. //
Weidong Yu, Zhaoda Zhu. – Dept. of Electronic Eng. Nanjing Univ. of
Aeronautics and Astronautics. – 4 p.
8. Madsen S. Estimating the Doppler centroid of SAR data. // S. N. Madsen. -
IEEE Transactions on Aerospace and Electronic Systems, 1989. – vol. 25(2). –
P. 134-140.
9. Shu Li. Improved Doppler Centroid Extimation. Algorithms for Satellite SAR
Data. / Shu Li. – The university of British Columbia, 2005. – 127 с.
10.Wong F. A Combined SAR Doppler Centroid Estimation Scheme Based upon
Signal Phase. // F. Wong, I. G. Cummng. - IEEE Transactions on Geoscience
and Remote Sensing, 1996. – Vol. 34, № 3. – 12 p.
11.Wang B.C. Digital signal processing techniques and applications in radar image
processing. // B.C. Wang. – Wiley, 2008. – 338 p.

95
Приложение А Листинг программы импорта на базе ПО Scilab

stacksize('max')
clear
azsize=2000
name='PASL10C0807051439060908070035'
path='/media/iomega_nas_3/SAR_Focusing/raw/chayanda/DPRP20090805
0045_01'
fn = path+'/'+string(name)+'/'+ string(name)+'.raw'
fd=mopen(fn, 'rb')

[Фрагмент программного кода]

96
97
98
99
Приложение Б Листинг модуля import_rawdata_mat

import matplotlib.pyplot as plt


import numpy as np
import scipy.io as spio
from matplotlib import cm
import os
from os import listdir

"""

MATLAB file is read as dictionary with keys.


It is constructed from CEOS format Data File using program in
Scilab.
Keys in .mat parameter file:
"raw" - I/Q data array
"PRF" - PRF of SAR
"azsize" - number of azimuth lines
"rasize" - number of range samples
"azstart" - starting azimuth line
"azend" - ending azimuth line
"year" - year of acquisition
"day"- day of acquisition as day of the year
"taup" - chirp duration
"slow_time" - duration of acquisition of data (not aperture
time)
Key in .mat raw data file:
Any type of polarisation (single or double): HH, HV, VH, VV,
HH+HV, VH+VV

"""

def import_data(path):
"""Import raw I/Q image from .mat file "as is".
Data is unpacked from original CEOS format file by Scilab.
DC biases has been already calculated."""
data=spio.loadmat(path)
return data['HH']
def import_raw_data(path):
data=spio.loadmat(path)
if data['HH'] and data['HV']:
return {'HH':data['HH'], 'HV': data['HV']}
if data['HH']:
return {'HH': data['HH']}

def getting_paths(folder_path):
"""
Program forms list with paths of files containing SAR image.
"""
names=listdir(folder_path)
paths=[]
for name in names:
100
paths.append(str(folder_path)+'/'+str(name))
return paths

[Фрагмент программного кода]

101
102
103
Приложение В Листинг модуля doppler_centroid_cde.

"""

This module is used for calculating doppler centroid using


correlation doppler estimator (CDE).
The method is based on paper "Estimating the Doppler centroid of
SAR data" published by Madsen(1989).

"""
import math
import import_rawdata_mat as raw
import numpy as np
import matplotlib.pyplot as plt
import scipy.io as spio

def correlation_function(azimuth_line, k):


"""Calculating r(k) - autocorrelation function (ACF) of
azimuth line"""
n=azimuth_line.shape[0]
acf=0
for i in range(n-1):
acf+=azimuth_line[i+k]*(azimuth_line[i].conjugate())
return [acf/(n-1), k]

[Фрагмент программного кода]

104
105
106
107
108
Приложение Г Скрипт программы

import import_rawdata_mat as raw


import scipy.io as spio
path='/home/user/data_scilab/Real_files/data/'
import_files(path, '/media/iomega_nas_3/SAR_Focusing/Python/')
paths=raw.getting_paths(path)
raw_data=raw.concatenating_matrices(paths,
'/media/user/Femm/Programming/raw_data_all' )
path='/media/user/Femm/Programming/raw_data_all.mat'
raw_data=raw.import_data(path)

#%%
import import_rawdata_mat as raw
import doppler_centroid_cde as cde
import scipy.io as spio
#raw_data=0
#samples, doppler_map, doppler_map_win=0, 0, 0
#raw_data, prf, aperture_time, taup, date =
raw.concatenate('/media/iomega_nas_3/SAR_Focusing/scilab_import/
zapolyarie/2009_218_HH_packed_2')

#samples, doppler_map, doppler_map_win=cde.doppler_map(raw_data,


prf, 64, 64, 8, 8)
spio.savemat('/media/iomega_nas_3/SAR_Focusing/doppler_map/zapol
yarie/64_64_8_8/mat/doppler_map_'+str(date)+'_64_64_8_8_2',
{'azimuth_samples':np.asarray(samples[0]),
'range_samples':np.asarray(samples[1]), 'prf':prf,
'range_pixels':raw_data.shape[1],
'azimuth_pixels':raw_data.shape[0], 'taup':taup,
'doppler_map':doppler_map, 'doppler_map_win':doppler_map_win,
'date': date, 'azimuth_time':aperture_time}, True, '5')
cde.image(doppler_map_win)
#%%
import range_chirp as rg
fs=32*10**6
bandwidth=14*10**6
f=1270*10**6
range_chirp = rg.range_chirp(range_size, bandwidth, taup, fs)

#1. Zero-padding before FFT


range_reference_zeropad=rg.zero_padding(range_chirp,range_size)
range_reference=rg.range_reference(range_reference_zeropad)
rg.plotting(range_reference, fs, 'Zeropad before FFT',
'Frequency axis [Hz]', 'Amplitude')
#2. Zero-padding after FFT
range_reference=rg.range_reference(range_chirp)
range_reference_zeropad=rg.zero_padding(range_reference,range_si
ze)
rg.plotting(range_reference_zeropad, fs, 'Zeropad after FFT',
'Frequeny axis [Hz]', 'Amplitude')

109
#%%
import doppler_centroid_az_psd as dcpsd

#%%
import doppler_centroid_cde as cde
import scipy.io as spio
import numpy as np
#raw_data, prf, aperture_time, taup, date =
raw.concatenate('/media/iomega_nas_3/SAR_Focusing/scilab_import/
new/2007_195_62250682_HH_HV_packed')
#dcen_cde=cde.centroid_all_lines(raw_data, 1, prf)
dc_win_cde=cde.centroid_window(dcen_cde, raw_data.shape[1], 10)
cde.plotting(dcen_cde, dcen_cde.shape[0], "DC using CDE, "+
str(raw_data.shape[0]) + " azimuth samples", "range pixels",
"Frequency")
cde.plotting(dc_win_cde, dc_win_cde.shape[0], "DC windowed using
CDE, " + str(raw_data.shape[0]) + " azimuth samples", "range
pixels", "Frequency")
'''samples, doppler_map,
doppler_map_win=cde.doppler_map(raw_data, prf, 64, 64, 8, 8)
spio.savemat('/media/iomega_nas_3/SAR_Focusing/doppler_map/64_64
_8_8/karsk/doppler_map_'+str(date)+'_64_64_8_8',
{'azimuth_samples':np.asarray(samples[0]),
'range_samples':np.asarray(samples[1]), 'prf':prf,
'range_pixels':raw_data.shape[1],
'azimuth_pixels':raw_data.shape[0], 'taup':taup,
'doppler_map':doppler_map, 'doppler_map_win':doppler_map_win,
'date': date, 'azimuth_time':aperture_time}, True, '5')
cde.image(doppler_map_win)
'''
#%%
import scipy.io as spio
import doppler_centroid_cde as cde
data =
spio.loadmat('/media/iomega_nas_3/SAR_Focusing/doppler_map/64_64
_8_8/ber/doppler_map_2007_06_19_64_64_8_8.mat')
#%%

import doppler_centroid_cde as cde


import scipy.io as spio
#cde.space_imaging(doppler_map_win, samples)
#cde.image(doppler_map_win)
res=0
path='/media/iomega_nas_3/SAR_Focusing/doppler_map/zapolyarie/64
_64_8_8/doppler_map_2008_06_19_64_64_8_8.mat'
#data=spio.loadmat(path)
#res= data['doppler_map_win']
res=cde.resize(path)
range_pwr=9440
if res.shape[1]==5152:
range_pwr=4720
if res.shape[1]==10304:

110
range_pwr=9440
res=cde.cut_as_pwr(res, res.shape[0], range_pwr)
res1=np.zeros((res.shape[0],res.shape[1]))
for i in range(1300,res.shape[0]):
for j in range(250,res.shape[1]):
import scipy.misc
cde.save_csv(res, path, 'test3')
#%%
import doppler_centroid_cde as cde
import scipy.misc
import os
path ='/64_64_8_8/mat'
map_paths=raw.getting_paths(path)
map_names=raw.getting_names(path)
print map_names
try:
os.mkdir(path[:-4]+'/csv')
os.mkdir(path[:-4]+'/tiff')
except OSError:
pass

for i in range(len(map_paths)):
res=0
doppler_map=0
res=cde.resize(map_paths[i])
if res.shape[1]==5152:
range_pwr=4720
if res.shape[1]==10304:
range_pwr=9440
res=cde.cut_as_pwr(res, res.shape[0], range_pwr)
data=spio.loadmat(map_paths[i])
doppler_map=data['doppler_map_win']
name=str((map_names[i])[:-4])+ '_'+str(doppler_map.shape[0])
+'_'+str(doppler_map.shape[1])+'_rev'
print 'Saving '+ name +'.tiff'
scipy.misc.toimage(res, cmin = -300.0, cmax =
300.0).save((path[:-4] +'/tiff/'+name+'.tiff'))
print 'Writing ' + name +'.csv'
cde.save_csv(doppler_map, path[:-4]+'/csv', name)
print ' '

import import_rawdata_mat as raw


import doppler_centroid_cde as cde
import scipy.io as spio
import matplotlib.pyplot as plt

map_paths=raw.getting_paths('/media/iomega_nas_3/SAR_focusing/do
ppler_map')
map_names=raw.getting_names('/media/iomega_nas_3/SAR_focusing/do
ppler_map')
for i in range(len(map_paths)):
data=spio.loadmat(map_paths[i])

111
doppler_map=data['doppler_map_win']
cde.image(doppler_map)
plt.savefig('/media/iomega_nas_3/SAR_focusing/images/'+str(map_n
ames[i])+'.svg', format='svg', dpi=300)
#%%
import import_rawdata_mat as raw
import doppler_centroid_cde as cde
import scipy.io as spio

paths_dir=raw.getting_paths('/SAR_focusing/scilab_import')
for path in paths_dir:
raw_data, prf, aperture_time, taup, date =
raw.concatenate(path)
samples, doppler_map,
doppler_map_win=cde.doppler_map(raw_data, prf, 64, 64, 8, 8)
spio.savemat('/media/iomega_nas_3/SAR_focusing/doppler_map/
64_64_8_8/doppler_map_'+str(date)+'_64_64_8_8_1',
{'azimuth_samples':np.asarray(samples[0]),
'range_samples':np.asarray(samples[1]), 'prf':prf,
'range_pixels':raw_data.shape[1],
'azimuth_pixels':raw_data.shape[0], 'taup':taup,
'doppler_map':doppler_map, 'doppler_map_win':doppler_map_win,
'date': date, 'azimuth_time':aperture_time}, True, '5')
paths_dir=raw.getting_paths('SAR_focusing/scilab_import')
print paths_dir
for path in paths_dir:
raw_data=0
samples, doppler_map, doppler_map_win=0, 0, 0
raw_data, prf, aperture_time, taup, date =
raw.concatenate(path)
samples, doppler_map, doppler_map_win =
cde.doppler_map(raw_data, prf, 32, 8, 4, 1)
spio.savemat('/32_8_4_1/doppler_map_'+str(date)+
'_32_8_4_1', {'azimuth_samples':np.asarray(samples[0]),
'range_samples':np.asarray(samples[1]), 'prf':prf,
'range_pixels':raw_data.shape[1],
'azimuth_pixels':raw_data.shape[0], 'taup':taup,
'doppler_map':doppler_map, 'doppler_map_win':doppler_map_win,
'date': date, 'azimuth_time':aperture_time}, True, '5')

112

Вам также может понравиться