Friday, April 15, 2016

Week 10: Holy Guacamole!

April 15, 2016

Catching Up From Last Week

After my last post, I started choosing manual match points and comparing them to automated match points. It turns out that this task is perhaps the most tedious task known to mankind. I'll spare you all the boring details, but the bottom line is that in the image pairs that actually gave us matches, the computer consistently performed as well as (or better than) a human (me). Here are some animations showing the shifts that occur between images for a few match points.

Computer

Computer
Me
Me

Sometimes the computer performed worse than I did, but that's alright. The "breathing" that you see is due to geometry changes from different camera angles and things like that.


This Week! (holy guacamole)

I am excited! Remember back in Week 3 when I said we got to put it all together? I 100% lied. This week we really put it all together. Let me explain.

The first half of my project (the part that was completed before capstones ended) was all about learning how to program. And I did that decently well. I learned the basics of the Python programming language and learned some cool things about file manipulation and the like.

The second half of my project has been all about helping out the USGS, and I have also done that to a certain degree. I learned how to use some of their software in order to analyze the effectiveness of some of their image matching algorithms while learning some cool and useful skills along the way.

Now when I say we put it all together, I mean we put both halves of my project together. Last week I talked about the problems we were having with the code especially when it came to communicating between my Mac and the Linux that is on my Mac. We remedied those problems by abandoning the Mac side altogether and doing everything on the Linux side.

See, before, we were matching images on the Mac side and sending the control networks that were generated to the Linux side through some computer black magic. When I say control network, all that is is a file that contains all the matched points and where they exist on each image, more or less. Anyway, since moving over to the Linux side, it has been much easier to manipulate the algorithms ourselves, and we have discovered there are about 32 total combinations of algorithms between feature detectors, matchers, and feature extractors (for each image pair), sort of like the combination problems where Jenny has to choose between 5 blouses, 3 skirts, and 2 pairs of shoes.

Here's the cool part: (wait for it.........) because there are wayyyy too many combinations to test by hand in a truly organized manner, my advisor helped me WRITE A SCRIPT that RUNS ALL OF THE POSSIBLE ALGORIthm combinations sequentially! Isn't that amazing??????????? I think it's flippin' sweet! If you couldn't tell, I'm pretty excited. Running all of the combinations will definitely take a while, perhaps up to a week or longer, because it can take 30 minutes or more to run a particular combination. It may take even longer because we keep running into issues with the script we wrote so we'll see what happens!

So that is what's going on now and will be what I talk about in more detail in my final presentation/paper. With that said, the next time you'll hear from/see me is the day of my final presentation (May 2), so adiĆ³s amigos!

Friday, April 8, 2016

Week 9: Aaaaaaand We're Back!

April 9, 2016


My advisor is back! That means that my project is back to business as usual. Unfortunately, business as usual means a lot of debugging. As my advisor says, that's the problem with being on the "bleeding edge" of technology like this: you're going to run into implementation problems no matter what you do.

The plan for the foreseeable future is the following:
  1. Get all the code I'm using up to date with the code that's being written by developers at the USGS.
  2. Figure out how to use the Linux programs in tandem with the software that I was using before.
  3. Analyze the success of our matches.
Those are the main parts of my project going forward, and step 3 is going to take the most amount of time and will be the most involved. Although, based on the developments that have been made this week (namely bugs), Step 2 might take the longest.

Step 3 will involve many steps. First, I'll perform an image match. After the match has been completed, I'll look closely at the points that were created and do a blink comparison. This means that I'll pick a couple of points, probably one pair that corresponds to each of the images and then flash each image on the screen back and forth with the match point as a reference to see if there is any shift. A shift in this case would be the whole image moving a couple pixels to the right or left, or something similar. If a shift occurs, I'll try to determine how many pixels I'll need to move one of the points, and record what kind of manipulations I had to do.

This process was definitely not what my advisor told me verbatim, but it's close enough to understand the gist of what I'll be doing.

On a side note, I ran into an interesting problem this week where all the programs I was running on my computer taxed it completely and killed it; the memory filled completely and everything just stopped working all together. To fix this I had to get an external drive to store my virtual Linux on because I didn't realize that the Virtual Linux was really its on computer with its own memory and all that stuff (silly me!). So basically I had an entire computer on my computer (computer-ception) and that's super cool! I don't know how that escaped me.