Skip to content

Conversation

10606
Copy link

@10606 10606 commented Nov 18, 2021

исправлен медианный фильтр
для размеров 1, 2 и 3 есть специализации: GMedian3 теперь не нужен

@GyverLibs
Copy link
Owner

Омагад, выглядит стрёмно, мы такое не проходили) оно оптимальнее реализовано с точки зрения компиляции, версия для 4+ размера?

@10606
Copy link
Author

10606 commented Nov 18, 2021

теперь оно оптимизировано для размеров 1, 2, 3 и правильно работает для остальных, для больших размеров надо писать деревья поиска

@10606
Copy link
Author

10606 commented Nov 18, 2021

реализацию на дереве лучше использовать для больших size (> 20)

@GyverLibs
Copy link
Owner

Всё чётко? могу мержить?

@10606
Copy link
Author

10606 commented Nov 18, 2021

ну я потестил немного))

@10606
Copy link
Author

10606 commented Nov 18, 2021

Всё чётко? могу мержить?
я еще потестил, думаю можно

@10606
Copy link
Author

10606 commented Nov 19, 2021

если величина почти без шума, то дерево будет работать долго, тут пригодится следующая структура:

template <typename T>
struct value_rand
{
    value_rand (T _value = T()) :
        value(std::move(_value))
    {
        static uint8_t generator = 123;
        rnd = generator;
        generator = (generator * 17 + 12);
    }

    bool operator < (value_rand const & other)
    {
        if (value == other.value)
            return rnd < other.rnd;
        return value < other.value;
    }
    
    bool operator == (value_rand const & other)
    {
        return (value == other.value) && (rnd == other.rnd);
    }
    
    operator T ()
    {
        return value;
    }
    
    T value;
    uint8_t rnd;
};


GMedian_tree <value_rand <float>, 51> f;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants