Showing posts with label MUN. Show all posts
Showing posts with label MUN. Show all posts

Summer Work

Well my research job started last week and I'm looking forward to some results, although they won't come till later on this summer. I will be researching two areas:
  1. Image stitching
  2. Image [feature] matching
The basic idea is to take a set of photos and generate multiple panoramas from them appropriately. After this I will be estimating camera poses and with some form of a transform allow the user to travel from one panorama to the next. This should end up being a fully automated process so that one can easily create "virtual tours". It is sort of a combination of different software (such as Microsoft PhotoSynth and Quicktime VR).

I'm hoping by the end of the summer I'll have most of the concepts straightened out and some tools/software created to generate these tours and display them. Depending on the results I may carry on with this project for my honours thesis. Such a thesis would be an extension on this work and would probably include improved algorithms along with efficiency improvements, such as utilizing the GPU for tour generation.

Whenever I start getting results, I'll make another post. Once I understand the domain better I'll probably even post some technical information (for those of us who enjoy learning)!

End of July Update

Yet again, not much to update on. We're just beating away at the newly merged trunk and trying to fix up some issues before the 0.5 release. After that it'll just be more issue fixing. Considering this summer I've been taking a course on ordinary differential equations I may consider working on the facilities in SymPy that solve ODEs. Only one more month left to the summer but a lot has gotten done. I'm looking forward to it though, to see what state SymPy is in.

I'm also looking forward to school starting again. Ignoring work, this summer has been far from what I hoped it would be, but I'm probably partly to blame for that one. As for school, I'll be taking these courses:
  • Integration and Metric Spaces
  • Abstract Algebra
  • Combinatorial Analysis
  • Computer Graphics
  • Computational Complexity
I'm not looking forward to the first one, but the rest of them should be alright. Although it might be a bit of work, I expect Computer Graphics to be somewhat enjoyable, or as enjoyable as a school-related item can be! This year will be my last year of regular courses. I'm hoping to have another research award next Summer and then the Fall following it will be my honors thesis, and I have no idea what to do for that at the moment. So at the end of '08 I'll officially have my undergraduate degree from MUN: a joint major in Computer Science and Pure Mathematics.

Decisions, Decisions

SymPy
One of the major usability issues I'm finding with the current interface for the geometry module is the static methods that exist. In one way they really make sense since things are grouped together appropriately, but it's extra typing required and the ideas of concurrency and collinearity, for example, will [most likely] be obvious to those using the module. This brings me to a few options to take, and I'd love to hear any one's opinion:
  1. Leave everything as is so one would call, for example, Point.are_collinear() or LinearEntity.are_concurrent()
  2. Refactor all of these static methods outside of the class into a more "global" setting such as util.py so that class prefixes would not be required, hence separating control and structure (Very Model-View-Controller oriented design). Currently the control is in the classes and accesses the private data of each. This option would not access the private data since it will be external to the class itself. This is doable since all pertinent data is readily available through methods or property methods.
  3. Since all the functionality already exists in the classes, simply leave it there and wrap all of them in a more global setting so that less code has to be moved and very little written.

I personally like #2. The classes will become simpler, and I can hide more things. In terms of the latter statement, the reason I like #2 is because I'd like to hide the LinearEntity class as much as possible. It's more or less there to reduce a lot of code that would be rewritten, yet I don't really want it to be exposed. Right now this is the only thing I'm really looking at in terms of the interface, because I think it's a reasonable one. So, any thoughts or suggestions on those options, or maybe a better option that I haven't thought about?

Research
As for my research, things are coming along there too. I really wish I put a bit more extra effort in there since it is what I plan on doing in my future. Progress has been quite limited lately due to the fact that I'm entering the more difficult area of my problem for analysis. The problem is simply Largest Common Subgraph, and currently I'm only doing an analysis under the classical complexity theory (i.e., NP-Completeness). I'm gonna take a close look into a few of the "unknown" areas left and then hopefully start looking into a parameterized analysis of the problem. Parameterized analysis is a big thing for my supervisor, especially since his PhD supervisor was half of the team which developed the theory. I really like it; it's a very practical complexity theory.

What I'm hoping to do is more in-depth literature search, start BibTeX-ing my references and really focus on writing a paper out of this. With both a classical and parameterized approach, along with algorithms for some of the sub-problems that are poly-time, I'm hoping I can get a paper out of this. Maybe I'll also introduce the practicality of the problem with examples from chemistry (such as molecules, and similarity between them). If all goes well, maybe it can even become my honours thesis, or at least a strong foundation for my honours thesis.

Summer Is Here

Today's exam went pretty good. It seems that my alpha-beta pruning technique needs a little bit of work, or rather I need to reduce the stupidity that tends to come forth from time to time. Maybe I'm just not a morning person. Well, at least they're all done now. I can't wait to see the results since I'm doing a little "experiment" this semester. I studied, on average, about 30-40% less than previous semesters and I want to see how significant of a difference this makes.

I checked out a few geometry books from the library to start reading, from introductory to expert. to start reading. Hopefully the intro book will refresh my memory, and the advanced books will offer some insight into more advanced algorithms for different things. Hopefully by Friday I'll have a better idea of how I'm going to represent these geometrical entities. Better yet, I'll probably have the answer to "Why am I going to represent the geometrical entities this way?"

I also done some more Google searching for existing geometry software. I came across a geometry package that sort of does some stuff that I'm looking to do, but it is more GIS focused. I'm going to look through some of the source and see if I can pull anything good out of it. I also checked out SourceForge and found GMath. Most of my other searching just led to geometry software that is outside of what I plan on doing for this summer (eg, dynamic geometry). I'm going to look at these other pieces of software, and if none of my findings go against my current "decisions" then I will probably move on to the planning phase.

I'm expecting this to be a busy summer, but that's just the way I like it. If I'm not being constructive then I'm usually just wasting time. I should probably go to bed since it's 2:30 in the morning!