Archive

Archive for July, 2009

Bang Bang Brussels Sprouts

July 30th, 2009 2 comments

Even people who “hate” brussels sprouts love this dish! So get ready… Roasting is a wonderful way to cook veggies, and brussels sprouts are no exception. They taste like spicy potato chips, and they’re so good for you that your mother will approve!

It takes some time, but these sprouts are well-worth it. They will fill you up and make you say “wow” with every bite.

finished bang bang brussels sprouts

This dish has become one of my staples. You’re going to love it!    Click to continue →

Categories: Recipe Tags: ,

Twitter As a Microblog: Suddenly Less Stupid

July 23rd, 2009 3 comments

CNN and FOX news can’t stop talking about it.
You may have seen someone ‘tweet’ in real-life.
You feel like you might be missing out.

Despite all the hype, twitter seems unbelievably stupid…

I thought so too when I first tried out the service, but by taking a different approach it is starting to seem like a useful tool.

tweet?

You should follow me on twitter (@shawnlankton).

   Click to continue →

Categories: Tips Tags: , , ,

RSS Feeds for Scientific Journals

July 14th, 2009 1 comment

Knowing about new research in my field helps keep my work informed and relevant. However, I rarely remember to log into IEEE Xplore, Springer, or Science Direct to see what’s new in top computer vision journals. Recently, I saw mention of using RSS to keep up with research on Productive Scholar.

It took a bit of searching, but eventually I found RSS feeds for many of the journals I’m interested in and loaded them into google reader. It is now quick to scroll through new abstracts as papers appear on-line prior to publication. Below are links to RSS feeds for some computer vision journals I’m keeping up with.

RSS Feeds for Computer Vision Journals

Finding RSS Feeds for Other Journals

It takes a bit of hunting sometimes, but I can’t imagine that a journal would not have RSS these days. IEEE Journals are easy to find, and I found that inezha.com was a good resource for finding some of the other ones I have listed.

Any good feeds I missed?
Other good ideas for keeping current?

Leave them in the comments.

Using White Noise for Concentration

July 9th, 2009 6 comments

noiseWhen I really need to concentrate I listen to brown noise. I find that it boosts my productivity and keeps me from getting distracted by sounds around me. This is most useful in coffee shops or noisy offices, but I even do this when it’s quiet.

Brown noise is similar to white noise; it sounds like random static. However, brown noise is at a slightly lower pitch so it’s easier to listen to. That means that I can work for hours without hurting my ears!

You can download some free random noise MP3s to play on your computer or iPod, or listen to some right from your browser. Both work great.

This works better than my previous method (using ear plugs) because the sounds aren’t just blocked, they’re all scrambled up by the static. I get so much input from my ears that my brain ignores sound all together and focuses on work!

Anybody else tried this? How else do you keep focused?

Categories: Tips Tags: , ,

Making Active Contours Fast

July 2nd, 2009 2 comments

Active contours are a method of image segmentation. They are well-loved for their accuracy, ease of implementation, and nice mathematical underpinnings. However, a full level-set implementation can be quite slow, especially when dealing with large data! Here are some tips to speed things up. By combining these ideas and solid programming techniques I’ve been able to get active contour trackers running at hundreds of frames per second!

  1. Use Fast Level-Sets
  2. Start by using a fast level-sets implementation that minimizes the number of required computations [code]. This will already save a huge number of computations per iteration and speed things up quite a bit!

  3. Create better initializations.
  4. The farther the initial contour is from its final position, the more computations must be done for the contour to converge. Hence, if you can start the contour in almost the right place, you’ll drastically reduce the time needed for segmentation. You can use prior knowledge, user input, or other segmentation techniques to create a rough guess that is close to the right answer. Another initialization that can leads to quick initialization is ‘bubbles’ on an evenly-spaced grid.

  5. Use a multi-scale approach.
  6. This is a way to quickly get good initializations using active contours. Say your data is MxN. Instead of segmenting the full data set, downsample the data so that you are dealing with an (M/8)x(N/8) volume. The segmentation should run much quicker on the smaller volume. Next, upsample the result back to MxN and use this as an initialization for the full data. The idea is that the time saved on the full segmentation by having a good estimate based on downsampled data will make up for the time needed to downsample, segment on the small data, and upsample.

  7. Use approximate active contours.
  8. Using an approximate solution for all or part of your segmentation can be helpful. As in 2 and 3, you can use an approximate active contour technique to quickly get close to the right answer. Then you can use an accurate level sets implementation to get the right answer quickly. Alternatively, the discrete methods can work quite well alone! James Malcolm proposed a nice method in “Fast Approximate Surface Evolution in Arbitrary Dimension” [code].

  9. Use another technique entirely.
  10. Active contours are “variational,” so they give nice, principled solutions with analytic geometry, etc. However, if you just want fast segmentations, other techniques such as thresholding/morphology, graph cuts, region growing, etc. can all be viable solutions.

Any other tips or links to good implementations? Leave them in the comments.