如何使用OpenCV模拟Matlab的medfilt2? 我有一个在Matlab编写的图像应用程序,需要用OpenCV将其转换成C++应用程序。但我似乎找不到一个简单的方法来用OpenCV模仿medfilt2
我尝试了MedianBlur,但没有产生相同的结果。有人能给我一些关于这项任务的线索吗?我觉得这应该是你需要的。 但是,如果要通过如何使用OpenCV模拟Matlab的medfilt2? 我有一个在Matlab编写的图像应用程序,需要用OpenCV将其转换成C++应用程序。但我似乎找不到一个简单的方法来用OpenCV模仿medfilt2,c++,matlab,opencv,C++,Matlab,Opencv,我尝试了MedianBlur,但没有产生相同的结果。有人能给我一些关于这项任务的线索吗?我觉得这应该是你需要的。 但是,如果要通过m窗口指定n,看起来您必须进行一个小的修改 // 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;
m
窗口指定n
,看起来您必须进行一个小的修改
// 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];
//拾取窗口元素
int k=0;
//原件:元素窗口[9];
元素窗口[n_-win*m_-win];
对于(int j=m_-win-1;j
medfilt2与cv::medianBlur
有什么不同?@Georg,我能看到的唯一方式是,Matlab允许您指定“每个输出像素包含相应像素周围m×n邻域中的中值,cv::medianBlur
使用ksize*ksize
字符。不确定medfilt2
提供该选项时是否需要通用m*n
孔径。