Sam Boosalis

Algorithm

Pipeline

Compute the image's texture gradient

Compute the image's brightness gradient

Combining the multiscale cues

Filters

I used gaussians at different orientations and scales.

Masks

I used half-disk pairs at different orientations and scales.
As per the specification, I avoided iterating over every pixel. I did this by, for a given bin and mask, convolving the bin-indicator with either mask, and exploiting the linearity of the chi-square function. Chi-square is linear because it's simply a composition of basic arithmetic operatorations (+,-,*,/) and a sum (or integral), which are all linear.

Multuiscale Cue Combination

My multiscale cue combination was, for each pixel, naively multiplying the average of the sum of the gradients (bg and tg) with its canny assignment, then normalizing across all pixels to get a "probability". I built it atop canny, because canny works better than sobel.

Caching

I hacked together my own caching system, based upon flags. It allows caching of earlier parts of my pipeline, thus reducing the computation time. This way, developing the next stage in the pipeline avoids recomputing the whole pipeline. But it didn't really help.

Results

I beat the baseline, that is, I had a greater area (under the precision-recall curve) than either the canny or sobel filters.

Penguin

the Penguin and his pblite

filters

masks

the Penguin's canny