Changeset 2288 for research


Ignore:
Timestamp:
Apr 16, 2008, 12:11:38 AM (12 years ago)
Author:
Sam Hocevar
Message:
  • Add mode 8, for the very first graphic in the paper.
  • Add results for mode 8 in part0/lena-values.txt.
  • Make the bytecode version use less memory.
Location:
research/2008-displacement
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • research/2008-displacement/README

    r2286 r2288  
    1616
    1717# Get phase 3 and phase 4 stuff
    18 ssh canard.zoy.org "cd test-20080329; tar cz *raster.txt *serp.txt" | tar xz
     18# .. from canard
     19ssh canard.zoy.org "cd test-20080329; tar cz *raster.txt" | tar xz
     20ssh canard.zoy.org "cd test-20080329; tar cz *serp.txt" | tar xz
    1921for x in *-raster.txt; do y="$x"; y="${y%%-raster.txt}"; y="${y%%.tiff}"; y="${y##usc-sipi}"; \mv "$x" part3/"$y".txt; done
    2022for x in *-serp.txt; do y="$x"; y="${y%%-serp.txt}"; y="${y%%.tiff}"; y="${y##usc-sipi}"; \mv "$x" part4/"$y".txt; done
     23# .. from poulet (cpushare)
     24scp poulet.zoy.org:cpushare/'test*-*.txt' .
     25for f in test6-*.txt; do grep '###' $f|cut -f2 -d'`'|cut -f1 -d"'"|tr / .|while read i ; do sed -ne '/`'$i'/,/limit/p' $f | cut -b61- >| part3/$(echo $i | cut -f5 -d.).txt ; done; done; rm -f test6-*.txt
     26for f in test7-*.txt; do grep '###' $f|cut -f2 -d'`'|cut -f1 -d"'"|tr / .|while read i ; do sed -ne '/`'$i'/,/limit/p' $f | cut -b61- >| part4/$(echo $i | cut -f5 -d.).txt ; done; done; rm -f test7-*.txt
    2127
    2228# Condorcet voting for part 3 and 4
     
    3844cat part4/aerials2.1.01.txt | grep K | while read x k y ; do grep $k part4/* | awk '{ dx+=$10; dy+=$12; n+=1 } END { print dx/n, dy/n }' | read dx dy; echo "$k $(grep $k part4/* | awk 'BEGIN { dx='$dx'; dy='$dy' } { x=dx-$10; y=dy-$12; t+=2.^-5*(x*x+y*y); a+=t*$8; n+=t } END { print a/n, n }')"; done | sort -nk2 | head -20
    3945
     46# Plot lena displacement
     47set contour
     48unset surface
     49set view 0,0
     50set cntrparam levels discrete 0.31, 0.35, 0.42, 0.52, 0.7, 1, 1.5
     51set xrange [-1:1]
     52set yrange [1:-1]
     53set mxtics 2
     54set mytics 2
     55set size square
     56set xzeroaxis
     57set yzeroaxis
     58set xlabel "dx" font "Italic,32"
     59splot 'part0/lena-values.txt' with lines
     60
     61
     62#set border 0
     63set style line 1 lt 1 lw 1
     64set style line 2 lt 2 lw 1
     65set style line 3 lt 3 lw 1
     66set style line 4 lt 6 lw 1
     67set style line 5 lt 1 lw 3
     68set style line 6 lt 2 lw 3
     69set style line 7 lt 3 lw 3
     70set style line 8 lt 6 lw 3
    4071###
    4172###
  • research/2008-displacement/main-cpushare

    r2287 r2288  
    1717    print 'Usage: %s <buy_order.cpu> -<mode> [image list]' % (sys.argv[0],)
    1818    sys.exit(-1)
    19 mode = sys.argv[2][1]
     19mode = sys.argv[2]
    2020done = 0
    2121source = sys.argv[3:]
     
    3434
    3535    def start(self):
    36         global todo, source
     36        global mode, todo, source
     37        gd.gdMaxColors = 256 * 256 * 256
     38        while todo < len(source):
     39            try:
     40                self.index = todo
     41                im = gd.image(source[self.index])
     42                break
     43            except:
     44                todo += 1
     45                self.result = "Error\n"
    3746        if todo >= len(source):
    38             return # We're finished... FIXME: is the transaction kept stuck?
    39         self.index = todo
     47            return # We're finished... FIXME: isn't the transaction stuck?
    4048        todo += 1
    41         gd.gdMaxColors = 256 * 256 * 256
    42         im = gd.image(source[self.index])
    4349        # Send argument count
    4450        self.protocol.sendString(PROTO_SECCOMP_FORWARD + chr(3))
     
    4652        msg = chr(3)
    4753        msg += "bytecode\0"
    48         msg += "-1\0"
     54        msg += mode + "\0"
    4955        msg += source[self.index] + "\0"
    5056        self.protocol.sendString(PROTO_SECCOMP_FORWARD + msg)
  • research/2008-displacement/main.c

    r2287 r2288  
    2525
    2626#ifdef BYTECODE
    27 #   define MAXIMAGES 128
     27#   define MAXIMAGES 6
    2828static int slots[MAXIMAGES];
    2929static double slotbuf[MAXIMAGES * MAXWIDTH * MAXHEIGHT];
     
    383383{
    384384    double *floats;
    385     int x, y;
     385    int w, h, x, y;
    386386
    387387#ifdef BYTECODE
     
    390390    if(sys_read(0, &c, 1) != 1)
    391391        sys_exit(-5);
    392     WIDTH = ((int)(unsigned char)c) << 8;
     392    w = ((int)(unsigned char)c) << 8;
    393393    if(sys_read(0, &c, 1) != 1)
    394394        sys_exit(-5);
    395     WIDTH |= (int)(unsigned char)c;
     395    w |= (int)(unsigned char)c;
    396396
    397397    if(sys_read(0, &c, 1) != 1)
    398398        sys_exit(-5);
    399     HEIGHT = ((int)(unsigned char)c) << 8;
     399    h = ((int)(unsigned char)c) << 8;
    400400    if(sys_read(0, &c, 1) != 1)
    401401        sys_exit(-5);
    402     HEIGHT |= (int)(unsigned char)c;
     402    h |= (int)(unsigned char)c;
     403#else
     404    SDL_Surface *tmp, *surface;
     405    uint32_t *pixels;
     406
     407    tmp = IMG_Load(name);
     408    if(!tmp)
     409        return NULL;
     410
     411    w = tmp->w;
     412    h = tmp->h;
     413#endif
     414
     415    WIDTH = w > MAXWIDTH ? MAXWIDTH : w;
     416    HEIGHT = h > MAXHEIGHT ? MAXHEIGHT : h;
    403417
    404418    floats = new();
     
    406420        return NULL;
    407421
    408     for(y = 0; y < HEIGHT; y++)
    409     for(x = 0; x < WIDTH; x++)
     422#ifdef BYTECODE
     423    for(y = 0; y < h; y++)
     424    for(x = 0; x < w; x++)
    410425    {
    411426        if(sys_read(0, &c, 1) != 1)
    412427            sys_exit(-5);
     428        if(x >= WIDTH || y >= HEIGHT)
     429            continue;
    413430        put(floats, x, y, (double)(unsigned char)c / 0xff);
    414     }   
     431    }
    415432#else
    416     SDL_Surface *tmp, *surface;
    417     uint32_t *pixels;
    418 
    419     tmp = IMG_Load(name);
    420     if(!tmp)
    421         return NULL;
    422 
    423     WIDTH = tmp->w > MAXWIDTH ? MAXWIDTH : tmp->w;
    424     HEIGHT = tmp->h > MAXHEIGHT ? MAXHEIGHT : tmp->h;
    425     floats = new();
    426     if(!floats)
    427         return NULL;
    428 
    429433    surface = SDL_CreateRGBSurface(SDL_SWSURFACE, WIDTH, HEIGHT, 32,
    430434                                   0xff0000, 0xff00, 0xff, 0x0);
     
    859863    msg(" -6 <src>           restrained (a,b,c,d) ED kernel analysis on src\n");
    860864    msg(" -7 <src>           restrained displacement study on src\n");
     865    msg(" -8 <src>           displacement values on src\n");
    861866}
    862867
     
    891896        {
    892897            double *dest = ed(src, false, 7, 0,
    893                                 0, 3, 5, 1, 0,
    894                                 0, 0, 0, 0, 0);
     898                                 0, 3, 5, 1, 0,
     899                                 0, 0, 0, 0, 0);
    895900            study(src, dest, 1.2, 0.001, .16, .28);
    896901            del(dest);
     
    10681073        break;
    10691074
     1075        case 8:
     1076        {
     1077            const int STEP = 32;
     1078            double mat[NN][NN];
     1079            double *dest = ed(src, false, 7, 0,
     1080                                 0, 3, 5, 1, 0,
     1081                                 0, 0, 0, 0, 0);
     1082            double *tmp, *tmp2;
     1083            int dx, dy;
     1084
     1085            makegauss(mat, 1.2, 0., 0.);
     1086            tmp = gauss(src, mat);
     1087            for(dy = 0; dy <= STEP; dy++)
     1088            {
     1089                for(dx = 0; dx <= STEP; dx++)
     1090                {
     1091                    double fy = 2. / STEP * (dy - STEP / 2.);
     1092                    double fx = 2. / STEP * (dx - STEP / 2.);
     1093
     1094                    makegauss(mat, 1.2, fx, fy);
     1095                    tmp2 = gauss(dest, mat);
     1096                    msg("%g %g %g\n", fy, fx, 1000. * dist(tmp, tmp2, 1.));
     1097                    del(tmp2);
     1098                }
     1099                msg("\n");
     1100            }
     1101            del(tmp);
     1102            del(dest);
     1103            del(src);
     1104        }
     1105        break;
     1106
    10701107#if 0
    10711108    tmp = ed(src, 7, 0, 0, 3, 5, 1, 0, 0, 0, 0, 0, 0);
     
    10991136
    11001137#if 0
    1101 #   define STEP 32
    1102     dest = ed(src, 7, 0, 0, 3, 5, 1, 0, 0, 0, 0, 0, 0);
    1103     makegauss(mat, 1.2, 0., 0.);
    1104     tmp = gauss(src, mat);
    1105     for(dy = 0; dy < STEP; dy++)
    1106     {
    1107         for(dx = 0; dx < STEP; dx++)
    1108         {
    1109             double fy = 2. / STEP * (dy - STEP / 2.);
    1110             double fx = 2. / STEP * (dx - STEP / 2.);
    1111 
    1112             makegauss(mat, 1.2, fx, fy);
    1113             tmp2 = gauss(dest, mat);
    1114             msg("%g %g %g\n", fy, fx, 1000. * dist(tmp, tmp2, 1.));
    1115             fflush(stdout);
    1116             del(tmp2);
    1117         }
    1118         msg("\n");
    1119     }
    11201138
    11211139    save(dest, "output.bmp");
Note: See TracChangeset for help on using the changeset viewer.