This weekend, I went with a friend to spend some time fishing and hanging out around a fire. A few other friends and a large portion of his family and his fiance came as well. Being an eagle scout, I was rather confused when his mom said we were eating boy scouts. That turned out to be what I would call a hobo meal or a foil meal. Anyhow the meal was pretty good. We had some foil meals with some beef, potatos, carrots, and onions. We also had some fruit, cake, and ice cream as well. Later in the night, we had some smores before coming back to school.
A rather strange phrase was brought up in class today, "raped apes." It was in reference to a reading for rhetoric of science. The engineers described were build a computer system that needed to be faster than something. It seems they chose "raped apes" as something that is fast for comparison. I wouldn’t want to know how those engineers know how fast a raped ape is. Anyhow, I though it would be an amusing blog entry title.
The work I do right now at Rose-Hulman Ventures for Elastic Image involves the use of OpenCV, an open source computer vision library. Earlier this summer we updated from OpenCV 0.9.5 to OpenCV 0.9.7. However, portions of our software quit working after the update. We recently downgraded to 0.9.5 again until we can figure out what the problem is in 0.9.7. Some theories were that internal formats of OpenCV changed and we were relying on certain internals of OpenCV. However, I was invesigating it today and found that there is a problem with 0.9.7’s implementation on cvSetIdentity. That function is supposed to set the diagonal of a matrix to a given number and everything else to zero. The problem is that the same test case code shows that 0.9.7 is only setting position 0, 0 to the value and not the entire diagonal. This is confirmed in three ways. Looking at the internals of the matrix confirms shows this issue as does cvTrace which tells the sum of the diagonal and cvmGetAt which retrieves the element at a given position in the matrix. Hopefully, the issue will get sorted out and we can update to 0.9.7 or later again. That version has a newer chess board detection algorithm that works better when lighting conditions are not ideal.
In my work for the summer, the software simultaneously captures three images of an object with a grid printed on it. The three images are used to build a three-dimensional model of the object. There is information added to this as well, but it is related to the process that is unique to the company so I can’t say what it specifically is. However, we put new cameras into the system this summer. The new cameras are 22208×3000 resolution. With the larger image sizes the program leaks memory like never before and is incredibly slow with all of the data in memory being processed.
To tackle these issues, I have been using Valgrind. Initially, the software used so much RAM that even with a 4GB swap file, memory would run out with the extra memory used by Valgrind. I then contacted other Valgrind users and they suggested I try a newer version that had less memory overhead. It worked. I have since discovered the following leaks: memory was not released from several structures. The user interface was never freed. There were some miscellaneous unclosed file descriptors. Anyhow, these are mostly fixed. I would, however, like to make the user interface lazily initialized so that the memory intensive portions can be freed when not displayed.
There are definitely other issues remaining, but they are being tackled each day.
This is yet another blogging attempt. I have tried several times before, but I never blog consistently enough for my blog to be of any value. Anyhow this entry starts yet another attempt.