sonyps4.ru

Черненко с а медианный фильтр. Медианная фильтрация сигналов

Если ваше инженерное образование похоже на мое, тогда вы наверняка много знаете о различных типах линейных фильтров, основная задача которых, пропустить сигнал в одном диапазоне частот и задержать сигналы в остальных диапазонах. Эти фильтры, конечно, незаменимы для многих типов шумов. Однако в реальном мире встраиваемых систем требуется немного времени, чтобы понять, что классические линейные фильтры бесполезны против импульсного шума (burst noise, popcorn noise).

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

Например, в результате аналогово-цифрового преобразования мы получаем такой ряд значений: 385, 389, 912, 388, 387. Значение 912 предположительно аномальное и его нужно отклонить. Если вы попробуете использовать классический линейный фильтр, то заметите, что значение 912 будет оказывать значительное влияние на выходной результат. Лучшим решением в этом случае будет использование медианного фильтра .

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

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

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

Фильтр использующий 3 значения (наименьший возможный фильтр),
- фильтр использующий 5, 7 или 9 значений (наиболее используемые),
- фильтр использующий 11 или больше значений.

Сейчас я придерживаюсь более простой классификации:

Фильтр использующий 3 значения,
- фильтр использующий больше 3 значений.

Медианный фильтр на 3

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


uint16_t middle_of_3(uint16_t a, uint16_t b, uint16_t c)
{
uint16_t middle;

If ((a <= b) && (a <= c)){
middle = (b <= c) ? b: c;
}
else{
if ((b <= a) && (b <= c)){
middle = (a <= c) ? a: c;
}
else{
middle = (a <= b) ? a: b;
}
}

Return middle;
}

Медианный фильтр > 3

Для фильтра размером больше 3, я предлагаю вам использовать алгоритм, описанный Филом Экстромом в ноябрьском номере журнала Embedded Systems Programming за 2000 год. Экстром использует связный список. Этот подход хорош тем, что когда массив отсортирован, удаление старого значения и добавление нового не вносит в массив существенный беспорядок. Поэтому этот подход хорошо работает с фильтрами больших размеров.

Имейте ввиду, в оригинальном опубликованном коде были некоторые баги, которые Экстром потом исправил. Учитывая, что на embedded.com сейчас сложно что-то найти, я решил опубликовать свою реализацию его кода. Изначально код был написан на Dynamic C, но для этого поста был портирован на стандартный Си. Код предположительно рабочий, но его полная проверка остается на вашей совести.


#define NULL 0
#define STOPPER 0 /* Smaller than any datum */
#define MEDIAN_FILTER_SIZE 5

uint16_t MedianFilter(uint16_t datum)
{

struct pair{
struct pair *point; /* Pointers forming list linked in sorted order */
uint16_t value; /* Values to sort */
};

/* Buffer of nwidth pairs */
static struct pair buffer = {0};
/* Pointer into circular buffer of data */
static struct pair *datpoint = buffer;
/* Chain stopper */
static struct pair small = {NULL, STOPPER};
/* Pointer to head (largest) of linked list.*/
static struct pair big = {&small, 0};

/* Pointer to successor of replaced data item */
struct pair *successor;
/* Pointer used to scan down the sorted list */
struct pair *scan;
/* Previous value of scan */
struct pair *scanold;
/* Pointer to median */
struct pair *median;
uint16_t i;

if (datum == STOPPER){
datum = STOPPER + 1; /* No stoppers allowed. */
}

If ((++datpoint - buffer) >= MEDIAN_FILTER_SIZE){
datpoint = buffer; /* Increment and wrap data in pointer.*/
}

Datpoint->value = datum; /* Copy in new datum */
successor = datpoint->point; /* Save pointer to old value"s successor */
median = &big; /* Median initially to first in chain */
scanold = NULL; /* Scanold initially null. */
scan = &big; /* Points to pointer to first (largest) datum in chain */

/* Handle chain-out of first item in chain as special case */
if (scan->point == datpoint){
scan->point = successor;
}


scan = scan->point ; /* step down chain */

/* Loop through the chain, normal loop exit via break. */
for (i = 0 ; i < MEDIAN_FILTER_SIZE; ++i){
/* Handle odd-numbered item in chain */
if (scan->point == datpoint){
scan->point = successor; /* Chain out the old datum.*/
}

If (scan->value < datum){ /* If datum is larger than scanned value,*/
datpoint->point = scanold->point; /* Chain it in here. */
scanold->point = datpoint; /* Mark it chained in. */
datum = STOPPER;
};

/* Step median pointer down chain after doing odd-numbered element */
median = median->point; /* Step median pointer. */
if (scan == &small){
break; /* Break at end of chain */
}
scanold = scan; /* Save this pointer and */
scan = scan->point; /* step down chain */

/* Handle even-numbered item in chain. */
if (scan->point == datpoint){
scan->point = successor;
}

If (scan->value < datum){
datpoint->point = scanold->point;
scanold->point = datpoint;
datum = STOPPER;
}

If (scan == &small){
break;
}

Scanold = scan;
scan = scan->point;
}

return median->value;
}

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

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

Медианная фильтрация на базе сортировки

В старой версии этой статьи для медианных фильтров размером 5, 7 или 9, я поддерживал подход на основе алгоритмов сортировки. Сейчас я изменил свою мнение. Однако, если вы хотите использовать их, я предоставляю вам базовый код:


if (ADC_Buffer_Full){

Uint_fast16_t adc_copy;
uint_fast16_t filtered_cnts;

/* Copy the data */
memcpy(adc_copy, ADC_Counts, sizeof(adc_copy));

/* Sort it */
shell_sort(adc_copy, MEDIAN_FILTER_SIZE);

/* Take the middle value */
filtered_cnts = adc_copy[(MEDIAN_FILTER_SIZE - 1U) / 2U];

/* Convert to engineering units */
...

Заключение

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

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

Медианная фильтрация - метод нелинейной обработки сигналов, разработанный Тьюки . Этот метод оказывается полезным при подавлении шума на изображении. Одномерный медианный фильтр представляет собой скользящее окно, охватывающее нечетное число элементов, изображения. Центральный элемент заменяется медианой всех элементов изображения в окне. Медианой дискретной последовательности для нечетного является тот ее элемент, для которого существуют элементов, меньших или равных ему по величине, и элементов, больших или равных ему по величине. Пусть в окно попали элементы изображения с уровнями 80, 90, 200, 110 и 120; в этом случае центральный элемент следует заменить значением 110, которое является медианой упорядоченной последовательности 80, 90, 110, 120, 200. Если в этом примере значение 200 является шумовым выбросом в монотонно возрастающей последовательности, то медианная фильтрация обеспечит существенное улучшение. Напротив, если значение 200 соответствует полезному импульсу сигнала (при использовании широкополосных датчиков), то обработка приведет к потере четкости воспроизводимого изображения. Таким образом, медианный фильтр в одних случаях обеспечивает подавление шума, в других - вызывает нежелательное подавление сигнала.

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

Рис. 12.6.1. Примеры медианной фильтрации простейших дискретных сигналов, .

а - ступенчатый переход: б - пилообразный переход; в - одиночный импульс; е - сдвоенный импульс; д - строенный импульс; е - треугольный сигнал.

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

Кроме того,

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

Это неравенство можно проверить на примере последовательностей 80, 90, 100, 110, 120 и 80, 90, 100, 90, 80.

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

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

Рис. 12.6.2. Примеры двумерной медианной фильтрации

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

Рис. 12.6.3. Образцы изображений, обработанных одномерным медианным фильтром с целью подавления импульсных помех.

а - исходное изображение с импульсными помехами (15 искаженных элементов в каждой строке); б - результат медианной фильтрации при ; в - результат медианной фильтрации при ; г - результат медианной фильтрации при .

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

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

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

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

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

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

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

Рис. 3.10. Примеры окон при медианной фильтрации

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

. (3.48)

Рассмотрим пример. Предположим, что выборка имеет вид: , а элемент 250, расположенный в ее центре, соответствует текущей точке фильтрации (рис. 3.10). Большое значение яркости в этой точке кадра может быть результатом воздействия импульсной (точечной) помехи. Упорядоченная по возрастанию выборка имеет при этом вид {45,55,75,99,104,110,136,158,250}, следовательно, в соответствии с процедурой (3.48), получаем . Видим, что влияние “соседей” на результат фильтрации в текущей точке привело к “игнорированию” импульсного выброса яркости, что следует рассматривать как эффект фильтрации. Если импульсная помеха не является точечной, а покрывает некоторую локальную область, то она также может быть подавлена. Это произойдет, если размер этой локальной области будет меньше, чем половина размера апертуры МФ. Поэтому для подавления импульсных помех, поражающих локальные участки изображения, следует увеличивать размеры апертуры МФ.

Из (3.48) следует, что действие МФ состоит в “игнорировании” экстремальных значений входной выборки - как положительных, так и отрицательных выбросов. Такой принцип подавления помехи может быть применен и для ослабления шума на изображении. Однако исследование подавления шума при помощи медианной фильтрации показывает, что ее эффективность при решении этой задачи ниже, чем у линейной фильтрации .

Результаты экспериментов, иллюстрирующие работу МФ, приведены на рис. 3.11. В экспериментах применялся МФ, имеющий квадратную апертуру со

стороной равной 3. В левом ряду представлены изображения, искаженные помехой, в правом - результаты их медианной фильтрации. На рис. 3.11.а и рис. 3.11.в показано исходное изображение, искаженное импульсной помехой. При ее наложении использовался датчик случайных чисел с равномерным на интервале законом распределения, вырабатывающий во всех точках кадра независимые случайные числа. Интенсивность помехи задавалась вероятностью ее возникновения в каждой точке. Если для случайного числа , сформированного в точке , выполнялось условие , то яркость изображения в этой точке замещалась числом 255, соответствующим максимальной яркости (уровню белого). На рис. 3.11.а действием импульсной помехи искажено 5 % (=0.05), а на рис. 3.11.в - 10 % элементов изображения. Результаты обработки говорят о практически полном подавлении помехи в первом случае и о ее значительном ослаблении во втором.

Рис. 3.11. Примеры медианной фильтрации

Рис. 3.11.д показывает изображение, искаженное независимым гауссовским шумом при отношении сигнал/шум дБ, а рис. 3.11.е - результат его фильтрации медианным фильтром. Условия данного эксперимента позволяют сравнивать его результаты с результатами рассмотренной выше линейной фильтрации. В таблице 3.1 приведены данные, дающие возможность такого сравнения. Для различных методов фильтрации в этой таблице приводятся значения относительного среднего квадрата ошибок и коэффициента ослабления шума для случая, когда отношение сигнал/шум на входе фильтра составляет -5 дБ.

Табл.3.1. Сравнение эффективности подавления шума при фильтрации изображений, дБ

масочный фильтр с оптимальн. КИХ

масочный фильтр с равномерн. КИХ

двумерный рекуррентн. фильтр

двумерный фильтр Винера

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

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

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

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

Рис. 1

Cущность медианной фильтрации с трехотсчётным окном иллюстрируется на рис. 1, где “1” - непрозрачная пластина с тремя отверстиями А, В и С; 2 - лента с наносимыми на ней отсчётами и располагаемыми с шагом, равным расстоянию между отверстиями. Лента протягивается дискретно на один шаг за один такт. В отверстиях одновременно наблюдаются три отсчёта, из которых выбирается средний. Не среднее арифметическое значение, не отсчёт в среднем отверстии, а среднее значение из трёх упорядоченно расположенных отсчётов. Так, упорядочив отсчёты, показанные на рис. 1, мы имеем значения 24, 27, 29, то есть средним является отсчёт 27 в отверстии А.

В общем случае медианой последовательности y1, y2, ... , ym (m - нечётное) является средний по значению член ряда, получаемый после упорядочения последовательности по возрастанию. Для чётного m медиана определяется как среднее арифметическое двух средних членов. В литературе можно найти и другие определения, но они мало отличаются друг от друга, а в подавляющем большинстве случаев принимают m нечётным .

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

В цифровой системе функции отверстий А, В и С (рис. 1) выполняют три регистра А, В и С (рис. 2). Регистр А является регистром данных какого-либо устройства, работающего в условиях сильных промышленных помех, например, преобразователя температуры в цифру. Все эти регистры имеют единую систему синхронизации, обеспечивающую запись данных в регистр А, загрузку содержимого регистра А в регистр В и содержимого регистра В в регистр С. Перед началом процедуры фильтрации все регистры обнуляются. Началом процедуры является момент появления первого отсчёта в регистре А. Так, например, если входная последовательность имеет вид 22, 29, 24, 27, 31, 40, 28, 32, 29,... (22 - первый отсчёт), то в первом такте будем иметь следующие значения отсчётов: А = 22, В = 0, С = 0, откуда следует, что средний отсчёт равен 0. Во втором такте будем иметь А = 29, В = 22, С = 0, откуда следует, что средний отсчёт равен 22 и т. д. Итак, выходная последовательность будет иметь вид: 0, 22, 24, 27, 27, 31, 31, 32, 29,... .

Рис. 2

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

Кроме указанных регистров аппаратная реализация такого фильтра должна включать в себя n-разрядный мультиплексор MS 4->1, в котором будут использоваться только три информационных входа (n - число двоичных разрядов цифрового отсчёта), и три цифровых компаратора, обеспечивающих сравнение каждого отсчёта с каждым, что можно рассматривать как замену процедуры упорядочения. Это позволяет снизить аппаратные затраты и время вычисления медианы. Напомним, что упорядочение требует выполнения операций сравнения и перестановки отсчётов.

Отметим прежде всего, что нет необходимости учитывать отношения равенства отсчётов, так как при равенстве двух или трёх отсчётов любой из них может рассматриваться как средний. Выберем соотношения A > B, A > C, B > C, обозначив соответствующие сигналы с выходов трёх цифровых компараторов переменными x2, x1 и x0. Примем, что если указанные соотношения выполняются, то соответствующие выходные сигналы компараторов принимают значение “1”, если не выполняются, то - “0”. Итак, задача проектирования нашего фильтра сводится к выявлению структуры комбинационной схемы (КС), реализующей адресные переменные а1 и а0 мультиплексора MS 4->1, обеспечивающего автоматическую передачу среднего отсчёта из трёх, поступивших на его информационные входы.

Оформим таблицу, в которой представлены: № набора - десятичный эквивалент двоичного набора трёх переменных x2, x1 и x0; комментарий - это условная гистограмма из трёх отсчётов А, В и С, качественно соответствующая ситуации, отражённой одним из восьми наборов переменных x2, x1 и x0; в столбце “средний отсчёт” указывается средний отсчёт, выявленный из соответствующей гистограммы. Так, в первой строке имеем набор x2x1x0 = 000, из которого следует, что A < B, A < C, B < C. Эта ситуация качественно показана в столбце “комментарий”, из которого следует, что в данном случае средним является отсчёт В. Так как на рис. 2 отсчёт В поступает на вход D1 MS 4->1, то в этой строке указываем значения а1 = 0, а0 = 1 (первый вариант кодирования адресных переменных в таблице). При наборе x2x1x0 = 001 имеем ситуацию A < B, A < C, B > C, которая отражена соответствую-щей гистограммой, а из послед-ней следует, что средним отсчётом в данном случае является отсчёт С. Соответственно устанавливаем а1 = 1, а0 = 0.

Таблица

№ наб. х2
А>В
х1
А>С
х0
В>С
Средний отсчет 1 вариант 2 вариант
а1 а0 а1 а0
0 0 0 0 В 0 1 0 0
1 0 0 1 С 1 0 1 0
2 0 1 0 - х х х х
3 0 1 1 А 0 0 0 1
4 1 0 0 А 0 0 0 1
5 1 0 1 - х х х х
6 1 1 0 С 1 0 1 0
7 1 1 1 В 0 1 0 0

Набор x2x1x0 = 010 никогда не будет появляться на выходах цифровых компараторов, так как он соответствует невозможной ситуации A < B, A > C, B < C, поэтому в соответствующей строке таблицы адресные переменные а1 и а0 обозначены крестиком как безразличные значения. Аналогично заполняются все строки таблицы. Рассматривая а1 и а0 как функции алгебры логики от переменных x2, x1 и x0 и используя для их минимизации карты Карно (рис. 3) , получаем

а1 = x1 Е x0 (1)
а0 = x2 Е x0 или x2 Е x0. (2)

Попытаемся устранить инвертор, необходимый для реализации x2 или x0 в формуле (2). Для этого перекодируем адресные переменные а1 и а0, приняв, что отсчёт А подаётся на вход D1, а В - на вход D0 MS 4®1 (второй вариант в таблице). На рис. 4 приведены карты Карно для второго варианта кодирования адресных переменных а1 и а0, из которых следует:

а1 = x1 Е x0 (3)
а0 = x2 Е x1.
(4)

Рис. 3

Рис. 4

Очевидно, что второй вариант кодирования предпочтительнее. Итак, комбинационная схема (КС), структуру которой мы определили, представляет из себя два элемента “сумма по mod2”.

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

  • А = В, A > C, в этом случае x2x1x0 = 011, средний отсчёт А;
  • А = В, A < C, в этом случае x2x1x0 = 000, средний отсчёт В;
  • А = С, A > В, в этом случае x2x1x0 = 100, средний отсчёт А;
  • А = С, A < B, в этом случае x2x1x0 = 001, средний отсчёт C;
  • B = C, A > B, в этом случае x2x1x0 = 110, средний отсчёт C;
  • B = C, A < B, в этом случае x2x1x0 = 000, средний отсчёт B;
  • А = В = C, в этом случае x2x1x0 = 000, средний отсчёт В.

Если на выходах цифровых компараторов используются соотношения “больше или равно”, то будем иметь:

  • А = В, A > C, в этом случае x2x1x0 = 111, средний отсчёт В;
  • А = В, A < C, в этом случае x2x1x0 = 100, средний отсчёт А;
  • А = С, A > В, в этом случае x2x1x0 = 110, средний отсчёт С;
  • А = С, A < B, в этом случае x2x1x0 = 011, средний отсчёт А;
  • B = C, A > B, в этом случае x2x1x0 = 111, средний отсчёт В;
  • B = C, A < B, в этом случае x2x1x0 = 001, средний отсчёт С;
  • А = В = C, в этом случае x2x1x0 = 111, средний отсчёт В.

Достоинства и недостатки медианных фильтров

Достоинства

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

Недостатки

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

Проведённый анализ подтверждает то, что при проектировании структуры комбинационной схемы КС можно использовать на выходах цифровых компараторов любые комбинации соотношений “больше”, “больше или равно”, “меньше”, “меньше или равно”.

Литература

  1. Tukey J.W. Exploratory Data Analisis (Addison - Wesley, Reading, Mass., 1971).
  2. Быстрые алгоритмы в цифровой обработке изображений / Т.С. Хуанг, Дж.-О. Эклунд, Г.Дж. Нуссбаумер и др.; Под ред. Т.С. Хуанга: Пер. с англ. - М.: Радио и связь. - 1984. -224 с.
  3. Устройство для выделения медианы трех чисел. А. С. №1575168.
  4. Воробьев Н.В. Мультиплексоры // Chip News. - 1998. - № 11-12. - С. 38–41.
  5. Воробьев Н.В. Мультиплексор как многофункциональный узел // Chip News. - 1999. - № 2. - С. 36–41.
  6. Воробьев Н.В. Цифровые компараторы // Chip News. - 1999. - № 5. - С. 8–14.
  7. Воробьев Н.В. Цифровые компараторы (продолжение) // Chip News. - 1999. - № 7. - С. 35–38.
  8. Воробьев Н.В. Минимизация функций алгебры логики // Chip News. - 1997. - № 9-10. - С. 54–60.
  9. Прэтт У. Цифровая обработка изображений: Пер. с англ. - М.: Мир. - 1982. - Кн. 2. - 480 с. (Кн. 1. - 312 с.).

Введение

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

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

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

Постановка задачи

Дана матрица NxN. Необходимо реализовать параллельный алгоритм медианной фильтрации этой матрицы.

Метод решения

(Примечание: для простоты был реализован фильтр 3x3)

Последовательный алгоритм:

Фильтрация проводится построчно – для первого элемента строки заполняется массив окрестности (с учетом того, что искусственно добавляются три значения-соседи слева), этот массив сортируется быстрой сортировкой, затем среднее значение записывается в выходную матрицу. Для каждого следующего элемента строки массив окрестности не заполняется заново – в него лишь добавляются новые три элемента, замещая старые три. Для того, чтобы это было возможно сделать за один проход (по массиву окрестности и новым трем элементам) введен специальный массив с «количеством жизней» элемента. Жизней может быть 1, 2 и 3. Добавляемые 3 элемента предварительно сортируются и добавление производится слиянием: во время него элементы с 1й жизнью затираются, элементы, имевшие 2 и 3 жизни получают 1 и 2 соответственно, а добавляемые элементы становятся обладателями 3х жизней. Средний элемент записывается в выходной массив. Обработка последнего элемента производится повторением итерации предпоследнего шага. На практике данный метод по сравнению с полной выборкой окрестности и ее сортировкой показывает превосходство по скорости в 3 раза.

Параллельный алгоритм:

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

Т.к. в данной задаче наблюдается независимость по данным, параллелизм производится на основе деления матрицы на части (по несколько строк, а именно N/p, где p –количество процессов). Если учесть что в персональных компьютерах обычно 1, 2, 4 или 8 ядер у процессора, то деление будет производиться без остатка. После деления матрицы на части по высоте – они обрабатываются последовательным алгоритмом, но необходимо учесть, то при этом невозможно обработать граничные строки (за исключением первой и последней в матрице) – после завершения параллельных вычислений, части собираются обратно в одну матрицу, а оставшиеся строки необходимо отфильтровать отдельно.

Анализ эффективности

Время фильтрации 1го элемента строки:

(2*9+9*ln(9)*2+1)*t , где t - время выполнения одной операции.

  • (2*9 операций – заполнение массива окрестности и соответствующего массива «жизней»
  • 9*ln(9)*2 – быстрая сортировка массивов

Фильтрация последующих элементов строки:

  • 9+3 – проход по массиву окрестности с добавлением новых элементов и удалением старых
  • 18 – копирование массива окрестности и массива «жизней» из вспомогательных массивов
  • 1 – выборка и присваивание медианы выходному элементу

Итого на требующееся на фильтрацию строки время:

((2*9+9*ln(9)*2)+1+(N-1)*(9+3+18+1))*t ≈(21N+37)*t

Время на фильтрацию всей матрицы:

Tp = (α+ω/β*N^2/p)+(21N+37)*t*(N/p+2*(p-1))

  • α – латентность
  • β - пропускная способность среды передачи
  • ω - размер элемента матрицы
  • 2*(p-1) – количество строк, оставшихся неотфильтрованными при делении матрицы на части)

T1 = (21N+37)*t*N

Ускорение: Sp = (T1)/(Tp) = ((21N+37)*t*N)/((21N+37)*t*(N/p+2*(p-1))+α+ω/β*N^2/p) = βp/ (β+ω/21) ,при N→∞

Эффективность: Ep = (Sp)/p = β/(β+ω/21) ,при N→∞

Демонстрация

Ширина матрицы

Время выполнения (сек)

Сравнение теоретических оценок ускорения с практическими:

Ширина матрицы

Характеристики машины: Intеl Core i7 920 @ 2.80GHz 2.00ГБ ОЗУ

латентность: a = 0,00005 cек

пропускная способность: b = 25,6 ГБ/с

время выполнения стандартной операции: t = 0,000000004912 сек

размер элемента набора: w = 4

Работу выполнили студенты группы 8411: Муравьев Владимир и Соловьев Павел



Загрузка...