A photogrammetry systemMiles Colman- 11/14/05Objective: determine the distance to an object from two photographs of the same objectparts that a working system will have: ●Image input (x2)●pixel conversion from YUV to RGB (x2)●coordinate processing (x2)●Image storage (x2)●Distance calculation●Display of distance●Display of images●CalibrationHigher level overviewpixel conversionDistance calculatorImage storagecoordinateprocessingComposite video in(image input)Distance displayCalibrationpixel conversionImage storagecoordinateprocessingComposite video inImage displayMonitorSlave labkitimplementation: inputWill use Javier's module for system inputs:●h sync●v sync●24-bit YUVimplementation : pixel conversionWill produce 24 b RGB data from 24 b YUV dataMultiply YUV data by constants to get RGB data:(from wikipedia.org)Lower level : coordinate processingInputs:●h sync●v sync●field●8 bit luminance (Y)●used (from distance calculator)Outputs:●x coordinate●y coordinate●averaged x coordinate●averaged y coordinate●newImplementation: ●x coordinate counts with clock (every other cycle) ●x coordinate resets on h sync●y coordinate counts h sync pulses●Y coordinate resets on v sync●coordinate processing unit stores x and y values for pixels exceeding a threshold luminance, and keeps track of how many pixels exceed the threshold●on a v sync, the coordinate processing unit calculates the centroid of the x and y values●new pulses high when a new averaged coordinate is calculated●Used pulses high when the new averaged coordinate is used by the distance calculatorLower level : coordinate processing : centroid calculation●Store the n x and y coordinate values that exceed luminance threshold in a frame●During v sync pulse, calculate average x and y values:1)Add first n x and y values from memory 2)Divide x and y sums by n●Storing 720 x 520 pixels 30 times per second requires a bit rate of 11 Mb/s●storage required (worst case) is 720 x 520 x 20 bits = 7 Mb (requires SIMM)Lower level : image storage●Storage unit uses x and y coordinate values to address 24 bit pixel RGB data●size requirement is 2 x 520 x 720 x 24 b = 18 Mb●bitrate is 2 x 520 x 720 x 30 fps = 22 Mb/s●will using SIMMs on labkitInputs:●10 bit x coord (from coord proc)●10 bit y coord (from coord proc)●24 bit RGB data (from converter)●10 bit x coord (from image display)●10 bit y coord (from image display)●pixel request (from image display)Output:●24 bit RGB data (to image display)Lower level: distance calculatorDistance is calculated from average x and y pixel values fortwo images and a matrix defining an affine transformDistance calculation requires knowledge of 12 constantsdefining transformation from image to 3D spaceconstants are determined by using calibration feature to ●get pixel locations in image●using Matlab script to determine coefficients●coding coefficients into verilogInputs: 10 bit x av pixel for Image110 bit y av pixel for Image110 bit x av pixel for Image210 bit y av pixel for Image2 outputs:X [10 bit position] Y [10 bit position]Z [10 bit position]Lower level: distance calculator: input timing●On reset, distance calculator checks the interval between the two camera's done signals●the shorter interval is used to pick the first camera●the 3D position from the second camera's previous 'done' signal is stored●when a new position becomes available from the second camera, a new 3D position is calculated●the two 3D position values are averaged weighted according to how much time passed between the two frames from the second cameraLower level: calibration moduleCalibration mode shows the position of a user-selected point in the image coordinate systeminputs are: switch and direction buttonsoutputs are: 10 bit cursor y (to monitor)10 bit cursor x (to monitor)show calibration flagIf calibration mode is on (controlled by user with switch): ●a + is displayed on the image along with the +'s coordinates in the image coordinate system●the position of the + is displayed below the image●the position of the + is controlled with the arrow keysImage display : lower levelImage display is a wrapper that accesses the stored images and outputs the rgb value for a given pixelinput: 11 bit x position (from monitor)10 bit y position (from monitor)24 bit pixel value (from image storage) (x2)output: 10 bit x position (to image storage) (x2)10 bit y position (to image storage) (x2)pixel request (x2)Position display: lower levelinput:10 bit {X,Y,Z} data11 bit x position10 bit y positionoutput: 24 bit pixel that uses text display moduleMonitor: lower levelInputs:24 bit RGB pixel for image display (x2)24 bit RGB pixel for text display10 bit x value for calibration pixel10 bit y value for calibration pixelshow-calibration flagOutputs: 24 bit RGB signal to monitorh syncv
View Full Document