问题
我有一个图像序列,表示我想清理的深度信息。有一些异常值(强度低于 25 的值,在 0-255 范围内),我想用可接受的替代值填充它们(定位于该特定区域的平均值可能是一个很好的猜测)。
有人能看到一个简单的方法吗?我尝试使用中值过滤器(过滤器大小为 10)用 NaN 替换不想要的值,但它确实使情况恶化,而是通过用一般平均值替换它们来改善情况。
PS有人已经建议我使用快速小波重建,但我真的不知道从哪里开始......
已实施的解决方案(到目前为止)
我实施的解决方案(在阅读tmpearceinpaint_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});