Visual systems and digital geometry

Concepts and mathematics


Google search terms: "hierarchical triangulation", "triangulation source code", "triangle mesh source code".

You can download C sources for Mesh generation and Delaunay triangulation here. The code does not come packaged so you will have to download each file and write your own Makefiles but it is worth looking at an actual implementation.

Formal and de-facto standards


If you are running a web app and looking to obtain the geo location from a browser in real-time, the following tutorial on HTML5 Geolocation is a very good starting point. Further reference include the Geolocation API Specification

The Google Maps API Family has a wide array of APIs that let you embed the robust functionality and everyday usefulness of Google Maps into your own website and applications, and overlay your own data on top of them.

A CSV file for IP geolocation can be downloaded from It is from 2009 so getting old but the only free downloadable library I found so far.

Tools and datasets

There seems to be some interesting projects with source code related to video watermarking and feature extractions so I went about to try to build them from a source repository whenever possible, or a source package whenever I could not find a public repository.

Projects with source code
Description Implementation License
OpenVDB Sparse Volume Processing toolkit C++ ?
OpenCV a library of programming functions for real time computer vision. C++ BSD
NMM is a flow graph based multimedia middleware.

It did not take long after downloading the source package (no repository access apparently) and running configure/make before it stopped on a compilation error (OSX 10.6.8, gcc 4.2.1).

 g++ -DHAVE_CONFIG_H -I. -I../../../nmm-2.2.0/nmm/utils \
-I../.. -DINSTALL_PREFIX=\"*siteTop*/install\" \
-DINSTALL_PKGDATADIR=\"*siteTop*/install/share/nmm\" \
-DINSTALL_LIBDIR=\"*siteTop*/install/lib\" \
-DINSTALL_LOCALEDIR=\"*siteTop*/install/share/nmm/locale\" \
-O2 -Wall -W -Wpointer-arith -Wwrite-strings -fno-check-new \
-fexceptions -MT NamedObject_Linux.lo -MD -MP -MF .deps/NamedObject_Linux.Tpo \
-c ../../../nmm-2.2.0/nmm/utils/NamedObject_Linux.cpp  -fno-common -DPIC \
-o .libs/NamedObject_Linux.o
../../../nmm-2.2.0/nmm/utils/NamedObject_Linux.cpp:25:37: \
error: nmm/utils/NamedObject.hpp: No such file or directory
../../../nmm-2.2.0/nmm/utils/NamedObject_Linux.cpp:26:35: \
error: nmm/utils/NMMConfig.hpp: No such file or directory
../../../nmm-2.2.0/nmm/utils/NamedObject_Linux.cpp:27:41: \
error: nmm/utils/directory_utils.hpp: No such file or directory
../../../nmm-2.2.0/nmm/utils/NamedObject_Linux.cpp:37:30: \
error: nmm/nmm_prefix.hpp: No such file or directory
../../../nmm-2.2.0/nmm/utils/NamedObject_Linux.cpp:417:30: \
error: nmm/nmm_suffix.hpp: No such file or directory


pHash is perceptual hash library used to identity audio and video stream.

Despite what is written in the documentation, defining LDFLAGS in the shell environment won't help. It gets overwritten early on without regards to its previous value. Looking through the configure script, CFLAGS seems OK to achieve the purpose of defining the library search path so that is what I did. The configure script still complains it does not find libavcodec but this time a look at config.log shows that the problem is another missing link-time library for av_malloc, etc. That is a symptom that configure looks for dynamic libraries and thus I had to figure out how to pick those over the static version when both are installed on a local system. Once the configure finishes, apparently happily, it did not take long before compilation failed.

libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../../pHash-0.9.4/src -I.. \
-LbuildTop/lib -LinstallLib \
-D_THREAD_SAFE -I/usr/local/include -O2 -ffast-math -O3 -MT pHash.lo \
-MD -MP -MF .deps/pHash.Tpo -c ../../pHash-0.9.4/src/pHash.cpp  \
-fno-common -DPIC -o .libs/pHash.o
In file included from ../../pHash-0.9.4/src/pHash.cpp:25:
../../pHash-0.9.4/src/pHash.h:50:18: error: CImg.h: No such file or directory
In file included from ../../pHash-0.9.4/src/pHash.cpp:28:
../../pHash-0.9.4/src/cimgffmpeg.h:35:1: \
warning: "__STDC_CONSTANT_MACROS" redefined
In file included from ../../pHash-0.9.4/src/pHash.cpp:25:
../../pHash-0.9.4/src/pHash.h:43:1: \
warning: this is the location of the previous definition
In file included from ../../pHash-0.9.4/src/pHash.cpp:28:
../../pHash-0.9.4/src/cimgffmpeg.h:38:37: \
error: ./libavformat/avformat.h: No such file or directory
../../pHash-0.9.4/src/cimgffmpeg.h:39:35: \
error: ./libavcodec/avcodec.h: No such file or directory
../../pHash-0.9.4/src/cimgffmpeg.h:40:35: \
error: ./libswscale/swscale.h: No such file or directory

Research in photo retouching, a software tool for measuring how much fashion and beauty photos have been altered.