3

我有一个用 Matlab 编写的成像应用程序,需要使用 OpenCV 将其转换为 C++ 应用程序。但我似乎找不到一种简单的方法来用 OpenCV 模仿 medfilt2。

我尝试了 MedianBlur,但没有产生相同的结果。谁能给我这个任务的任何线索?

4

1 回答 1

4

在我看来,这个链接应该有你需要的东西。n但是,如果您想指定bym窗口,您似乎必须进行一些小的修改。

     //   Pick up window elements
     int k = 0;
     // Original: element window[9];
     element window[n_win*m_win];
     for (int j = m_win - 1; j < m_win; ++j)
        for (int i = n_win - 1; i < n_win; ++i)
           window[k++] = image[j * N + i];
     //   Order elements (only half of them)
     // make sure (n_win*m_win)/2 is odd :-)
     for (int j = 0; j < (n_win*m_win)/2; ++j)
     {
        //   Find position of minimum element
        int min = j;
        for (int l = j + 1; l < n_win*m_win; ++l)
        if (window[l] < window[min])
           min = l;
        //   Put found minimum element in its place
        const element temp = window[j];
        window[j] = window[min];
        window[min] = temp;
     }
     //   Get result - the middle element
     result[(m - 1) * (N - 2) + n - 1] = window[4];
于 2012-09-21T17:55:08.707 回答