В настоящее время я использую функцию ниже, чтобы удалить шум из двух изображений размером (240×720). В настоящее время я вычисляю это на своем компьютере, но хотел бы реализовать это в режиме реального времени. Однако на моем компьютере эта функция приводит к значительным задержкам программы. Есть ли альтернатива удалению шума с изображения, которое может работать в режиме реального времени? Гауссово размытие возможно?
fastNlMeansDenoising(ipmOfLeftLaneRobust, ipmOfLeftLaneRobust,10,7,21);
Учитывая функцию
fastNlMeansDenoising(InputArray src, OutputArray dst, float h=3,
int templateWindowSize=7, int searchWindowSize=21 );
Когда templateWindowSize
Подходит к 1, фильтр становится коробчатым двусторонним фильтром.
Когда h
термин приближается к бесконечному, фильтр становится фильтром размытия окна.
Для обоих двух реализация является исчерпывающей.
Простая альтернатива — сначала попробовать два оптимизированных особых случая: cv::boxFilter
а также cv::bilateralBlur
,
Одним из вариантов для рассмотрения может быть использование версии CUDA fastNIMeansDenoising
, поскольку он предлагает значительное ускорение при условии, что у вас приличный графический процессор (верно для большинства функций OpenCV в целом). Однако, за исключением этого, это зависит от того, с каким шумом вы имеете дело, но если это, скажем, шум от соли и перца, использование функции медианного размытия обычно дает хорошие результаты. Гауссово размытие — еще один хороший вариант, если ваш шум носит более общий характер.