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. The TA and I will provide support for these. Some specific routines that you may want to look at for each assignment are listed at the end of this page.
To get you started, there is an example program showing the use of a few functions here . There are hopefully enough comments in example.c to get you started. The files compile_line (C) or to get you started. The files compile_line++ (C++) deal with the complexities of including and linking on the graphics machines. The files matrix.txt and image.tiff can be used as example data for the program.
Compile lines for various other machines (C):
 
 
 
linux_x86_64_c2 (e.g. graphics machines)
 
 
 
linux_386_p4 (e.g. basic 32 bit intel)
 
 
 
linux_x64_opteron (e.g. lectura)
 
 
 
linux_386_athlon
 
 
 
linux_386_xeon
Compile lines for various other machines (C++):
 
 
 
linux_x86_64_c2 (e.g. graphics machines)
 
 
 
linux_386_p4 (e.g. basic 32 bit intel)
 
 
 
linux_x64_opteron (e.g. lectura)
 
 
 
linux_386_athlon
 
 
 
linux_386_xeon
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 copmponents 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.)
~kobus/doc/programmingI wrote it a few years back--hopefully it is not too out of date.
Specific routines for assignment two
For assignment one you might want to look at the man pages for:
read_matrix get_random_matrix multiply_matrices max_matrix_element ow_multiply_matrix_by_scalar ow_subtract_scalar_from_matrix ow_add_matrices plot_open plot_matrix_cols get_MP_inverse constrained_least_squares (grad students only)(Either click on the link or use the "man" command.)
You will also want to use something like prompt_to_continue() so you (and the TA) can actually look at your plots. (This is used in the example program linked above).
For assignment three you might want to look at the man pages for:
multiply_by_transpose multiply_with_transpose diagonalize_symmetric KJB_image (case sensitive; there is also a kjb_image(1)) Pixel kjb_read_image kjb_write_image(Either click on the link or use the "man" command.)
For assignment four you might want to look at the man pages for:
least_squares     (OK now that you know how to do it). plot_open3 plot_matrix_values (Either click on the link or use the "man" command.)
For assignment five you might want to look at the man pages for:
kjb_read_image kjb_write_image kjb_display_image ow_make_black_and_white_image bw_image_to_matrix matrix_to_bw_image get_1D_gaussian_mask get_2D_gaussian_mask x_convolve_matrix y_convolve_matrix convolve_matrix(Either click on the link or use the "man" command.)