2012-01-18

Filtr Nearest Neighbour

Filtr ten nie w zasadzie filtrem. Dla wartości zero zwraca jeden, dla pozostałych zero. Ma charakter impulsu. Promień może być dowolnie mały ale większy od zera, ustawiłem go na 0.001. Ze względu na charakter filtra zablokowałem jego używanie dla resamplowania - nie ma to sensu. Możemy go tylko wykorzystać w postporcesingu podczas zmiany rozdzielczości.

Dla jasności przy pomniejszaniu z źródła branych jest dokładnie tyle pikseli ile ma obraz docelowy. Podczas powiększania zachowuje się on tak jak box.

public class NearestNeighbourFilter : Filter
{
    public override double Ray
    {
        get
        {
            return 0.001;
        }
    }

    public override double Evaluate(double a_value)
    {
        if (a_value.IsAlmostEquals(0))
            return 1; // TODO: mniejsze.
        else
            return 0;
    }
}

Ponieważ nie jest to filtr w pełnym tego sensie, do procedury obliczania wag musiałem dodać małą poprawkę, tak by dla tego filtra zawsze generował się impuls.

Brak komentarzy:

Prześlij komentarz