src/Translate.jl

changeset 20
9aef75a9452d
parent 17
8ff7da7bc77d
child 23
64a3f09e5fa7
equal deleted inserted replaced
19:b28e4ee6ffc5 20:9aef75a9452d
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 #####################################################

mercurial