Projekt polega na zbudowaniu biblioteki w c++ do przetwarzania sygnałów. Biblioteka ma być udostępniona jako moduł pythonowy przy użyciu biblioteki pybind11.
W celu realizacji projektu należy przygotować środowisko pracy. Niezbędne będą:
- CMake
- Kompilator (MSVC2019 na Windowsie, g++ na linuksie)
- git (git bash/ git for desktop na windowsie, git na linuksie)
- Python (najlepiej miniconda)
Ubuntu
sudo apt install build-essential cmake git
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh
Jako punkt wyjściowy najwygodniej jest pobrać przykład udostępniony przez autorów pybind11:
git clone https://github.com/pybind/scikit_build_example
Podstawowe funkcjonalności do zaimplementowania:
- Wizualizacja sygnału z wykorzystaniem biblioteki matplotplusplus
- DFT i transformata odwrotna
- Filtracja 1D i 2D
- Generowanie sygnałów o zadanej częstotliwości (sin, cos, prostokątny, piłokształtny)
Dodatkowo:
- Pochodna sygnału
- Wykrywanie krawędzi (korzystajac z filtraci)
- Rozmycie gaussa (korzystajac z filtracji)
- Wykrywanie piku w sygnale dowolną metodą
- Progowanie sygnału (1 dla > progu, 0 dla mniejszego)
- Usuwanie niskich częstotliwości z sygnału (korzystajac z DFT)
- Usuwanie wysokich częstotliwości z sygnału (korzystajac z DFT)
- Zaszumianie sygnału (dodawanie sygnału losowego)
- Liczenie korelacji dwóch sygnałów
- Liczenie autokorelacji sygnału
- Interpolacja dwuliniowa na siatce