Filtracja logiczna
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.
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 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.

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

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ż
- filtracja obrazów (cyfrowe przetwarzanie sygnałów)