首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >算法,它可以去除离群点,但不会模糊图像的其他部分。

算法,它可以去除离群点,但不会模糊图像的其他部分。
EN

Stack Overflow用户
提问于 2015-06-17 14:40:06
回答 1查看 1.6K关注 0票数 1

是否有任何算法,可以消除离群点,但不会模糊其他部分的图像?

例如,当我们使用opencv中的cv::StereoBM/SBGMcv::gpu::StereoConstantSpaceBP时,我们就可以有异常值,如相关问题opencv sgbm在对象边缘生成异常值所示,我们也可以在具有相似颜色的图像局部区域获得很大的强度爆发(强变化):

还有很多其他案件..。

最简单的解决方案是使用cv::medianBlur(),但它将平滑所有图像,而不仅仅是异常值:中值滤波示例视频

是否有任何算法只平滑离群值,而不影响图像的其余部分?

还有什么比这个更好的吗?

代码语言:javascript
复制
// 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
EN

回答 1

Stack Overflow用户

发布于 2015-06-17 18:13:40

也许你是在找双边过滤器?

OpenCV说:

我们解释了一些滤波器,其主要目标是平滑输入图像。然而,有时滤波器不仅可以消除噪声,还可以平滑边缘。为了避免这种情况(至少在一定程度上),我们可以使用双边过滤器。

OpenCV有一个内置的:http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=bilateralfilter#bilateralfilter

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30894835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档