ISTA 410/510 - Bayesian modeling and inference

C/C++ support

Most assignments require capability that you do not want to implement yourself. Thus you have to link against libraries. I will provide my version of tools that you can use to do the assignments, but you can use other libraries if you prefer (but then you are on your own regarding making it work and providing a compilable program that works on the graphics machines).

The TA and I will provide some support for these as they are used for research and are in continual development. Note that these libraries are currently unix (including MacOS which is unix) only. If you want to minimize your use of unix, then perhaps best to use Matlab.

The needed include files, library archive, and supporting libraries are available for the various machines on the UA CS network. Using the precompiled library is described next. In addition, a read only SVN repository is available (described below) for those that want to work on a machine outside the CS network. However, for full functionality, you will likely have to install additional libraries.


Compiling and Linking an Example Program on a CS Machine

To get you started, there is an example program showing the use of a few functions here . There are hopefully enough comments in the code to get you started. The files

    build.csh (tcsh users)
or 
    build.sh (bash users)
provide command lines that deal with the complexities of including and linking for most machines on the CS network.

The files matrix.txt and image.tiff can be used as example data for the program.


Working with the source code

The above describes using the library as a "black box" provider of functionality. However, the library is actually designed to be used as part of a source tree, with the modules that are needed being compiled on demand. The reason for this choice is that much of the vision lab code development is at the library level. Hence for us, the library is just part of the source code, not an external entity. Using the library in the same way might be attractive to some, and is the best option for who want to work with it on computers not on the CS network.

Information on working with the vision lab library source code is available here.


Resources

Man pages (MANPATH is: ~kobus/doc/man (on most CS machines)

Also available in html at:     http://kobus.ca/research/resources/doc/kjb/KJB.html

Start with a "man kjb" or the above link. Note that the first part of the document is a bit overwhelming, as it is geared towards writing substantive vision components shared with the group and/or, writing code for the library itself. This document essentially gives you a template for the "INCLUDE AND LOAD" strategy described by "man kjb".

A key point is that "man kjb" gives a machine generated list of all routines which have at least minimal documentation. (Perhaps 1/2 of the routines of interest are documented.)

Note that there are man pages for the main data types. In particular, you can do:

        man Vector
        man Matrix
        man KJB_image
        man Pixel
(Either click on the link or use the "man" command.)

Other documentation

There are some documentation files which attempt to explain some of the less conventional things about the library in the following directory:
        ~kobus/doc/programming
I wrote it a few years back. Hopefully it is not too out of date.

Finally, the vision lab has a wiki that has a lot more information (not necessarily well organized) linked here. You will need the password. Email the instructor if you would it.


Specific routines for assignment two