Project 2: pb-lite: Boundary Detection
Varun Singh
I created a filter bank by convolving a gaussian filter and a
sobel filter. The gaussian filter had an hSize of [3 3], and I
created filters for a sigma size of 1 and 2, and 16 different
rotations. This is the filter bank I used, made by simply
rotating the filters using imrotate:
Then, I made a set of half-disc masks. I did so by creating a an array that represented a circle, by simply measuring the distance from the 'center' of the matrix. Then, I rotated the masks using imrotate. I also rotated each mask 180 degrees to get the half-disc pairs. I used radius sizes of 5, 10, and 20, and 8 different orientations. This is the set I used:
Then I made a texton map by filtering the images with all 32
filters from my bank, and reducing the 32-dimensional vector
to a one-dimensional grouping with kmeans. Here is my texton
map for the penguin image:
I then created texture and brightness gradients. I did this by centering all the different pairs of half-discs at each pixel, and comparing the histograms of either texture (from the texton map) or brightness of the images from both half discs using chi_sqr.
Finally, I simply took the mean of the feature vector for each
pixel. I multiplied the mean of the brightness and texture
gradients, and multiplied that by the canny baseline. This is
a graph of my F score (in black):
My pb-lite did pretty well, but for some reason didn't do well for very low recalls, which I didn't work too hard to improve since it doesn't seem too important how well the algorithm does for recalls that low, since you're barely detecting any of the real edges. Heres the full data on my F score:
Boundary
ODS: F( 0.56, 0.65 ) = 0.60 [th = 0.09]
OIS: F( 0.56, 0.65 ) = 0.60
Area_PR = 0.44
My F score is unfortunately hardly higher than the baseline, but it would have been much much better if we didn't factor in recalls of less than around .7



















