在MATLAB中修复具有最接近颜色的区域之间的像素

时间:2011-10-29 00:03:32

标签: matlab

是否有高效方法在最接近的非零值像素值之间填充像素值为零 strong>,同时将其余像素保持为零不变?

为了澄清,我正在寻找那些与非零像素的最近距离低于给定值(例如4像素)的像素。

图像最初表示为uint32整数矩阵。

enter image description here

在上面的例子中,彩色区域之间的所有细裂缝都应该用周围的颜色填充,而大的黑色区域应该保持不变(即例程应该在彩色区域之间绘制像素)。

我想有办法通过插值来做到这一点。在任何一种情况下,我都在寻找一种相对有效的解决方案。

1 个答案:

答案 0 :(得分:1)

给定输入矩阵A

b = imclose(A==0,ones(3,3)) %only the big zero regions
c = imdilate(A,ones(3,3)) %inpainting all neighboring pixels
d = zeros(size(A));
d(b==0) = c(b==0); %copy the inpainting only in places where there are no big regions

我没有测试过,因此代码可能存在一些问题。 (如果您对代码进行了更改以使其正常工作,请编辑我的答案)