Filtracja logiczna
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.
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ż
[edytuj | edytuj kod]- filtracja obrazów (cyfrowe przetwarzanie sygnałów)