예제 #1
0
파일: gen.cpp 프로젝트: a1k0n/texturesynth
 void init(int offset) {
   for(int j=offset;j<dstim->h;j++)
     for(int i=offset;i<dstim->w;i++) {
       int x = rand()%srcim->w;
       int y = rand()%srcim->h;
       dstz->p(i,j) = srcim->ij_to_idx(x,y);
       x = rand()%srcim->w;
       y = rand()%srcim->h;
       //dsto->p(i,j) = srcim->ij_to_idx(x,y);
       dstim->p(i,j) = srcim->p(x,y);
     }
 }
예제 #2
0
파일: gen.cpp 프로젝트: a1k0n/texturesynth
  void analyze_srcimg()
  {
    printf("analyzing source img..."); fflush(stdout);
    srck = new Kcoherence<K>[srcim->w*srcim->h];
    int inset = srcwrap ? 0 : Nsize;
    for(int j=inset;j<srcim->h-inset;j++)
      for(int i=inset;i<srcim->w-inset;i++) {
        int idx = srcim->ij_to_idx(i,j);
        srck[idx] = ::nn_search(srcim, i,j, Nsize, srcwrap);
#if 0
        printf("%d: ", idx);
        for(int k=0;k<srck[idx].n;k++) {
          printf("%d(%d)%s", srck[idx]._idx[k], srck[idx]._err[k], k==K-1?"":",");
        }
        printf("\n");
#endif
      }
    printf("done\n");
  }
예제 #3
0
파일: gen.cpp 프로젝트: a1k0n/texturesynth
 // nearest neighbor search, using a given coherence set
 void nn_search(Img *destim, int di, int dj, const Kcoherence<K> &kset,
                int offx, int offy,
                unsigned &bestdiff,unsigned &bestidx)
 {
   for(int k=0;k<kset.n;k++) {
     int i,j;
     srcim->idx_to_ij(kset[k],i,j);
     i = srcim->wrapw(i+offx);
     j = srcim->wraph(j+offy);
     if(!srcwrap && (i<Nsize || i>=srcim->w-Nsize))
       continue;
     if(!srcwrap && (j<Nsize || j>=srcim->h-Nsize))
       continue;
     unsigned diff = neighbor_diff(destim, srcim, di,dj, i,j, Nsize);
     if(diff < bestdiff) {
       bestdiff = diff;
       bestidx = srcim->ij_to_idx(i,j);
     }
   }
 }