HistogramRGB.c
. Your classes should publicly inherit from FeatureVector
and
from ImageProcessor
. To load and save your feature vector look at the way it's done in other
modules, using the MemoryBlobWriter
class.
Should this be happening concurrently you should integrate your feature matcher in isolation first, to fix any integration bugs. Once you are sure it's working the code maintainer will integrate it into the master copy of fvg.
To integrate into fvg you need to follow these instructions. First of all, open convert.cpp
in your copy of the fvg code directory. Insert into the code the relevant header file inclusion, and the
relevant string compare function. This function converts the commandline into a FeatureVector
and
a ImageProcessor
. For this code to work you will need to #define
a string to compare
against called NAME_xxx
, where xxx is your feature vectors name - the one you used in the
strcmp
. This is defined in fvg.h
in the include
directory.
That's it! Much easier than fvx was.
The following is for archive only:
You should integrate your code with the fvx program which allows you to generate and compare single feature vectors. (see below about concurrent development). You need to add new cases for your particular feature vector for the generate, compare and print attributes functionality. You should ensure that you update the help text located at the bottom of the code. Make sure you've instantiated a global (eugh!) instance of your object at the top of
fvx.c
. You will also have to update the Makefiles to include your function, by addingxxx.o
to theOBJS
andOBJSDIR
variables near the top of the file, and adding its own compile command in the same manner as the previous features in the file.
Update: The following has been updated!! Now you no longer need to implement a
separate function for each of your modules. DoItRetrieval
deals with the matching of all API compliant
modules. After adding a new line into the list box in MultiScaleGui.c
you should simply add a new
call to this for the appropriate result of the GoButtonCallback
.
The makefile will link in the latest image processing library, and it should all just work. Multiscale still
requires you to generate the feature vectors before hand, however, they are now in different directories. They should
be within ReferenceImages
and QueryImages
and the lists are in
ReferenceImages.db
and QueryImages.db
.
The following is for archive only:
Updating the Multiscale code is a simple, if somewhat ugly, task. In
Multiscale.c
, you need to copy a template of a function from, say,DoItHistogramRGB
and change the instances of it's specific classes with your own. Yes, it's nasty, but updating it could take considerable time. You then need to add a procedure call to your new function,DoItXxx
, in the GUI callback function,GoButtonCallback
. Just copy a previous line and insert your function. Now you just need to add your feature vector to the pull down list box which is defined inMultiscaleGUI.c
near the top of the code. Again, just copy a previous line, substituting your own text. Make sure you've instantiated a global (eugh!) instance of your object at the top ofMultiscale.c
.Remember: Mutliscale doesn't generate feature vectors. To run Mutliscale you need to first generate all the feature vectors with fvx into two directories (along with the original images):
CCVedImages
, andQueryImages
, which is the default location for these. Then you need to generate the filesCCVDatabase.db
andQueryDatabase.db
which contain the filenames of the original images (less the pathname), preceded by the number in the file. These are required for Multiscale to work.
Much of this process could do with re-working. See "Stuff that'd be nice to do" for more details of things to do.