以下代码描述了图像 I 的仿射变换,
T = [sx, 0, 0;...
0, sy, 0;...
0, 0, 1];
tform = maketform('affine', T);
[J,cdata,rdata] = imtransform(I,tform);
在获得变换后的图像 J 后,我想在图像 J 上找到 I(5,5) 的适当像素值。
我该怎么办?
我的代码是
function test()
sx = 0.5; sy = 1;
theta = pi/4;
Ts = [sx, 0, 0;...
0, sy, 0;...
0, 0, 1];
Tr = [cos(theta) -sin(theta) 0;...
sin(theta) cos(theta), 0; ...
0, 0, 1];
T = Ts*Tr;
I = imread('image_0002.jpg');
tform = maketform('affine', T);
[J,xdata,ydata] = imtransform(I,tform);
h = ydata(2) - ydata(1);
w = xdata(2) - xdata(1);
%%
gridOx = meshgrid(1:50:size(I,2), 1:50:size(I,1));
gridOy = meshgrid(1:50:size(I,1), 1:50:size(I,2))';
go = [gridOy(:), gridOx(:), ones(length(gridOx(:)),1)];
for i=1:size(go,1)
I = makept(I, go(i,1), go(i,2));
end
imshow(I);
%%
gt = T*go';
TL = T*[1,1,1]';
BL = T*[size(I,1), 1, 1]';
TR = T*[1, size(I,2), 1]';
BR = T*[size(I,1), size(I,2), 1]';
minr = min([TL(1), TR(1), BL(1), BR(1)]);
minc = min([TL(2), TR(2), BL(2), BR(2)]);
%%
gt = int32(round(gt));
r = gt(1,:) - minr+1;
c = gt(2,:) - minc+1;
figure,hold on;
for i=1:length(r)
J = makept(J, r(i), c(i));
plot(gt(1, i), gt(2, i));
end
figure, imshow(J);
close all;
end
function I = makept(I, r, c)
mr = max(r-2,1);
mc = max(c-2,1);
maxr = min(r+2,size(I,1));
maxc = min(c+2,size(I,2));
I(mr:maxr, mc:maxc,:) = 0;
I(mr:maxr, mc:maxc,1) = 255;
end