Filtracja logiczna

Z Wikipedii, wolnej encyklopedii

Filtracja logiczna (ang. logical filtration) – odmiana filtracji wykorzystywana przy cyfrowym przetwarzaniu obrazu, zazwyczaj przeprowadzana na obrazach binarnych, przyjmujących tylko jeden z dwóch możliwych stanów logicznych: prawda (1), fałsz (0). Możliwe jest również zastosowanie filtracji logicznej do innych rodzajów obrazów (np. kolorowych lub w odcieniach szarości). Należy wtedy stosować logikę wielowartościową (rozmytą) polegającą na podaniu przedziałów kiedy wartość funkcji spełnia warunek i przyjmuje wartość 1 lub nie spełnia warunku i przyjmuje wartość 0. Filtracja logiczna polega na sprawdzaniu wartości wyrażenia logicznego opisującego związki zachodzące pomiędzy pikselami z dowolnie wybranego sąsiedztwa analizowanego piksela. Najczęściej stosowana jest filtracja, w której jako otoczenie wybierane są cztery punkty (a, b, c, d) sąsiadujące z punktem centralnym X, który jest przetwarzany.

Na poszczególnym punkcie można wykonać następujące operacje logiczne:

NOT – zaprzeczenie,
AND – iloczyn logiczny,
OR – suma logiczna,
SUB – różnica logiczna,
XOR – suma rozłączna,
NXOR – równoważność logiczna.

Zdefiniowany filtr logiczny może mieć charakter zarówno kontekstowy, jak i bezkontekstowy. Najczęściej stosuje się filtry kontekstowe, w których nowa wartość danego punktu obrazu jest uzależniona od wartości danego punktu i jego otoczenia, dlatego filtracja logiczna należy głównie do grupy operacji kontekstowych. Do przetwarzania kontekstowego obrazu binarnego służą następujące formuły logiczne:

1):

2):

3):

a do konwersji obrazu monochromatycznego stosuje się filtry z podanymi przedziałami dla poszczególnych stanów logicznych np.:

Gdzie X′ jest punktem obrazu wyjściowego (punktem, który powstanie po przefiltrowaniu) odpowiadającym punktowi X obrazu wejściowego (punktowi poddanemu filtracji); a, b, c i d są punktami otoczenia względem którego dokonuje się operacji logicznej na punkcie X; a jest maksymalną wartością różnicy punktów otoczenia kiedy warunek logiczny jest jeszcze spełniony.

Równanie pierwsze (1) powoduje eliminację zakłóceń w postaci izolowanych punktów i pionowych linii (o pojedynczej grubości). Równanie drugie (2) powoduje eliminację izolowanych punktów i linii poziomych natomiast równanie trzecie (3) pozwala na eliminacje izolowanych punktów. Ostatnie równanie (4) powoduje rozmycie krawędzi obrazu.

Obraz po usunięciu linii poziomych

Przykład działania funkcji eliminacji linii poziomych i pionowych przedstawiają rysunki i funkcje w programie MATLAB przedstawione poniżej:

Obraz po usunięciu linii pionowych

Zapis algorytmu, który usuwa linie poziome w pseudokodzie:

 function B = usun_linie_poziome(A)
    if A(1, 2) == A(3, 2)
        B = A(1, 2);
    else
        B = A(2, 2);
    end;

Zapis algorytmu, który usuwa linie pionowe w pseudokodzie:

 function B = usun_linie_pionowe(A)
    if A(2, 1) == A(2, 3)
        B = A(2, 1);
    else
        B = A(2, 2);
    end;

Zobacz też[edytuj | edytuj kod]