im转换为inf作为FillValues

时间:2013-04-27 15:28:16

标签: matlab image-processing

我有一个代码,用X轴偏移量预先形成图像的平移。 我希望当图像超出界限时,强度值将为inf。

所以我预先形成了这样的代码。

t = maketform('affine',[1 0 ; 0 1; -offset 0]);
origbounds = [1 1; H W];
Im2 = imtransform(Img,t,'XData',origbounds(:,2)','YData',origbounds(:,1)', 'FillValues', inf);

我得到了Im2充满NaN的第一个

我只是想要当偏移量大于Img的宽度时用inf填充最后一个

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为你看到了一个interpolation神器。尝试使用“最近”邻居插值而不是默认的“双线性”。

示例:

interpMethod = 'nearest';    %# 'bicubic', 'bilinear', 'nearest'
fillval = Inf;               %# Inf, Nan, 0.9

offset = 20;
img = im2double(imread('cameraman.tif'));
t = eye(3,2); t(3,1) = -offset;
img2 = imtransform(img, maketform('affine',t), interpMethod, ...
    'FillValues',fillval, 'XData',[1 size(img,2)], 'YData',[1 size(img,1)]);
subplot(211), imshow(img)
subplot(212), imshow(img2)

image