我想问一个关于单通道图像插值的问题。选择单通道只是为了简单起见,否则我正在处理多通道图像。
假设有一个纯黑色背景(像素强度为0)的单通道图像,其上有一些强度值非零的像素。我想应用插值算法,用来自相邻非零强度像素的插值填充图像的整个黑色区域。
您会推荐哪种插值算法来实现适用于此问题的平滑插值?
作为输入,我们当然知道那些非黑色像素的位置及其强度。但位置有些随机(一行可能有 10 个像素,另一行只有 8 个像素)。
常规的interp2
在这里不起作用,因为您的点不是按固定间隔定位的(不是坐在网格上)。
你可以尝试TriScatteredInterp
或下载inpaint_nans
来自文件交换。
这是您的情况的解决方案TriScatteredInterp
:
function solveStackOverflowProblem()
im = imread('https://i.stack.imgur.com/lMaYR.png');
im = im(:,:,2);
[i,j] = find(im);
y = j; x = i;
indexes = sub2ind(size(im),i,j);
interpolator = TriScatteredInterp(x,y,double(im(indexes)));
[Y,X] = meshgrid( 1:size(im,2),1:size(im,1));
reconstructedImage = interpolator(X,Y);
figure;imshow(reconstructedImage/255)
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)