Microsoft Research Blog

The Microsoft Research blog provides in-depth views and perspectives from our researchers, scientists and engineers, plus information about noteworthy events and conferences, scholarships, and fellowships designed for academic and scientific communities.

Image Debugging for Visual Studio

February 27, 2013 | By Microsoft blog editor

Posted by Rob Knies

Image Watch window displaying three image variables with the selected thumbnail in detail view

Setting an objective is often the first step to achieving it. Case in point: Image Watch.

Image Watch is a Visual Studio 2012 plug-in from the Interactive Visual Media (IVM) group at Microsoft Research Redmond. The tool enables anyone building image-processing applications to visualize images just as they would any other variable within the Visual Studio integrated development environment.

“The tool—which works for Windows Phone, Windows Store, or desktop apps—began with a straightforward objective,” says Wolf Kienzle, a senior research software-design engineer with the IVM team.

“I wanted to create a tool that puts all the pixels in your app at your fingertips, all the time,” Kienzle says. “The goal was to be able to see what image objects exist in your program at a given time and to visually inspect these images.”

Image Watch, released just three months after Kienzle began work on it, is designed for those building computer-vision or image-processing applications. For example, the OpenCV developer community might find Image Watch to be a huge boost to programming productivity. Within the IVM group, the recently released Blink and Cliplets apps were debugged extensively using Image Watch. One of the keys to its success is its integration into the Visual Studio environment, with which software developers are familiar.

“In many ways”, Kienzle says, “Image Watch works just like Visual Studio’s built-in Watch window, the difference being that instead of displaying values as text, our Image Watch window renders bitmaps. I also wanted to have the image viewer support common debugging tasks, such as quick A/B comparisons between images or visualizing individual channels.”

Kienzle cites as a key to the Image Watch development process the “invaluable” support he and colleague Matt Uyttendaele received from the Visual Studio Debugger team and early adopters across Microsoft. As Kienzle puts it, “Kudos to Charlie Aslan, Mike Toelle, Eran Borenstein, and Vadim Cugunovs!”

It seems apparent, though, that Kienzle and Uyttendaele had their eyes firmly set on their goal from the start.

“Say you are writing software that processes images or videos—for example, a photography or augmented-reality application,” Kienzle explains. “How do you find programming errors in your image processing? You can modify your program to write intermediate results to disk, then rebuild, run, and inspect the saved images. But this gets tedious very quickly. This is why we built Image Watch.

“Image Watch is a built-in image viewer for Visual Studio that displays in-memory images as you step through your code in the debugger. In other words, you can watch the pixels live as they get manipulated by your algorithms.”

In other words, programmers working with image-processing apps just got another valuable tool to add to their developmental arsenal.

“To me,” Kienzle says, “the coolest part is how much faster you can make sense of the state of your program the moment you open up the tool. It really saves you a lot of time and headaches. And thanks to Visual Studio’s awesome extensibility capabilities, it literally takes only one mouse click to install.”