问题
我有一个表示深度信息的图像序列,我想要清理一下。 其中有一些异常值(强度低于25,范围为0-255),我希望用可接受的替代方法来填充它们(在该特定区域局部平均值可能是一个好猜测)。
有人知道简单的方法吗?我尝试使用中值滤波器(滤波器大小为10),将不需要的值替换为NaN,但情况变得更糟了,而用通用平均值替换它们可以改善情况。
P.S. 有人已经建议我使用快速小波重构,但我不知道从哪里开始......
已实现的解决方案(到目前为止)
我实现的解决方案(在阅读tmpearce建议的inpaint_nans
之前)是:
- 复制原始图像;
- 使用通用平均值填充无效像素;
- 使用半径为10的圆形磁盘进行模糊处理;
- 将原始图像中的无效值替换为第3步得到的值。
- 运行大小为10的中值滤波器。
img2 = img;
img2(img < .005) = mean(img(:));
H = fspecial('disk',10);
img3 = imfilter(img2,H,'symmetric');
img4 = img;
img4(img < .3) = img3(img < .3);
filterSize = 10;
padopt = {'zeros','indexed','symmetric'};
IMG = medfilt2(img4, [1 1]*filterSize, padopt{p});