Ask an expert. Trust the answer.

Your academic and career questions answered by verified experts

How to combine SURF and Harris points MATLAB

Date: 2022-11-30 13:33:13

As we know at Matlab, there is function to detect Harris or SURF feature individually. Then I need to combine these two list of features from both the Harris and SURF to make the matching more efficient.

the following is the default procedure that we know

points_image_Harris =detectHarrisFeatures(image );
[feature_image_Harris, validpoints_image_Harris] = extractFeatures(image,  points_image_Harris ); 
indexPairs_Harris = matchFeatures(feature_template_Harris,feature_image_Harris);

but I want to combine two list of points before make matching: something like this:

points_image_Harris =detectHarrisFeatures(image );
points_image_SURF =detectSURFFeatures(image );
Points = points_image_Harris  + points_image_SURF 

then use the Points list to make feature extraction and them matching. How to do this? if they are have two different types? cornerPoints and SURFPoints !

I need both features generated from both SURF and Harris, as the following output: 

As we know at Matlab, there is function to detect Harris or SURF feature individually. Then I need to combine these two list of features from both the Harris and SURF to make the matching more efficient.

the following is the default procedure that we know

points_image_Harris =detectHarrisFeatures(image );
[feature_image_Harris, validpoints_image_Harris] = extractFeatures(image,  points_image_Harris ); 
indexPairs_Harris = matchFeatures(feature_template_Harris,feature_image_Harris);

but I want to combine two list of points before make matching: something like this:

points_image_Harris =detectHarrisFeatures(image );
points_image_SURF =detectSURFFeatures(image );
Points = points_image_Harris  + points_image_SURF 

then use the Points list to make feature extraction and them matching. How to do this? if they are have two different types? cornerPoints and SURFPoints !

I need both features generated from both SURF and Harris, as the following output:

enter image description here

I don't know if the combination is possible or any idea to get both matching features from both.

Actually I want to detect these features, then I want to get the location of those pixels from the frames and then calculate difference between both X and Y position.

Also I don't Know how to get the features coordinates position from the SURF & Harris matching?? 

Expert Answer:

s: 

Using detectHarrisFeatures and detectSURFFeatures essentially returns a structure where each field contains relevant information about the interest points that are detected in the image. To give a reproducible example, let's use the cameraman.tif image that is part of the image processing toolbox. Let's also use both feature detection frameworks with the default parameters: 

 

>> im = imread('cameraman.tif'); >> harrisPoints = detectHarrisFeatures(im); >> surfPoints = detectSURFFeatures(im); 

When we display harrisPoints, this is what we get: 

 

harrisPoints = 184x1 cornerPoints array with properties: Location: [184x2 single] Metric: [184x1 single] Count: 184 

When we display surfPoints, this is what we get: 

 

surfPoints = 180x1 SURFPoints array with properties: Scale: [180x1 single] SignOfLaplacian: [180x1 int8] Orientation: [180x1 single] Location: [180x2 single] Metric: [180x1 single] Count: 180

Using detectHarrisFeatures and detectSURFFeatures essentially returns a structure where each field contains relevant information about the interest points that are detected in the image. To give a reproducible example, let's use the cameraman.tif image that is part of the image processing toolbox. Let's also use both feature detection frameworks with the default parameters:

>> im = imread('cameraman.tif');
>> harrisPoints = detectHarrisFeatures(im);
>> surfPoints = detectSURFFeatures(im);

When we display harrisPoints, this is what we get:

harrisPoints = 

  184x1 cornerPoints array with properties:

    Location: [184x2 single]
      Metric: [184x1 single]
       Count: 184

When we display surfPoints, this is what we get:

surfPoints = 

  180x1 SURFPoints array with properties:

              Scale: [180x1 single]
    SignOfLaplacian: [180x1 int8]
        Orientation: [180x1 single]
           Location: [180x2 single]
             Metric: [180x1 single]
              Count: 180

As such, both harrisPoints and surfPoints have a field called Location which contains the spatial coordinates of the features you want. This would be a N x 2 matrix where each row gives you the location of a feature point. The first column is the x or horizontal coordinate and the second column is the y or vertical coordinate. The origin is at the top left corner of the image, and the y coordinate is positive when moving downwards.

Therefore, if you want to combine both of the feature points together, access the Location field of both objects and concatenate them together into a single matrix:

>> Points = [harrisPoints.Location; surfPoints.Location];

Points should now contain a matrix where each row gives you a feature point.


I'd like to make a small note that the Harris corner detector is just an interest point detection algorithm. All that is given to you are the locations of interesting points in the image. SURF is both a detection and description framework, where not only do you get interest points, but you also get a good robust description of each interest point that you can use to perform matching between other interest points in other images. Therefore, if you wanted to combine both Harris and SURF together, that isn't possible because Harris does not support describing interest points. 

 

Why Matlabhelpers ?

Our Matlab assignment helpers for online MATLAB assignment help service take utmost care of your assignments by keeping the codes simple yet of high-quality. We offer the most reliable MATLAB solutions to students pursuing their Computer Science course from the Monash University, the University of Sydney, the University of New South Wales, the University of Melbourne; to name a few. Approach us today for best Matlab solutions online!

Our Comprehensive Matlab Assignment Help Services

Personalized Tutoring:Our team of MATLAB experts offers one-on-one tutoring sessions tailored to your specific needs. Whether you’re struggling with basic concepts or advanced algorithms, we provide clear, step-by-step guidance to help you understand and master MATLAB.

Assignment Assistance:Facing tight deadlines or complex assignments? We’re here to help! From initial problem analysis to code development and debugging, we offer full-spectrum support to ensure your assignments meet the highest standards.

Project Development: Need help with a research project? Our specialists can assist you in designing and implementing robust MATLAB solutions. We cover everything from project planning and data collection to coding, simulation, and result analysis.

Coursework Support: We provide comprehensive support for your coursework, helping you understand lectures, complete lab exercises, and prepare for exams. Our goal is to ensure you grasp the core principles and practical applications of MATLAB.

Thesis and Dissertation Guidance:Writing a thesis or dissertation? Our experts can assist you in incorporating MATLAB for data analysis, modeling, and simulation. We help you develop a strong methodological framework and ensure your research stands out.

whatsApp order on matlabhelpers.com

telegram order on matlabsolutions.com