108 end |
108 end |
109 |
109 |
110 function translate_image!(x, z, u::DisplacementConstant) |
110 function translate_image!(x, z, u::DisplacementConstant) |
111 @assert(size(u)==(2,) && size(x)==size(z)) |
111 @assert(size(u)==(2,) && size(x)==size(z)) |
112 |
112 |
|
113 a, b = u[1], u[2] |
|
114 |
113 @inbounds Threads.@threads for i=1:size(x, 1) |
115 @inbounds Threads.@threads for i=1:size(x, 1) |
114 @simd for j=1:size(x, 2) |
116 @simd for j=1:size(x, 2) |
115 pt = (i - u[1], j - u[2]) |
117 x[i, j] = interpolate2d_quadrants(z, (i - a, j - b)) |
116 x[i, j] = interpolate2d_quadrants(z, pt) |
|
117 end |
118 end |
118 end |
119 end |
119 end |
120 end |
120 |
121 |
121 ###################### |
122 ###################### |
134 px = ceil(Int, max(1, vxʹ + 1) - vxʹ) |
135 px = ceil(Int, max(1, vxʹ + 1) - vxʹ) |
135 py = ceil(Int, max(1, vyʹ + 1) - vyʹ) |
136 py = ceil(Int, max(1, vyʹ + 1) - vyʹ) |
136 qx = floor(Int, min(imx, vxʹ + bx) - vxʹ) |
137 qx = floor(Int, min(imx, vxʹ + bx) - vxʹ) |
137 qy = floor(Int, min(imy, vyʹ + by) - vyʹ) |
138 qy = floor(Int, min(imy, vyʹ + by) - vyʹ) |
138 |
139 |
139 b .= 0 |
140 @inbounds begin |
|
141 b[1:px-1, :] .= 0 |
|
142 b[qx+1:end, :] .= 0 |
140 |
143 |
141 @inbounds Threads.@threads for i=px:qx |
144 Threads.@threads for i=px:qx |
142 @simd for j=py:qy |
145 b[i, 1:py-1] .= 0 |
143 b[i, j] = interpolate2d_quadrants(im, (i+vxʹ, j+vyʹ)) |
146 b[i, qy+1:end] .= 0 |
|
147 @simd for j=py:qy |
|
148 b[i, j] = interpolate2d_quadrants(im, (i+vxʹ, j+vyʹ)) |
|
149 end |
144 end |
150 end |
145 end |
151 end |
146 end |
152 end |
147 |
153 |
148 ##################################################### |
154 ##################################################### |