Darkness 2010-04-28 12:00:00 UTC
Twilight 2010-04-29 12:00:00 UTC
Daylight 2010-04-30 12:00:00 UTC
Finish 2010-05-05 12:00:00 UTC

Sensor - Winners

The Spring 2010 MATLAB® Programming Contest has come to an end. We hope you enjoyed it as much as we did.

Thanks to all the participants and spectators who have helped make the Sensor Contest such a great success. Congratulations to all our winners! We also want to give a special "high-five" to those winners who are already in our MATLAB Contest Hall of Fame, yet made the effort to participate again in this contest.

Hannes Naudé
Grand Prize

I live in Pretoria, South Africa. I run a small consulting firm, Innoventix Consulting, together with my coding partner from previous contests, Cobus Potgieter. We do algorithm & software development for our clients who are mostly from the defence industry. Our specialization is in signal and image processing and artificial intelligence, and we use Matlab regularly in the algorithm development side of our business. When I’m not working or playing Matlab Contest I can be found catering to baby girl Mila Naudé’s every whim. It is very important that the contest cutoff be moved, since this clashes with bathtime and I probably won’t get away with submitting 22 minutes early again ;-).

I first participated in the Matlab Contest in the trucking contest of April 2003. Seven years later and the contest remains an extremely fun and addictive way to learn new Matlab tips & tricks. I especially like the new contest machinery. My initial impression was that the changes to the site were mostly cosmetic, but after a couple of days I began to appreciate the real impact of things like the ability to easily see all code based on any given participants entries, the ability to place comments on submissions after-the-fact, and of course the limitation of ten entries per participant per 10 minutes. It is clear that a lot of thought and effort went into the new site and I wish to thank the contest team for this.

Thanks also to all the contestants from which I have learned so much over the past seven years. I hope to see all of you (plus a load of new “faces”) back here in 6 months.

Mike Russell
Early Bird

Mike Russell

I completed a B.S in Computer Engineering at Clarkson University in 2005, and a M.S. in Electrical Engineering at Syracuse University in 2010. I am a full-time employee at SRC , a not-for-profit research and development company. I work in the Systems Technology Center as a Systems engineer. I primarily use MATLAB to collect and validate data derived from signal processing chains on a variety of systems. I have also performed system modeling tasks that relied on Simulink. I enjoy finding ways to make things run faster within MATLAB, vectorization of problems. The MATLAB contest series always serves as an education in tricks and optimizations that can be made to improve code efficiency. I hope in the future an increased emphasis is put on read ability.

The early bird prize is a very short lived part of the overall contest. Two things contributed to my success during this phase, first checking the main contest page so I was aware of the early bird prize, and secondly the small amount of research I performed during the darkness and twilight stages on compressive sensing, specifically Rice Universities page on CS. This allowed me, after seeing Oliver's leading entry, to focus my attention on the filter portions of the code. My approach was very simple, I acknowledged that the two filters at the end of the solver could be run more often or at different rates to improve image quality at the cost of time. I just toyed with these most basic elements to see there effect on the overall score and this happened to be all that was necessary to bring home the early bird prize. Others picked up on this following my initial submissions and then it was off to the races to see who would hit the lottery first.

I appreciate all of the improvements the Mathworks contest team implemented since the last contest. As always my hats off to some of the key players like Oliver, Robert, and Hannes who demonstrated both a mastery of MATLAB and strong problem solving skills.


Mike Russell

Alan Chalker
Tuesday Longevity and K-Node Challenge

Alan has been using MATLAB for about 15 years, originally learning at The Ohio State University where he was working on his degree in electrical engineering. He also has a Ph.D. in biomedical engineering from the University of North Carolina at Chapel Hill. Alan works as a Program Director for the Ohio Supercomputer Center in Columbus, Ohio and has regularly been an instructor at training classes on MATLAB for a variety of audiences.

As regular competitors know, one of the things I personally enjoy about the contest is developing code the deals with the contest mechanics (i.e. auto entry submission code). With the new contest website, I found it particularly challenging to create new code to interface with it and spent several days on that task. I ended up with a program that continuously scanned to see who the current leader is. If it was my own entry it didn't do anything at all. If it was another new code it grabbed the code, then resubmitted versions with slight tweaks to key parameters. For example, say a key parameter to tweak was at 0.1234. Then my code would first submit an entry with that changed to 0.1235, the next one would be 0.1233, next 0.1236, then 0.1232, etc. etc. Then it goes to the next likely parameter (unless of course the leader changes during this process, in which case it starts over again with the new code). As a result, I ended up submitting 782 entries from my primary user account, and was able to win both the K-node challenge and the Longevity contest.

Oliver Woodford

I'm currently a Research Engineer at Toshiba Research Europe Ltd., where I develop computer vision algorithms, usually in MATLAB. I first used MATLAB in 2000, for a lab project during my undergraduate degree, but became a habitual user during my PhD, which I started in 2004 and finished in 2009.

The subject of this contest, compressive sensing, is quite a big research topic, so I spent the first day skim reading some relevant papers for inspiration. I realized that there were two main approaches - choose queries such that the sum of each region (formed by the intersections of regions) is exactly soluble (preferably in closed form), or choose highly overlapping regions which require complex optimization and regularization to find the 'best' solution. The papers all used methods in the second category, making the algorithms too complicated to implement quickly, and most likely too slow for the 180 second running time limit. So my reading turned out to be a waste of time, but by that time I'd missed the darkness phase again!

I then decided to just start coding some algorithms in the former group. The first simply split the image into as many identically sized squares as possible, and computed the mean value for each square. I noticed that this expended queries splitting up large areas which were uniform in value, queries which could be better spent improving textured areas. My next approach started with a much coarser grid, then split some of the squares into quarters, and some of those quarters into quarters and so on. The squares to split were chosen based on their largest difference in value from their neighbours. I further improved this approach by only splitting the regions in half, either horizontally or vertically. Amazingly this was enough to give me my first leading entry, which turned out to be luck more than anything. When I tried to improve my criterion for selecting the next region to split, I couldn't. By chance I'd hit on a good method first time. However, the approach was soon overtaken by entries from Robert Macrae and Alfonso Nieto-Castanon. I needed another improvement.

I then noticed that smooth areas of the original images looked quite blocky in the reconstructions, so decided to add a post-processing smoothing step. This put me back in the lead! I finally added some bilateral filtering using an implementation by Jiawen Chen I found online, to sharpen up the edges which had been blurred by the smoothing. Thankfully that was enough to give me the twilight win.

After that I knew it would be difficult to stay competitive in daylight - there's always someone with more time than you to improve the leading entry, and I thought I should probably get back to work. However, I didn't stop thinking about some alternative approaches (in the latter category of the two I mentioned) which might make significant improvements, and even submitted a very concise one for the 1000 node challenge, but these approaches were always far too slow.

Many thanks to the contest team, and all the participants, for another enjoyable contest.

Jan Langer

My biographical info has not changed much since the last contests. I am still research assistant and PhD student at Chemnitz University of Technology, but I hope to finish my studies during the next year. My thesis centers around high-level synthesis of hardware from temporal properties.

My contest entry was just a straightforward algorithm that always divides one of the rectangular areas in half, queries one half and computes the other with the sum of the first and the parent sum. Two ideas are probably different from other entries. First, I tried to select the most "profitable" area to split and I chose a metric that assumes an area where all pixels are binary (either 255 or 0) and computes the expected score in this case. Therefore, medium colored areas are preferred.

The other idea, was to tilt (german "kippen") all areas according to the mean of the neighboring areas. This function also found entry into the main development during the big sunday push. However, I was not able really to capitalize from this improvement. At last, I followed a colleague's hint and used a simple gaussian filter to blur the image a bit.

Alex P
Saturday Leap

I am a physicist in the technology department of Carl Zeiss Jena GmbH situated in Jena (Germany). In our work we develop microstructured optics for any application, e.g. spectrometer gratings, beam shaper and others. My first contact was 1999 in France. Since then I engaged more and more with Matlab.

I came a bit late to the contest this year. So my first entry was based on Mike's Picture Quality Enchancer. But the weekend was really interesting. The algorithms provided have a lot of tuning opportunities. The Saturday Leap entry was the result of a night on parameter optimization, in this particular case the filtering parameter.

Many thanks to the contest team.


Abhisek Ukil
Sunday Push

Abhisek comes from Calcutta, India. Currently, he is principal scientist at the 'Integrated Sensor Systems' group of Asea Brown Boveri (ABB) Corporate Research, Baden-Daettwil, Switzerland (www.abb.com). He uses MATLAB, Simulink regularly for signal processing, machine learning, embedded systems related R&D.

I introduced the convoluted solver approach on Saturday by 'Pori clones 1' entry, which by the way fell short of Alex P's entry for Saturday leap. Nevertheless, this algorithm structure(with tweaks) presisted till the final day. I used the parameter pixels/query to choose from two particular solvers. However, as no feedback on score was available, I had to use this forward path logic. This asked for optimization over quite a few unknown parameters like picture contrast, how much edges are present, optimum ranges for each of the solvers, etc. These were quite different for the testsuite than the example one. That's why I had to use a lot of entries ('Pori' series) to figure out. Bad weather in Switzerland on Sunday inspired me to stay home and push along. And finally, Pori is not an acronym for a secret algorithm, it's the nickname of my 1yr old daughter, who did her best to distract me from the computer!