Filtracja logiczna

Z testwiki
Wersja z dnia 18:30, 9 sty 2025 autorstwa 213.184.17.126 (dyskusja) (,)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacji Przejdź do wyszukiwania

Filtracja logiczna (Szablon:Ang.) – 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 (Szablon:Mvar, Szablon:Mvar, Szablon:Mvar, Szablon:Mvar) sąsiadujące z punktem centralnym Szablon:Mvar, który jest przetwarzany.

[baXdc],

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): X={ajeśli a=dXdla pozostałych warunków .

2): X={bjeśli b=cXdla pozostałych warunków .

3): X={ajeśli a=b=c=dXdla pozostałych warunków .

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

X={adla |ad|δX dla pozostałych warunków .

Gdzie Szablon:Mvar jest punktem obrazu wyjściowego (punktem, który powstanie po przefiltrowaniu) odpowiadającym punktowi Szablon:Mvar obrazu wejściowego (punktowi poddanemu filtracji); Szablon:Mvar, Szablon:Mvar, Szablon:Mvar i Szablon:Mvar są punktami otoczenia względem którego dokonuje się operacji logicznej na punkcie Szablon:Mvar; 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ż