MATLAB中最近颜色区域间像素的修复

MATLAB中最近颜色区域间像素的修复,matlab,Matlab,是否有一种有效的方法可以在具有非零值的像素之间用最近的非零值填充值为零的像素,同时保持其余像素为零不变 为了澄清,我希望修复与非零像素的最近距离小于给定值(例如4像素)的像素 图像最初表示为uint32整数矩阵 在上面的例子中,彩色区域之间的所有薄裂缝都应该用周围的颜色填充,而大的黑色区域应该保持不变(即,例行程序应该修复彩色区域之间的像素) 我想有一种方法可以通过插值来实现这一点。无论哪种情况,我都在寻找一个相对有效的解决方案。给定一个输入矩阵a: b = imclose(A==0,ones

是否有一种有效的方法可以在具有非零值的像素之间用最近的非零值填充值为零的像素,同时保持其余像素为零不变

为了澄清,我希望修复与非零像素的最近距离小于给定值(例如4像素)的像素

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

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


我想有一种方法可以通过插值来实现这一点。无论哪种情况,我都在寻找一个相对有效的解决方案。

给定一个输入矩阵
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
我还没有测试它,所以代码可能有一些问题。(如果您对代码进行了更改以使其正常工作,请编辑我的答案)