用于双矩阵的OpenCV中值​​滤波器

时间:2014-10-07 12:56:44

标签: c++ opencv filter median

我在C ++项目中使用OpenCV。我从立体视觉相机获得了深度图,并想用中值滤波器对其进行滤波。我的深度图是cv::Mat_< double>。 (我无法更改格式,只能将其转换)。

是否有可能实现cv::Mat_< double>输入的中值滤波器的功能?

medianBlur(cv::Mat_<double> src, cv::Mat_<double> dst, int ksize)

在文档中,我只找到了对CV_8UCV_16UCV_32F图片的支持。 http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=medianblur#medianblur

OpenCV库中是否有我的问题的解决方案。 我应该制作自己的中值滤波器吗?如果必须,你有什么好的参考吗?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

cv::Mat_<double> input;
cv::Mat_<double> output; // or  cv::Mat output;
cv::medianBlur(input, output, 3);

PS:你必须确保int ksize只能输入3或5(双垫)。如documentation中所述:

  

参数:
   src - 输入1通道,3通道或4通道图像; ksize为3或5时,图片深度应为CV_8U, CV_16UCV_32F,对于较大的光圈尺寸,它只能是CV_8U

     

...

     

ksize - 光圈线性大小; 必须是奇数且大于1,例如:3,5,7 ......