用于插入单个像素和小斑点的内置函数

时间:2016-08-31 09:17:14

标签: c++ image opencv interpolation opencv3.1

问题

是否有用于插入单个像素的内置函数? 给定正常图像为MatPoint,例如传感器或异常值的异常,是它们修复这个Point的一些功能吗? 此外,如果我连接了多个Point(让我们说一个面积小于10x10的blob)是否有可能修复它们?

尝试但不是真正的解决方案

似乎插值是在几何变换中实现的,包括调整图像大小和用borderInterpolate外推图像外的像素,但我没有发现单个像素或小像素簇的可能性。

建议heremedianBlur解决方案似乎不合适,因为它会更改整个图像。

替代

如果没有内置函数,我的想法是查看所有8个连接的周围像素,这些像素不是blob的一部分,并计算平均值或加权平均值。如果迭代地执行此操作,则应填充所有丢失或错误的像素。但是这种方法将取决于应用的顺序来校正每个像素。还有其他建议吗?

更新

这是一张图片来说明问题。将原始图像留下标记要修复的像素的轮廓。右侧显示固定像素。我希望找到一些复杂的算法来修复像素。

Left: Original image with contour with pixels to fix. Right: pixels fixed

1 个答案:

答案 0 :(得分:0)

OpenCV的内置函数inpaint执行所选像素的所需插值。只需创建一个包含要修复的所有像素的蒙版。

请参阅此处的文档:OpenCV 3.2. Description: inpaintFunction: inpaint