1

我有一个代码可以通过 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填充最后一列。

正确的方法是什么?

4

1 回答 1

0

我认为您看到的是插值伪影。尝试使用“最近”邻居插值而不是默认的“双线性”。

例子:

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)

图片

于 2013-04-27T17:16:13.267 回答