-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathtexture_transfer.m
More file actions
43 lines (35 loc) · 1.48 KB
/
texture_transfer.m
File metadata and controls
43 lines (35 loc) · 1.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
function [imout] = texture_transfer(texture, target, patchsize, overlap, tol)
tic
outsize = [size(target, 1) size(target, 2)];
xtrim = patchsize - (outsize(2) - ((patchsize-overlap)*floor((outsize(2)-patchsize)/(patchsize-overlap))+1+patchsize-overlap));
ytrim = patchsize - (outsize(1) - ((patchsize-overlap)*floor((outsize(1)-patchsize)/(patchsize-overlap))+1+patchsize-overlap));
outsize_ = [outsize(1)+ytrim outsize(2)+xtrim];
if(size(target,3) ==1)
imout = zeros(outsize_);
else
imout = zeros([outsize_(1:2) size(target,3)]);
end
for i=1:patchsize-overlap:outsize_(1)-patchsize+1,
for j=1:patchsize-overlap:outsize_(2)-patchsize+1,
if(i == 1 && j == 1)
pos = find_mindelta(texture, target, [1 1], patchsize, tol);
imout(i:i+patchsize-1,j:j+patchsize-1,:) = texture(pos(1):pos(1)+patchsize-1,pos(2):pos(2)+patchsize-1,:);
else
if(i > outsize(1)-patchsize+1)
i_new = outsize(1)-patchsize+1;
else
i_new = i;
end
if(j > outsize(2)-patchsize+1)
j_new = outsize(2)-patchsize+1;
else
j_new = j;
end
currentpos = [i_new j_new];
patchpos = find_mindelta(texture, target, currentpos, patchsize, tol);
imout = cut(texture, patchsize, overlap, imout, patchpos, currentpos);
end
end
end
imout = imout(1:outsize(1),1:outsize(2),:);
toc