This project deals with the problem of recognizing objects in images. The idea is that you have a model of a known object and want to determine if that object is present in a given image. Both the model and the image are graphs, so the problem reduces to determining if there is a subgraph isomorphism from the object graph to the image graph (for exact matches) and to finding the least-error mapping (for similarity matches).
Your program will input two nondirected graphs (from a file):
GM represents a structural model of an object that may appear in an image, and GD represents a structural description of the image itself.
Model Graph Name (character string)
NVM (number of nodes of VM)
NEM (number of edges of EM)
NEM pairs of integers (the edges of EM)
Image Graph Name (character string)
NVD (number of nodes of VD)
NVE (number of edges of ED)
NED pairs of integers (the edges of ED)
The output for Part I for this small problem would be:
ISOMORPHISM: (1,2)(2,3)(3,5)
ISOMORPHISM: (1,2)(2,5)(3,3)
ISOMORPHISM: (1,3)(2,5)(3,2)
ISOMORPHISM: (1,3)(2,2)(3,5)
ISOMORPHISM: (1,5)(2,2)(3,3)
ISOMORPHISM: (1,5)(2,3)(3,2)
Note that this tiny problem has so many isomorphisms, because the model graph is a tiny and symmetric structure, so there are 6 ways it can be mapped to the image graph. (Try drawing the 2 graphs.) The test data sets will not always have so many possibilities.
Test graphs and their pictures can be found here. Test Part I on all four data sets. Test Part II as follows. For the test1 data set, remove edge (5,9) from GD and run it on the modified set. For test2, run it as is, so it should find an isomorphism which will have zero error. For test3, remove edges (1,2) and (3,4). For test4, run it as is.
Extra Credit up to 15% can be earned by adding intelligence to the searches and/or trying other search methods and comparing the results.