Three programs (or parts of a single code) need to be developed:
1st Program: Live stream of digital camera outputs to replace analog cameras and monitors
Requirements:
- Produce streaming output from one or more cameras to a computer monitor
- Control and display of individual camera parameters - exposure length, area of interest, gains, etc
- Ability to work with multiple instances of the program on other computers (or ability to broadcast to other computers)
- Ability to switch camera inputs
- Tracking of cameras by IP and innate ID number
- Ability to list all available cameras on the network
- Works with the record keeping program - plays nicely with it via multicasting or some similar method
- Robust - automatically reset cameras if necessary, clear error messages, stable, and well commented code
2nd Program: Record keeping program which records the camera output at regular intervals
- Saves images from multiple cameras at a user defined time interval to a user defined location on the computer
- Controls and records the camera parameters for each image - exposure length, area of interest, gains, UID of camera and location, etc
- Calulate beam center, diameter in X and Y, and overall power in the beam or image and record these as well
- Ability to flag the images with IFO status, "keep me" flags so that they are archived permanently, and other useful indicators.
3rd Program: Analysis program which looks at saved or streaming data and performs calculations
- Takes in user defined location pointing to saved images
- Provide an after the fact "movie" by displaying images in sequence
- Calculates the difference between two images
- Calculates gaussian modes present in the image via fitting
- Can save results in convient format.
Questions:
- Compression method? Uncompressed Tiff?
- Have a record keeping program running on local machines connected to 3 or 4 cameras directly?
- A "camera server" on machines local to camera, which is then hooked into from the control room?
- Is data saved locally and then updated to a final repository? Something that checks for duplicates in case someone starts it 2 or 3 times?
- What amount of the data processing do we want to do in matlab. Do we want a final product that does most calculations directly in C?