是否有高效方法在最接近的非零值的像素值之间填充像素值为零 strong>,同时将其余像素保持为零不变?
为了澄清,我正在寻找那些与非零像素的最近距离低于给定值(例如4像素)的像素。
图像最初表示为uint32
整数矩阵。
在上面的例子中,彩色区域之间的所有细裂缝都应该用周围的颜色填充,而大的黑色区域应该保持不变(即例程应该在彩色区域之间绘制像素)。
我想有办法通过插值来做到这一点。在任何一种情况下,我都在寻找一种相对有效的解决方案。
答案 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
我没有测试过,因此代码可能存在一些问题。 (如果您对代码进行了更改以使其正常工作,请编辑我的答案)