Band-Stop Filter mask на основе фильтра низких / высоких частот OpenCV

0

Я ищу способ комбинировать изображения ниже: Изображение 174551Изображение 174551

в изображение как:

Изображение 174551

То, что я делаю, пытается сделать фильтр остановки полосы с помощью масок из фильтров lowwave с фильтром butterworth. Если нет способа слияния таких масок, я опубликую свой код на маслом, так что, возможно, вы могли бы помочь мне переделать его для выполнения работы:

void Processing::lowhighpass_filter(cv::Mat &dft_Filter, int D, int n, bool highpass)
{
    dft_Filter = cv::Mat(dft_Filter.rows,dft_Filter.cols,CV_32F,cv::Scalar::all(0));

    cv::Point centre = cv::Point(dft_Filter.rows / 2, dft_Filter.cols / 2);
    double radius;

    // based on the forumla in the IP notes (p. 130 of 2009/10 version)
    for(int i = 0; i < dft_Filter.rows; i++)
    {
        for(int j = 0; j < dft_Filter.cols; j++)
        {
            radius = (double) std::sqrt(std::pow((i - centre.x), 2.0) + std::pow((double) (j - centre.y), 2.0));
            dft_Filter.at<float>(i,j) = (float) ( 1 / (1 + std::pow((double) (radius /  D),   (double) (2 * n))));
        }
    }

    if (highpass)
    {
        dft_Filter = cv::Scalar::all(1) - dft_Filter;
        //cv::imshow("highpass_filter", dft_Filter);
    }

    cv::Mat toMerge[] = {dft_Filter, dft_Filter};
    cv::merge(toMerge, 2, dft_Filter);
}

Мне нужно создать маску, как на третьем изображении, возможно, с изменяемым радиусом внутреннего и внешнего круга. Любые подсказки?

Теги:
opencv
image-processing
fft

2 ответа

2
Лучший ответ

Нормализовать первый диапазон [0: 1], затем умножить на каждый элемент между этими двумя изображениями. Не забывайте, что они должны иметь тип элемента CV_32FC или CV_64FC.

  • 0
    Это сработало, спасибо :)
0

Вам также необходимо найти радиус круга в домене FT, который позже вы назначаете нулевые значения радиусом для остановки нужной частоты. Если вы уже скорректировали свой код, поделитесь своим кодом здесь, чтобы другие люди получили код помощи.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню