Steve on Image Processing with MATLAB

Image processing concepts, algorithms, and MATLAB

New blog – Cleve’s Corner!

All of us MathWorkers who hang out on MATLAB Central are very excited that MATLAB creator and MathWorks cofounder Cleve Moler has just become the latest MATLAB Central blogger.

I think I first started to get to know a little bit about Cleve from the Usenet newsgroup comp.soft-sys.matlab, which I started eagerly reading when it was formed at the beginning of 1993. Cleve posted "Hello from MathWorks" the first week, and he's been a very active participant ever since.

I met Cleve in person in September 1993 when I interviewed at MathWorks. I vaguely recall that he asked me if I knew anything about the use of wavelets and fractals for image compression, but mostly he wanted to show off the cool new secret stuff MathWorks was working on for the Symbolic Math Toolbox.

I mostly worked on the Image Processing Toolbox back then, but I sought Cleve's advice for one of my earliest contributions to MATLAB. I thought it might be beneficial for the filter2 function to automatically determine if the input filter is separable. (See my 04-Oct-2006 post on separable convolution.) Cleve explained to me how the rank function works and advised me on numerical issues and speed trade-offs. We decided to make the change, and it's been there ever since.

Cleve also helped me early on with an image processing algorithm. Someone suggested to me that we could fill in (or replace) pixels in a particular region by modeling it like a soap-film problem. That is, if you form wire in the shape of the pixel values (as heights) around the region to be filled, what shape would a soap film take inside the wire? I did a little searching (in books; the World Wide Web was still just a couple of years old) and found that I needed a solution where each pixel equals the average value of its north, east, south, and west neighbors, subject to boundary conditions based on the pixel values around the edge of the region. I programmed an iterative algorithm that worked, but it was quite slow.

When I asked Cleve for his advice, he said, "Isn't that a sparse system? Why don't you just use backslash?"

[head slap] Of course!

He was very nice about it, so I was only a little embarrassed.

I could go on and on about Cleve. However, he doesn't like it when people make a fuss about him, so he's probably already mad at me.

One more thought before I wrap this up. Anybody interested in how MATLAB came to be should watch Cleve's Origins of MATLAB video. He spins a great yarn.

Hey, Cleve - I've got two numbers whose average is three. What are they?




Published with MATLAB® 7.14

|
  • print

Comments

To leave a comment, please click here to sign in to your MathWorks Account or create a new one.