How to improve blob detection rate?

asked 2015-04-26 05:09:52 -0600

Hello,

I want to detect Retinal Microaneurysm from a retina fundus image.

So far I used the SimpleBlobDetector with customized parameters:

#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

// Image matrices
Mat src, dst;

// Blob detector parameters
SimpleBlobDetector::Params params;

int main(int argc, char **argv) {
    src = imread(argv[1], IMREAD_GRAYSCALE);

    params.minThreshold = 0.4;

    params.filterByArea = true;
    params.minArea = 14;
    params.maxArea = 10000;

    params.filterByConvexity = true;
    params.minConvexity = 0.8;

    // Coordinate array
    vector<KeyPoint> keypoints;

    SimpleBlobDetector::create(params)
        ->detect(src, keypoints);

    drawKeypoints(src, keypoints, dst, Scalar(0, 255, 0), DrawMatchesFlags::DRAW_RICH_KEYPOINTS);

    imwrite(argv[2], dst);

    return 0;
}

The result is:

image description

Source of Images

It is not bad to start with but unfortunately the there are a lot (especially bigger) points which are not detected at all.

As was not able to achieve improvements by optimizing SimpleBlobDetector::Params I would like to know what I can do else to improve detection rate.

Best Bodo

edit retag flag offensive close merge delete

Comments

applying also some pre-processing filters, morphological operations in order to acute the contours of the blobs would help as well.

theodore gravatar imagetheodore ( 2015-05-02 07:04:20 -0600 )edit