Среден филтър в услуга на разработчика. Цифрова обработка на сигнала

  • Медианното филтриране е нелинейно, тъй като медианата на сумата от две произволни последователности не е равна на сумата от техните медиани, което в някои случаи може да усложни математическия анализ на сигналите.
  • Филтърът кара върховете на триъгълните функции да се изравнят.
  • Потискането на белия и гаусовия шум е по-малко ефективно от линейните филтри. Слаба ефективност се наблюдава и при филтриране на флуктуационен шум.
  • Тъй като размерът на филтърния прозорец се увеличава, резките промени на сигнала и скоковете се замъгляват.

Недостатъците на метода могат да бъдат намалени, ако се използва медианно филтриране с адаптивна промяна на размера на филтърния прозорец в зависимост от динамиката на сигнала и естеството на шума (адаптивно медианно филтриране). Като критерий за размер на прозореца можете да използвате например отклонението на стойностите на съседни проби спрямо централно класираната извадка /1i/. Тъй като тази стойност намалява под определен праг, размерът на прозореца се увеличава.

16.2. МЕДИАННО ФИЛТРИРАНЕ на изображения.

Шум в изображенията. Никоя система за регистрация не осигурява идеално качество на изображението на изследваните обекти. Изображенията в процеса на формиране от системи (фотографски, холографски, телевизионни) обикновено са изложени на различни случайни смущения или шумове. Основен проблем в областта на обработката на изображения е ефективното премахване на шума, като същевременно се запазват важни детайли на изображението за последващо разпознаване. Сложността на решаването на този проблем зависи значително от естеството на шума. За разлика от детерминистичните изкривявания, които се описват чрез функционални трансформации на оригиналното изображение, адитивните, импулсните и мултипликативните шумови модели се използват за описание на случайни ефекти.

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

Адитивният шум на Гаус се характеризира с добавяне на нормално разпределени и нулеви средни стойности към всеки пиксел в изображението. Такъв шум обикновено се въвежда на етапа на цифрово изображение. Основната информация в изображенията се предоставя от контурите на обектите. Класическите линейни филтри могат ефективно да премахнат статистическия шум, но степента на замъгляване на малки детайли в изображението може да надхвърли допустимите стойности. За решаването на този проблем се използват нелинейни методи, например алгоритми, базирани на анизотропна дифузия на Perron и Malik, двустранни и тристранни филтри. Същността на такива методи е да се използват локални оценки, адекватни за определяне на контура в изображението, и да се изгладят такива области в най-малка степен.


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

Двуизмерни филтри. Медианното филтриране на изображения е най-ефективно, ако шумът в изображението е импулсивен по природа и представлява ограничен набор от пикови стойности на фона на нули. В резултат на прилагането на медианния филтър, наклонените области и резките промени в стойностите на яркостта в изображенията не се променят. Това е много полезно свойство специално за изображения, в които, както е известно, контурите носят основната информация.

Ориз. 16.2.1.

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

Под изображение на разлика разбираме изображение, в което точките от едната страна на определена линия имат еднаква стойност А, а всички точки от другата страна на тази линия са стойността b, b¹ а. Ако апертурата на филтъра е симетрична спрямо началото и го съдържа, тогава медианният филтър запазва всякакво изображение на разликата. Това се прави за всички отвори с нечетен брой проби, т.е. с изключение на отвори (квадратни рамки, пръстени), които не съдържат произхода. Квадратните рамки и пръстените обаче ще променят леко спада.

Ориз. 16.2.2.

За да опростим по-нататъшното разглеждане, ще се ограничим до примера на филтър с квадратна маска с размер N × N, с N=3. Плъзгащият филтър сканира образците на изображението отляво надясно и отгоре надолу, докато входната двуизмерна последователност може също да бъде представена като последователна числена поредица от проби (x(n)) отляво надясно, отгоре надолу. От тази последователност, във всяка текуща точка, филтърната маска извлича масива w(n), като вектор с W-елемент, който в този случай съдържа всички елементи от прозореца 3x3, центриран около x(n), и централния елемент себе си, ако е предоставен тип маска:

w(n) = . (16.2.1)

В този случай стойността x i съответства на картографиране отляво надясно и отгоре надолу на прозорец 3x3 в едномерен вектор, както е показано на фиг. 16.2.2.

Елементите на този вектор, както и за едномерния медианен филтър, също могат да бъдат подредени в серия във възходящ или низходящ ред на техните стойности:

r(n) = , (16.2.2)

дефинирана е средната стойност y(n) = med(r(n)) и централната проба на маската се заменя със средната стойност. Ако според вида на маската централната проба не е включена в ред 16.2.1, тогава средната стойност се намира като средната стойност на двете централни проби от серия 16.2.2.

Горните изрази не обясняват как да се намери изходният сигнал близо до крайните и граничните точки в крайните последователности и изображения. Един прост трик е да намерите медианата само на онези точки в изображението, които попадат в отвора. Следователно за точки, разположени близо до границите, медианите ще бъдат определени на базата на по-малък брой точки.

На фиг. 16.2.3 е показан пример за почистване на изображение с шум с помощта на медианния филтър Черненко /2i/. Площта на шума на изображението беше 15% за почистване, филтърът беше приложен 3 пъти последователно.



Ориз. 16.1.5.

Медианното филтриране може да се извърши и в рекурсивна версия, в която стойностите над и вляво от централната проба в маската (в този случай x 1 (n)-x 4 (n) на фиг. 16.2.2 ) в ред 16.2.1 се заменят с вече изчислените в предишни цикли стойности y 1 (n)-y 4 (n).

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

Най-простите алгоритми за динамична промяна на апертурата на филтър, който е симетричен по двете оси, обикновено работят в съответствие с прагов коефициент на яркост S threshold = зададен въз основа на емпирични данни. При всяка текуща позиция на маската в изображението итеративният процес започва с минималния размер на блендата. Стойностите на отклонение на яркостта на съседните пиксели A(r, n), попадащи в прозорец с размер (n x n) спрямо яркостта на централната референция A(r), се изчисляват по формулата:

S n (r) = |A(r,n)/A(r) – 1|. (16.2.3)

Критерият, според който се увеличава размерът на маската с централна референция r и се извършва следваща итерация, има вида:

макс< S порог. (16.2.4)

Максималният размер на маската (брой итерации) обикновено е ограничен. За неквадратни маски с размери (n ​​x m), итерациите могат да бъдат изчислени с отделни увеличения на параметрите n и m, както и промяна на формата на маските по време на итерации.

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

Същността на ранговата статистика обикновено се крие във факта, че серия 16.2.1 не включва централната извадка на филтърната маска и стойността m(n) се изчислява от серия 16.2.2. При N=3 съгласно фиг. 16.2.2:

m(n) = (x 4 (n)+x 5 (n))/2. (16.2.5)

Изходната стойност на филтъра, който замества централната проба, се изчислява по формулата:

y(n) = a x(n) + (1-a) m(n). (16.2.6)

Стойността на коефициента на доверие a е свързана с определена връзка със статистиката на пробите в прозореца на филтъра (например общата дисперсия на пробите, дисперсията на разликите x(n)-x i (n) или m(n) -x i (n), дисперсията на положителните и отрицателните разлики x(n )-x i (n) или m(n)-x i (n) и т.н.). По същество стойността на коефициента a трябва да определя степента на увреждане на централната проба и съответно степента на заимстване от пробите m(n), за да я коригира. Изборът на статистическа функция и естеството на зависимостта на коефициента a от нея може да бъде доста разнообразен и зависи както от размера на апертурата на филтъра, така и от естеството на изображенията и шума.

литература

44. Болшаков И.А., Ракошиц В.С. Приложна теория на случайните потоци, М.: Сов. радио, 1978, - 248 с.

46. ​​​​Huang T.S. и др.Бързи алгоритми при обработка на цифрови изображения. – М.: Радио и съобщения, 1984. – 224 с.

47. Soifer V.A. Компютърна обработка на изображения. Част 2. Методи и алгоритми. – Образователно списание на Сорос №3, 1996г.

48. Апалков И.В., Хряшчев В.В. Премахване на шум от изображения на базата на нелинейни алгоритми, използващи статистика за ранг. - Ярославски държавен университет, 2007 г.

1i. Яровой Н.И. Адаптивно средно филтриране. - http://www.controlstyle.ru/articles/science/text/amf/

2i. Черненко С.А. Среден филтър. - http://www.logis-pro.kiev.ua/math_power_medianfilter_ru.html.

3i. Радченко Ю.С. Ефективност на приемане на сигнал на фона на комбинирани смущения с допълнителна обработка в медианния филтър. - "Списание за радиоелектроника", № 7, 2001 г. / http://jre.cplire.ru/iso/jul01/2/text.html

Относно забелязаните грешки и предложения за допълнения: [имейл защитен].

Copyright © 2008 Davydov A.V.

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

Импулсният шум обикновено възниква от псевдослучайни събития. Например, двупосочна радиостанция може да превключва близо до вашето устройство или може да възникне някакъв вид статично разреждане. Когато това се случи, входният сигнал може временно да бъде изкривен.

Например, в резултат на аналогово-цифрово преобразуване получаваме следната поредица от стойности: 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 среда;

Ако<= b) && (a <= c)){
среден = (б<= c) ? b: c;
}
иначе(
ако ((б<= a) && (b <= c)){
среден = (а<= c) ? a: c;
}
иначе(
среден = (а<= b) ? a: b;
}
}

Връщане в средата;
}

Среден филтър > 3

За размер на филтъра, по-голям от 3, ви предлагам да използвате алгоритъма, описан от Phil Ekstrom в броя на Embedded Systems Programming от ноември 2000 г. Ekstrom използва свързан списък. Хубавото на този подход е, че след като масивът е сортиран, премахването на стара стойност и добавянето на нова не внася значителна бъркотия в масива. Следователно този подход работи добре с големи размери на филтъра.

Имайте предвид, че имаше някои грешки в оригиналния публикуван код, които Ekstrom по-късно коригира. Като се има предвид, че сега е трудно да се намери нещо на embedded.com, реших да публикувам моята реализация на неговия код. Кодът първоначално беше написан на Dynamic C, но беше пренесен на стандарт C за тази публикация. Предполага се, че кодът работи, но от вас зависи да го тествате напълно.


#define NULL 0
#define STOPPER 0 /* По-малък от всяка дата */
#define MEDIAN_FILTER_SIZE 5

uint16_t MedianFilter(uint16_t данни)
{

структурна двойка(
структурна двойка *точка; /* Указатели, образуващи списък, свързан в сортиран ред */
uint16_t стойност; /* Стойности за сортиране */
};

/* Буфер от двойки nwidth */
статичен буфер за двойка структури = (0);
/* Указател към кръгъл буфер от данни */
двойка статична структура *datpoint = буфер;
/* Стопер на веригата */
двойка статична структура малка = (NULL, STOPPER);
/* Указател към главата (най-голямата) на свързания списък.*/
статична структурна двойка big = (&small, 0);

/* Указател към наследника на заменения елемент от данни */
структурна двойка *наследник;
/* Указател, използван за сканиране надолу по сортирания списък */
структурна двойка *сканиране;
/* Предишна стойност на сканиране */
struct pair *scanold;
/* Указател към медианата */
структурна двойка *медиана;
uint16_t i;

if (datum == STOPPER)(
дата = СТОПЕР + 1; /* Не се допускат запушалки. */
}

Ако ((++datpoint - буфер) >= MEDIAN_FILTER_SIZE)(
datpoint = буфер; /* Увеличаване и обвиване на данни в указател.*/
}

Datpoint->стойност = дата; /* Копиране в нова дата */
наследник = datpoint->point; /* Запазване на указателя към наследника на старата стойност */
медиана = /* Средна първоначално до първа във веригата */
scanold = NULL; /* Scanold първоначално нула. */
сканиране = /* Сочи към указател към първата (най-голямата) дата във веригата */

/* Обработва верижното излизане на първия елемент във веригата като специален случай */
if (scan->point == datpoint)(
сканиране->точка = наследник;
}


сканиране = сканиране->точка; /* стъпка надолу по веригата */

/* Цикъл през веригата, нормален изход от цикъл чрез прекъсване. */
за (i = 0; i< MEDIAN_FILTER_SIZE; ++i){
/* Обработка на нечетен елемент във веригата */
if (scan->point == datpoint)(
сканиране->точка = наследник; /* Свържете старата дата.*/
}

Ако (сканиране->стойност< datum){ /* If datum is larger than scanned value,*/
datpoint->point = scanold->point; /* Свържете го тук. */
scanold->point = datpoint; /* Маркирайте го във верига. */
дата = СТОПЕР;
};

/* Стъпка на медианния указател надолу по веригата след изпълнение на нечетен елемент */
медиана = медиана->точка; /* Среден показалец на стъпка. */
if (scan == &small)(
прекъсване; /* Прекъсване в края на веригата */
}
scanold = сканиране; /* Запазете този показалец и */
сканиране = сканиране->точка; /* стъпка надолу по веригата */

/* Обработка на четен номер във веригата. */
if (scan->point == datpoint)(
сканиране->точка = наследник;
}

Ако (сканиране->стойност< datum){
datpoint->point = scanold->point;
scanold->point = datpoint;
дата = СТОПЕР;
}

Ако (сканиране == &малък)(
прекъсване;
}

Scanold = сканиране;
сканиране = сканиране->точка;
}

връща медиана->стойност;
}

За да използвате този филтър, просто извиквайте функцията всеки път, когато получите нова входна стойност. Функцията ще върне средната стойност на последните получени стойности, чийто брой се определя от константата MEDIAN_FILTER_SIZE.

Този алгоритъм може да използва доста RAM (в зависимост от размера на филтъра, разбира се), защото съхранява входни стойности и указатели към структури. Ако обаче това не е проблем, тогава алгоритъмът всъщност е добър за използване, защото е значително по-бърз от алгоритмите, базирани на сортиране.

Медианно филтриране въз основа на сортиране

В старата версия на тази статия, за медианни филтри с размер 5, 7 или 9, препоръчвах подход на алгоритъм за сортиране. Сега промених решението си. Ако обаче искате да ги използвате, предоставям ви основния код:


ако (ADC_Buffer_Full)(

Uint_fast16_t adc_copy;
uint_fast16_t filtered_cnts;

/* Копиране на данните */
memcpy(adc_copy, ADC_Counts, sizeof(adc_copy));

/* Подреди го */
shell_sort(adc_copy, MEDIAN_FILTER_SIZE);

/* Вземете средната стойност */
filtered_cnts = adc_copy[(СРЕДЕН_РАЗМЕР_ФИЛТЪР - 1U) / 2U];

/* Преобразуване в инженерни единици */
...

Заключение

Има някои разходи, свързани с използването на средни филтри. Очевидно медианните филтри добавят забавяне към стойностите, които се променят на стъпки. Освен това средните филтри могат напълно да изтрият информацията за честотата в сигнала. Разбира се, ако се интересувате само от постоянни стойности, това не е проблем.

Имайки предвид тези предупреждения, все още силно препоръчвам да използвате медианни филтри във вашите проекти.

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

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

Ориз. 1

Същността на медианното филтриране с прозорец с три проби е илюстрирана на фиг. 1, където "1" е непрозрачна плоча с три отвора A, B и C; 2 - лента с показания, нанесени върху нея и поставени на стъпки, равни на разстоянието между дупките. Лентата се издърпва дискретно стъпка по стъпка. В дупките се наблюдават едновременно три показания, от които се избира средното. Не средното аритметично, не показанието в средния отвор, а средното от три подредени показания. По този начин, чрез подреждане на показанията, показани на фиг. 1, имаме стойности 24, 27, 29, тоест средната стойност е броят на 27 в дупка А.

Общо взето Медианапоследователности y1, y2, ... , ym (m - нечетно) е средният член на серията, получен след подреждане на последователността в нарастващ ред. За четно m медианата се определя като средноаритметично от двата средни члена. Други дефиниции могат да бъдат намерени в литературата, но те се различават малко една от друга и в по-голямата част от случаите приемат m за странно.

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

В цифрова система функциите на дупки A, B и C (фиг. 1) се изпълняват от три регистъра A, B и C (фиг. 2). Регистър А е регистърът на данните на устройство, работещо в условия на силен промишлен шум, например температурно-цифров преобразувател. Всички тези регистри имат единна система за синхронизация, която гарантира, че данните се записват в регистър A, съдържанието на регистър A се зарежда в регистър B, а съдържанието на регистър B се зарежда в регистър C. Преди да започне процедурата за филтриране, всички регистри се зареждат нулиране. Началото на процедурата е моментът, в който се появи първият брой в регистър А. Така например, ако входната последователност има формата 22, 29, 24, 27, 31, 40, 28, 32, 29,... ( 22 е първият брой), тогава В първия цикъл ще имаме следните стойности на извадката: A = 22, B = 0, C = 0, което означава, че средната извадка е 0. Във втория цикъл ще имаме A = 29, B = 22, C = 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“. И така, задачата за проектиране на нашия филтър се свежда до идентифициране на структурата на комбинираната схема (CC), която изпълнява адресните променливи a1 и a0 на мултиплексора MS 4->1, което осигурява автоматично предаване на средния брой на трите получени на своите информационни входове.

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

Таблица

Emb. x2
A>B
x1
A>C
x0
B>C
Среден брой 1 вариант Вариант 2
a1 a0 a1 a0
0 0 0 0 IN 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 IN 0 1 0 0

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

a1 = x1 E x0 (1)
a0 = x2 E x0 или x2 E x0. (2)

Нека се опитаме да елиминираме инвертора, необходим за прилагане на x2 или x0 във формула (2). За да направим това, ние прекодираме адресните променливи a1 и a0, като приемаме, че проба A е подадена към вход D1, а B към вход D0 MS 4®1 (втората опция в таблицата). На фиг. Фигура 4 показва карти на Karnaugh за втората опция за кодиране на адресните променливи a1 и a0, от което следва:

a1 = x1 E x0 (3)
a0 = x2 E x1.
(4)

Ориз. 3

Ориз. 4

Очевидно вторият вариант на кодиране е за предпочитане. И така, комбинираната верига (CC), чиято структура сме дефинирали, се състои от два елемента "sum mod2".

Нека проверим валидността на горната забележка, че няма нужда да се вземат предвид отношенията на равенство. Помислете за следните ситуации:

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

Ако на изходите на цифровите компаратори се използват отношения „по-голямо или равно“, тогава ще имаме:

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

Предимства и недостатъци на медианните филтри

Предимства

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

недостатъци

  • медианното филтриране е метод за нелинейна обработка на сигнали, тъй като медианата на сумата от две произволни последователности не е равна на сумата от техните медиани. Това усложнява математическия анализ на техните характеристики. Невъзможно е да се направи разлика между влиянието на тези филтри върху сигнала и шума, което е много просто за линейните филтри;
  • филтърът кара върховете на триъгълната функция да се изравнят;
  • Потискането на шума на Гаус е по-малко ефективно от линейните филтри;
  • 2D обработката води до по-значително затихване на сигнала

Извършеният анализ потвърждава, че при проектиране на структурата на комбинирана CS схема всяка комбинация от отношенията „повече“, „повече или равно“, „по-малко“, „по-малко от или равно“ може да се използва на изходите на цифровите компаратори .

Литература

  1. Тъки Дж. Проучвателен анализ на данни (Addison - Wesley, Reading, Mass., 1971).
  2. Бързи алгоритми в цифровата обработка на изображения / T.S. Huang, J.-O. Eklund, G.J. Nussbaumer и др.; Изд. Т.С. Хуанга: Превод. от английски - М.: Радио и комуникации. - 1984. -224 с.
  3. Устройство за намиране на медианата на три числа. A.S. № 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. Pratt W. Цифрова обработка на изображения: Trans. от английски - М.: Мир. - 1982. - Кн. 2. - 480 с. (Книга 1. - 312 стр.).

Медианните филтри често се използват на практика като средство за предварителна обработка на цифрови данни. Специфична характеристика и основно предимство на такива филтри е тяхната слаба реакция към проби, които се открояват рязко от съседните, което прави възможно използването на средно филтриране за елиминиране на аномални стойности в масиви от данни. Характерна особеност на медианния филтър е неговата нелинейност. В много случаи използването на медианен филтър се оказва по-ефективно в сравнение с линейните филтри, тъй като процедурите за линейна обработка на данни са оптимални за гаусово разпределение на шума, което не винаги е типично за реални сигнали. В случаите, когато разликите в стойностите на сигнала са големи в сравнение с дисперсията на шума на Гаус, медианният филтър дава по-ниска средна квадратична грешка на изходния сигнал спрямо входния сигнал без шум в сравнение с оптималните линейни филтри.

Средният филтър е прозоречен филтър, който последователно се движи през сигналния масив и на всяка стъпка връща един от елементите, които са попаднали в прозореца (апертурата) на филтъра. Изходен сигнал г кплъзгаща се средна ширина на филтъра нза текущото четене кформирани от въведените времеви редове …, х к -1 , х к , х к +1 ,… по формулата:

г к = Me(x k-(n-1)/2 ,…, х к ,…,х k+(n-1)/2 ) ,

Където Аз (х 1 ,…,х н ) = x ((n+1)/2)– елементи на вариационната серия, т.е. класирани във възходящ ред на стойностите х 1 = мин(х 1 ,…, х н ) ≤ х (2) х (3) ≤ … ≤ x н = макс(х 1 ,…, х н ) . Ширината на медианния филтър се избира, като се вземе предвид фактът, че той е в състояние да потисне импулс с ширина (n-1)/2брои, при условие че н- нечетно число.

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

Благодарение на своите характеристики, средните филтри с оптимално избрана бленда могат да запазят острите граници на обекта без изкривяване, като потискат некорелирания и слабо корелиран шум и детайлите с малък размер. При подобни условия алгоритмите за линейно филтриране неизбежно „размиват“ острите граници и контурите на обектите.

Предимства на медианните филтри.

    Проста филтърна структура за хардуерно и софтуерно изпълнение.

    Филтърът не променя функциите на стъпката и триона.

    Филтърът потиска добре единичен импулсен шум и произволни шумови пикове.

Недостатъци на средните филтри.

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

    Филтърът кара върховете на триъгълните функции да се изравнят.

    Потискането на белия и гаусовия шум е по-малко ефективно от линейните филтри. Слаба ефективност се наблюдава и при филтриране на флуктуационен шум.

    Тъй като размерът на филтърния прозорец се увеличава, резките промени на сигнала и скоковете се замъгляват.

Недостатъците на метода могат да бъдат намалени, ако се използва медианно филтриране с адаптивна промяна на размера на филтърния прозорец в зависимост от динамиката на сигнала и естеството на шума (адаптивно медианно филтриране). Като критерий за размер на прозореца можете да използвате например отклонението на стойностите на съседни проби спрямо централно класираната извадка /1i/. Тъй като тази стойност намалява под определен праг, размерът на прозореца се увеличава.

Всички алгоритми за линейно филтриране изглаждат резките промени в яркостта на обработените изображения. Този недостатък, особено важен, ако потребителят на информация е човек, по принцип не може да бъде отстранен в рамките на линейната обработка. Въпросът е, че линейните процедури са оптимални за гаусови разпределения на сигнали, шум и наблюдавани данни. Реалните изображения, строго погледнато, не се подчиняват на това разпределение на вероятностите. Освен това, една от основните причини за това е наличието на различни граници в изображенията, промени в яркостта, преходи от една текстура към друга и т.н. Податливи на локално гаусово описание в ограничени области, много реални изображения в това отношение са слабо представени като глобално Гаусови обекти. Именно това е причината за лошото предаване на границите при линейно филтриране.

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

Успешно решение на горните проблеми е използването на медианното филтриране, предложено от J. Tukey през 1971 г. за анализ на икономически процеси. В сборника е представено най-пълното изследване на медианното филтриране във връзка с обработката на изображения. Имайте предвид, че медианното филтриране е евристичен метод за обработка; неговият алгоритъм не е математическо решение на строго формулиран проблем. Ето защо изследователите обръщат голямо внимание на анализа на ефективността на обработката на изображения въз основа на него и сравняването му с други методи.

Когато се прилага медианен филтър (MF), всяка точка в рамката се обработва последователно, което води до поредица от оценки. Концептуално обработката в различни точки е независима (по този начин MF е подобен на масков филтър), но за да се ускори, препоръчително е алгоритмично да се използват предварително извършени изчисления на всяка стъпка.

Медианното филтриране използва двуизмерен прозорец (отвор на филтъра), обикновено имащ централна симетрия, като центърът му се намира в текущата точка на филтриране. На фиг. Фигура 3.10 показва два примера за най-често използваните опции за прозорец под формата на кръст и под формата на квадрат. Размерите на апертурата са сред параметрите, оптимизирани в процеса на анализ на ефективността на алгоритъма. Образците на изображения, които попадат в прозореца, формират работната проба на текущата стъпка.

Ориз. 3.10. Примери за прозорци за средно филтриране

Двуизмерният характер на прозореца позволява по същество двуизмерно филтриране, тъй като данните от текущия ред и колона, както и от съседните, се използват за формиране на оценка. Нека обозначим работната извадка като едномерен масив ; броят на елементите му е равен на размера на прозореца, а разположението им е произволно. Обикновено се използват прозорци с нечетен брой точки (това се осигурява автоматично от централната симетрия на отвора и когато най-централната точка е включена в неговия състав). Ако подредите последователност във възходящ ред, тогава нейната медиана ще бъде примерният елемент, който заема централна позиция в тази подредена последователност. Полученото по този начин число е филтриращият продукт за текущата точка на рамката. Ясно е, че резултатът от такава обработка всъщност не зависи от последователността, в която са представени елементите на изображението в работната проба. Нека въведем формалната нотация за описаната процедура във формата:

. (3.48)

Нека разгледаме един пример. Да приемем, че селекцията има формата: , а елемент 250, разположен в центъра й, съответства на текущата точка на филтриране (фиг. 3.10). Високата стойност на яркостта в тази точка от кадъра може да е резултат от импулсен (точков) шум. Пробата, подредена във възходящ ред, има формата (45,55,75,99,104,110,136,158,250), следователно, в съответствие с процедура (3.48), получаваме . Виждаме, че влиянието на „съседите“ върху резултата от филтриране в текущата точка доведе до „игнориране“ на импулсния скок на яркостта, което трябва да се разглежда като ефект на филтриране. Ако импулсният шум не е точков, а обхваща определена локална област, тогава той също може да бъде потиснат. Това ще се случи, ако размерът на тази локална област е по-малък от половината от размера на диафрагмата за MF. Следователно, за да се потисне импулсният шум, засягащ локалните области на изображението, размерът на MF отвора трябва да се увеличи.

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

Експерименталните резултати, илюстриращи работата на MF, са показани на фиг. 3.11. В експериментите използвахме MF с квадратна бленда

страна, равна на 3. Левият ред показва изображения, изкривени от шум, десният ред показва резултатите от тяхното средно филтриране. На фиг. 3.11.а и фиг. 3.11.c показва оригиналното изображение, изкривено от импулсен шум. При прилагането му е използван сензор за случайни числа с еднакъв в интервала закон на разпределение, генериращ независими случайни числа във всички точки на рамката. Интензитетът на смущението се определя от вероятността за възникването му във всяка точка. Ако условието беше изпълнено за произволното число, генерирано в точка , тогава яркостта на изображението в тази точка беше заменена с числото 255, съответстващо на максималната яркост (ниво на бялото). На фиг. 3.11.а, 5% (=0,05) се изкривява от действието на импулсен шум, а на фиг. 3.11.c - 10% елементи на изображението. Резултатите от обработката показват почти пълно потискане на смущението в първия случай и значителното му отслабване във втория.

Ориз. 3.11. Примери за филтриране по медиана

Ориз. 3.11.e показва изображение, изкривено от независим гаусов шум при съотношение сигнал/шум dB, а фиг. 3.11.e - резултатът от филтрирането му с медианен филтър. Условията на този експеримент ни позволяват да сравним неговите резултати с резултатите от линейното филтриране, обсъдено по-горе. Таблица 3.1 предоставя данни, които позволяват такова сравнение. За различни методи за филтриране тази таблица предоставя относителната средна квадратична грешка и коефициента на затихване на шума за случая, когато съотношението сигнал/шум на входа на филтъра е -5 dB.

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

маска филтър с оптимален НА ТЕХНИТЕ

маска филтър с униформа НА ТЕХНИТЕ

двуизмерен повтарящ се филтър

двумерен филтър на Винер

Най-ефективен е двумерният филтър на Винер, който намалява средните квадратични грешки 17 пъти. Медианният филтър има най-ниска ефективност от всички разглеждани филтри, тя съответства на =5,86. Това число обаче показва, че с негова помощ е възможно значително да се намали нивото на шума в изображението.

В същото време, както е споменато по-горе и както е показано на фиг. 3.11.e, медианното филтриране изглажда границите на изображението в по-малка степен от всяко линейно филтриране. Механизмът на това явление е много прост и е следният. Да приемем, че апертурата на филтъра е разположена близо до границата, разделяща светлите и тъмните области на изображението, докато центърът й е разположен в тъмната зона. Тогава най-вероятно работната проба ще съдържа по-голям брой елементи с ниски стойности на яркост и следователно медианата ще бъде сред тези елементи на работната проба, които съответстват на тази област на изображението. Ситуацията е обратна, ако центърът на блендата се измести в област с по-висока яркост. Но това означава, че MF е чувствителен към промени в яркостта.