]> git.sesse.net Git - gifmaker/blob - find-pairwise-distance.cpp
Add a Perl script to convert the output of find-pairwise-distance to a PGM file for...
[gifmaker] / find-pairwise-distance.cpp
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <map>
4
5 #define FROM 1
6 #define TO 600
7 #define WIDTH 640
8 #define HEIGHT 360
9 #define HEADER 15
10
11 #define ROI_X_FROM 261
12 #define ROI_X_TO (261+312)
13 #define ROI_Y_FROM 42
14 #define ROI_Y_TO (42+246)
15
16 std::map<int, const char *> pix;
17
18 int main(void)
19 {
20         for (int i = FROM; i < TO; ++i) {
21                 char filename[256];
22                 sprintf(filename, "%08d.ppm", i);
23                 FILE *fp = fopen(filename, "rb");
24                 if (fp == NULL) {
25                         perror(filename);
26                         exit(1);
27                 }
28
29                 fprintf(stderr, "Reading %s...\n", filename);
30
31                 char *ptr = new char[WIDTH * HEIGHT * 3];
32                 fseek(fp, HEADER, SEEK_SET);
33
34                 if (fread(ptr, WIDTH * HEIGHT * 3, 1, fp) != 1) {
35                         fprintf(stderr, "%s: Short read\n", filename);
36                         exit(1);
37                 }
38
39                 pix[i] = ptr;
40         }
41         
42         for (int i = FROM; i < TO; ++i) {
43                 for (int j = FROM; j < TO; ++j) {
44                         const char *ptri = pix[i];
45                         const char *ptrj = pix[j];
46
47                         int sumdiff = 0;
48                         for (int y = ROI_Y_FROM; y < ROI_Y_TO; ++y) {
49                                 for (int x = ROI_X_FROM; x < ROI_X_TO; ++x) {
50                                         for (int c = 0; c < 3; ++c) {
51                                                 sumdiff += abs(ptri[(y * WIDTH + x) * 3 + c] - ptrj[(y * WIDTH + x) * 3 + c]);
52                                         }
53                                 }
54                         }
55
56                         printf("%d %d %d\n", i, j, sumdiff);
57                 }
58         }
59 }