Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Детектирование синхроимпульсов в канале APT




       Пусть мы имеем АМ модулированный сигнал. Поднесущая частота (в данном случае 2400Гц) амплитудно модулирована информационным сообщением (само изображение, данные телеметрии, синхроимпульсы и др.). Для того, чтобы получить передаваемое по каналу связи изображение необходимо детектировать (определить положение) синхроимпульсы, так как именно с них начинается каждая строка изображения (рис. 6). Вначале необходимо демодулировать исходный сигнал – “убрать” поднесущую частоту, выделить только информационный сигнал. На рис. 6 приведена схема простейшего амплитудного детектора

 

Рисунок 6 – Простейший амплитудный детектор

 

       Следующий программный код реализует ФНЧ в MatLab в виде эллиптического фильтра (параметры: порядок – 9, коэффициент пульсаций в области пропускания – 1 дБ, коэффициент затухания в области подавления – 50 дБ, частота среза - 2300/(Fs/2) ). Частота среза может принимать значения от 0 до 1 (1 – частота, равная половине частоты дискретизации). Функция freqz – здесь не обязательна, она позволяет посмотреть АЧХ и ФЧХ передаточной характеристики фильтра.

 

% Рассчитываем эллиптический фильтр

[B_coef, A_coef] = ellip(9, 1, 50, 2300/(Fs/2) ); 

% Строим АЧХ и ФЧХ фильтра (необязательно)

Figure

Freqz(B_coef,A_coef,128,Fs)

   % Фильтруем сигнал S_test

S_test = filter(B_coef,A_coef,S_test); 

 

Сам процесс детектирования заключается в вычислении некоего критерия сходства между фрагментами принятого сигнала (обозначим ПС) с известными смоделированными “шаблонами” синхроимпульсов ШСИ (моделирование синхроимпульсов было рассмотрено в предыдущей лабораторной работе). При этом “шаблон” ШСИ последовательно сравнивается со всеми возможными фрагментами ПС, равными ему по размеру. В качестве критерия сходства будем использовать нормированный корреляционный алгоритм (normalized cross correlation - NCC). Другие названия – линейный коэффициент корреляции или коэффициент корреляции Пирсона.

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

 

,                         (2)

 

где  и  соответственно отсчеты с индексами  и  центрированных и нормированных фрагментов ШСИ и ПС, т.е.

 

,                        (2)

 

    - мат. ожидание и дисперсия ШСИ;                                                 

    - мат. ожидание и дисперсия фрагмента ПС, совмещаемого с ШСИ (зависит от сдвига ).    

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

 

Формирование изображения

Пусть у нас имеется массив индексов положения синхроимпульсов. Необходимо получить передаваемое изображение. Может случиться, что будут детектированы ложные импульсы, а истинные могут быть пропущены. Истинность обнаружения может быть проверена из условия, что синхроимпульсы следуют с интервалом 0.5с. В данной учебной работе ограничимся тем, что исключим найденные индексы, если расстояние между ними и предыдущими индексами существенно меньше 0.5 с (1 сек – 11025 отсчетов). Естественно такой подход далек от совершенства, например, никак не решается проблема пропуска истинных синхроимпульсов. Для улучшения качества декодирования нужно использовать более сложные алгоритмы

Далее приведен программный код, где исходные параметры (которые должны быть предварительно рассчитаны): Async_detection – массив значений рассчитанной нормированной корреляционной функции после сравнения с порогом обнаружения. Элементы, которые оказались больше порога – равны 1, а остальные - 0. Порог обнаружения можно определить экспериментально (если увеличить масштаб нормированной корреляционной функции –  хорошо видны отсчеты, соответствующие синхроимпульсам в принятом сигнале);len_sync– количество отсчетов в “шаблоне” синхроимпульсов (syncA или syncB).

 

index_Async = find(Async_detection); % номера отсчетов начала syncA

diff_index = diff(index_Async);   % интервалы между syncA (в отсчетах)

Num_one_string = ceil(0.5/dt); % количество отсчетов в одной строке (0.5 сек)

false_pattern_index = logical([1;diff_index<Num_one_string-500]);

index_Async(false_pattern_index)=[]; % удаляем детектированные позиции синхро-

% импульсов, если расстояние существенно меньше 0.5 сек

% удаляем точки для которых невозможно выделить строку из сигнала S_test

index_Async(index_Async+Num_one_string-1 > N_of_t_points) = [];

num_detect_pulses = length(index_Async); % кол-во детектированных синхр-сов

result_image = zeros(num_detect_pulses, Num_one_string); % инициализация

for k=1:num_detect_pulses         % "раскладываем" вектор в матрицу

result_image(k,1:Num_one_string)=S_test( index_Async(k):...

   index_Async(k) + Num_one_string-1);

End

% если необходимо - изображение можно перевернуть

result_image=flipud(result_image); % переворачиваем изображение по вертикали

result_image=fliplr(result_image); % переворачиваем изображение по горизонтали

Figure

imshow(result_image,[])

 

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 237.

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