是否有任何算法,可以消除离群点,但不会模糊其他部分的图像?
例如,当我们使用opencv中的cv::StereoBM/SBGM或cv::gpu::StereoConstantSpaceBP时,我们就可以有异常值,如相关问题opencv sgbm在对象边缘生成异常值所示,我们也可以在具有相似颜色的图像局部区域获得很大的强度爆发(强变化):

还有很多其他案件..。
最简单的解决方案是使用cv::medianBlur(),但它将平滑所有图像,而不仅仅是异常值:中值滤波示例视频
是否有任何算法只平滑离群值,而不影响图像的其余部分?
还有什么比这个更好的吗?
// get cv::Mat src_frame ...
int outliers_size = 10;
int outliers_intensive = 100;
int ksize = outliers_size*2 + 1; // smooth all outliers smaller than 11x11
cv::Mat smoothed;
cv::medianBlur( src_frame, smoothed, ksize );
cv::Mat diff;
cv::absdiff( src_frame, smoothed, diff );
cv::Mat mask = diff > Scalar( outliers_intensive );
smoothed.copyTo( src_frame, mask );
// we have smoothed only small outliers areas in src_frame发布于 2015-06-17 18:13:40
也许你是在找双边过滤器?
OpenCV说:
我们解释了一些滤波器,其主要目标是平滑输入图像。然而,有时滤波器不仅可以消除噪声,还可以平滑边缘。为了避免这种情况(至少在一定程度上),我们可以使用双边过滤器。

OpenCV有一个内置的:http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=bilateralfilter#bilateralfilter
https://stackoverflow.com/questions/30894835
复制相似问题