Posted by
Setting an objective is often the first step to achieving it. Case in point: Image Watch (opens in new tab).
PODCAST SERIES
Image Watch is a Visual Studio 2012 plug-in from the Interactive Visual Media (opens in new tab) (IVM) group at Microsoft Research Redmond (opens in new tab). 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 (opens in new tab), Windows Store (opens in new tab), or desktop apps—began with a straightforward objective,” says Wolf Kienzle (opens in new tab), 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 (opens in new tab) developer community might find Image Watch to be a huge boost to programming productivity. Within the IVM group, the recently released Blink (opens in new tab) and Cliplets (opens in new tab) 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 (opens in new tab) 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.”
