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