Back again for another week :)
The core of intrinsic and extrinsic calibration is done, and I can save and load the matrices!
This week, we had a major hardware breakthrough: the interrupts are getting triggered! Now there is still plenty of work for Grady to do with it, but this was a major hangup that is great to get past.
On the software side of things, this week I spent quite a few hours studying/attempting to understand/thinking about the red component and how we will get the left edge of the laser according to the Brown notes. They find the midpoint value (for them it is intensity, for us the red component) per pixel over all frames and then compute the difference image for each image. Then to find the subpixel location of the laser line in a specific frame, you find where the difference image crosses 0 in a specific row of pixels and interpolate to that point based on the pixels before and after. You take all subpixels for a region and find the best fit line. Then for finding when the laser hit a particular pixel on the object, you loop over a particular pixel over all frames and find the zero-crossing; I made the assumption to choose the left side of the zero-crossing as we will be dealing with the left side of the laser line.
We discussed it with Dr. Wolff and since he trusted the document, we went with it. I began implementing it on Thursday. Dr. Wolff mentioned a potential issue of non-negative numbers being used for the channels in an image (the image we get from the camera is a 3 channel matrix of unsigned chars between 0 and 255 inclusive) since the difference image needs to be allowed to be negative. Uchars, schars, and chars don't provide the range we may need, so I convert the red channel matrix from CV_8UC1 to CV_32F (floats) to be able to use negative value.
In addition, this week involved some more plumbing, including setting up some more MVC, adding OverlayView classes, and some message displaying/error handling (e.g. if no camera is connected).
We are planning on working on Saturday and hopefully we can knock out more of the red component stuff and get the OverlayView working (and hopefully Grady can make more progress on the interrupts).
We present our first technical presentation of the semester and plan on talking about displaying an cv-produced image in Qt (and maybe some other info about Qt) as well as what fixed the interrupt issue (hopefully to a level the audience can at least partially understand).
Until next time...
No comments:
Post a Comment