

My name is Simon. I am currently working towards a Masters of Electrical and Computer Engineering (M.A.Sc.) at the University of Ottawa.
I created this site to act as an extension to my paper resume (typically a very restrictive document in my experience). This website itself should be viewed as an interactive version of and expansion on that document. It will hopefully also serve as a venue for me to write about some of the topics I find interesting, including things I've been researching at school.
Have a look around and feel free to contact me if you have any questions about anything you see here. And just to get you started, here's a quick summary about me:
Update for MikTeX 2.9 below.
I've been working on my thesis for a couple of months now, and frequently I have to look up ways to tweak certain Latex components, so I'm going to start posting about these tweaks, even if it's just to link to another page about how to do something. If I end up having a good collection at the end of my thesis, then I can write a final post aggregating them in a logical order so they can serve as a guide to formatting a thesis in Latex.
I'm using TeXnic Center (TXC) 2 Alpha 3 to edit and MikTeX to build. I originally installed both using ProTeXt which packages TXC1, MikTeX, Ghostscript, and Ghostgum. I later installed TXC2 which provides a much-needed overhaul to the interface so that toolbars don't shift all over the place whenever you resize the window.
Today, I decided to add a List of Notations (aka list of Symbols) to my thesis. This is handy in a scientific thesis to let readers quickly refer to the list in case there's a symbol they're unfamiliar with. It's also nice if you can do your Related Work review (Lit Review) using one common set of notation, which will allow readers to more easily understand the relationship between various other papers you're reviewing in case they don't share notation.
The list of notations can be generated using glossaries, or even manually, but it's best done using the package nomencl, which was designed for this purpose. If you're using MikTex, then you should have this already.
Anyway, as outlined here, adding a list of notations can be done in 4 simple steps:
1. Add the following code to your preamble:
\usepackage[refpage]{nomencl} \renewcommand{\nomname}{List of Notations} \renewcommand*{\pagedeclaration}[1]{\unskip\dotfill\hyperpage{#1}} \makenomenclature \usepackage{makeidx} \makeindex
My colleague Luis Gurierri here at uOttawa is a finalist in Ontario Centres of Excellence (OCE) student video contest. His video promotes the NAVIRE project (the same project I'm working on), and focuses on the 3D aspects of the project on which Luis has been working.
I recently found myself having to do a few interesting conversions in C++ to pass images between different formats and/ or libraries, including OpenCV, MATLAB, and some unusual custom formats. I'm going to post some code snippets here that do some of these conversions as I suspect they may be useful for others.
Keep in mind that, generally, image data is always stored in one long array, and you have a pointer to the beginning of that array. So, the question is, as you increment your way through the array contents, in what order are you traversing the image's data? E.g. are the first three elements the RGB values of the first pixel in the top left corner of the image? Or are they the R components of the first three pixels moving right along the top row of the image? Or something else entirely?
The dreaded Blue Screen of Death (BSOD) has existed at least as long as Windows, and baffles even fairly advanced computer users. It is usually triggered by low-level errors in the CPU, which in turn are usually caused by driver problems (e.g. illegal pointer references and such) or hardware problems (e.g. deffective RAM or CPU overheating). Usually the errors listed are not very descriptive, just one of the problems in actually making use of them. Whenever I've begun experience frequent BSODs, I've always just formatted my computer and reinstalled Windows, thinking that whatever is happening is probably a software or driver issue so obscure I'd never track it down. However, during the most recent outburst of BSODs on my new laptop (a 10 month old Dell), I decided to take a serious crack at analyzing the BSOD details.

For my Master's research, I'm part of a research team of about 12 students and post-docs, as well as three professors at the University of Ottawa who are working on an NSERC Strategic Project entitled "High-quality acquisition and rendering of image-based models for tele-presence in remote environments." This project received some media attention over the past year, long before I got my site online, so I'm sharing it just a little late.
The project was featured in CBC Radio's program Spark. Meg Wilcox interviewed myself and several other members of the team about our work on the project. You can listen to the full interview (about 10 minutes) here. My portion is towards the end, and I talk about High Dynamic Range Imaging and the "So What?" of my work, i.e. what does it do for the end user.
Back in June, the project was featured in the Ottawa Citizen, and several professors and a post-doc student from the project were interviewed. This was story also ran in the National Post and on Canada.com.
Working with Floating Point images in OpenCV can be tricky, especially if you've so far only worked with 8-bit (uchar) images. In this tutorial, I'll describe how to create a floating point image, how to access and modify it, and how to save it to or load it from disk.
There are many scenarios where we might wish to work with floating point pixel values. In my case, I'm working on High Dynamic Range Imaging which inherently deals with floats rather than integer values. A more common scenario is that you want to apply a series of operations to an image in a processing pipeline, and you'd like to maintain high precision throughout, then clamp the values at the end and round to integers. In that case you could take an 8-bit image at the beginning, convert it to 32-bit floats, perform all your operations on it, then convert back to 8-bit at the end so you only have one instance of integer rounding error.
Well, my web site's finally online. Consider this a rough first draft for the next month or two. There will be more content soon. I am currently working on a Research page to give an outline of what I'm doing for my Master's research. I am also planning a blog section in which I'll write about various topics including my research, programming, and any other tech- and engineering-related blither blather that pops into my head. Thanks for stopping by, please check back soon!