From 32ea1a5f3b8f0ddbb61170c9ce328f5cbe96a79e Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Thu, 25 Jul 2013 21:56:39 +0200 Subject: [PATCH] Initial commit. --- find-pairwise-distance.cpp | 59 ++++++++++++++++++++++++++++++++++++++ make-gif.sh | 5 ++++ 2 files changed, 64 insertions(+) create mode 100644 find-pairwise-distance.cpp create mode 100755 make-gif.sh diff --git a/find-pairwise-distance.cpp b/find-pairwise-distance.cpp new file mode 100644 index 0000000..b6d01fa --- /dev/null +++ b/find-pairwise-distance.cpp @@ -0,0 +1,59 @@ +#include +#include +#include + +#define FROM 1 +#define TO 600 +#define WIDTH 640 +#define HEIGHT 360 +#define HEADER 15 + +#define ROI_X_FROM 261 +#define ROI_X_TO (261+312) +#define ROI_Y_FROM 42 +#define ROI_Y_TO (42+246) + +std::map pix; + +int main(void) +{ + for (int i = FROM; i < TO; ++i) { + char filename[256]; + sprintf(filename, "%08d.ppm", i); + FILE *fp = fopen(filename, "rb"); + if (fp == NULL) { + perror(filename); + exit(1); + } + + fprintf(stderr, "Reading %s...\n", filename); + + char *ptr = new char[WIDTH * HEIGHT * 3]; + fseek(fp, HEADER, SEEK_SET); + + if (fread(ptr, WIDTH * HEIGHT * 3, 1, fp) != 1) { + fprintf(stderr, "%s: Short read\n", filename); + exit(1); + } + + pix[i] = ptr; + } + + for (int i = FROM; i < TO; ++i) { + for (int j = FROM; j < TO; ++j) { + const char *ptri = pix[i]; + const char *ptrj = pix[j]; + + int sumdiff = 0; + for (int y = ROI_Y_FROM; y < ROI_Y_TO; ++y) { + for (int x = ROI_X_FROM; x < ROI_X_TO; ++x) { + for (int c = 0; c < 3; ++c) { + sumdiff += abs(ptri[(y * WIDTH + x) * 3 + c] - ptrj[(y * WIDTH + x) * 3 + c]); + } + } + } + + printf("%d %d %d\n", i, j, sumdiff); + } + } +} diff --git a/make-gif.sh b/make-gif.sh new file mode 100755 index 0000000..9130ae2 --- /dev/null +++ b/make-gif.sh @@ -0,0 +1,5 @@ +FROM=`expr $1 + 1` +TO=`expr $2 + 1` + +convert -layers OptimizePlus -delay 2 -loop 0 $( for I in $( seq $FROM $TO ); do printf "%08d.ppm\n" $I; done ) foo.gif + -- 2.39.2