![]() |
![]() |
We used four features for edge detection: two channels of color, brightness, and texture. First, We converted each image to grayscale, and filtered that image with each of the filters in our bank, to obtain a response vector at each pixel in the image. Treating each response vector as independent, we used k-means clustering to to classify each pixel into one of 64 categories. The classification of each pixel was used as the texton id for that pixel.
Next, we converted each image into the LAB colorspace, and used that representation to compute brightness and two color gradients (a and b). The brightness or color value at each pixel was discretized into the range 1-255. (The color gradients were extra credit.)
For each feature, used the image masks to compute a multidimensional histogram in the right and left half circle centered a each pixel, in different orientations. We then used the chi-square distance to determine how different these the right and left histograms are at each pixel, resulting in a distance value representing the gradient at each pixel for each feature.
Finally, we averaged the per-pixel gradient for each feature, and multiplied that value with the Canny edge detection response at that pixel, to get a per-pixel boundary score. This final value was used to do non-maximum suppression.
|
|
![]() |
![]() |
Sobel: | ODS: F( 0.38, 0.55 ) = 0.45 [th = 0.09] | OIS: F( 0.38, 0.55 ) = 0.45 | Area_PR = 0.21 |
Canny: | ODS: F( 0.66, 0.51 ) = 0.58 [th = 0.15] | OIS: F( 0.70, 0.50 ) = 0.59 | Area_PR = 0.50 |
Pb-Lite: | ODS: F( 0.64, 0.57 ) = 0.60 [th = 0.10] | OIS: F( 0.64, 0.57 ) = 0.60 | Area_PR = 0.53 |
![]() ![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |