31 #define omp_get_thread_num() 0
40 #define MAX_DIST FLT_MAX
55 float tol,
Image * position_map,
Image * synth_map,
59 long double *patch_normsH, *patch_normsV, *patch_normsL;
63 int ii, jj, inc_s, h_s, w_s, w_o;
74 out_im =
initialize(src_im, wp, wo, p_row, p_col,&patch_src);
85 fft_size = h_s*((int) (w_s/2) + 1);
93 patch_normsH = (
long double *) malloc(inc_s*
sizeof(
long double));
95 patch_normsV = (
long double *) malloc(inc_s*
sizeof(
long double));
97 patch_normsL = (
long double *) malloc(inc_s*
sizeof(
long double));
100 patch_normsV, patch_normsL, wp, wo);
103 fftwl_complex *fft_srcR, *fft_srcG, *fft_srcB;
104 fft_srcR = (fftwl_complex*) fftwl_malloc(
sizeof(fftwl_complex)*(fft_size));
105 fft_srcG = (fftwl_complex*) fftwl_malloc(
sizeof(fftwl_complex)*(fft_size));
106 fft_srcB = (fftwl_complex*) fftwl_malloc(
sizeof(fftwl_complex)*(fft_size));
108 im_fft(src_im.
img + inc_s, fft_srcG, h_s, w_s);
109 im_fft(src_im.
img + 2*inc_s, fft_srcB, h_s, w_s);
122 for(jj=0; jj<(int) (Nr + 2*(Nc-1) -1)*step_size + 1; jj+=step_size)
133 for(ii=0; ii<(int) (Nc-1)*step_size+1; ii+=step_size)
136 if ((ii>0 || jj>0) && (jj-2*ii >= 0) && (jj-2*ii < w_o-wp+1))
151 patch_normsV, patch_normsL, fft_srcR, fft_srcG,
152 fft_srcB, h_dict, w_dict, &patch_pos, tol);
156 wo, wp, &temp, patch_pos);
160 &temp, wp, boundary_mask);
163 blend_patch(boundary_mask, &out_im, src_im, patch_pos,
166 free(boundary_mask.
img);
177 fftwl_free(fft_srcR);
178 fftwl_free(fft_srcG);
179 fftwl_free(fft_srcB);