Matlab で記述されたイメージング アプリケーションがあり、OpenCV を使用して C++ アプリに変換する必要があります。しかし、OpenCV で medfilt2 を模倣する簡単な方法を見つけることができないようです。
MedianBlur を試しましたが、同じ結果にはなりませんでした。誰でもこのタスクの手がかりを教えてもらえますか?
このリンクには必要なものが含まれているように思われます。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];