MATLAB Answers

Error in the code

5 views (last 30 days)
chaala chibani
chaala chibani on 15 Mar 2016
Edited: Walter Roberson on 10 Feb 2018
Hi,can you give how i can correct my error
this is my code:
boxPoints = imread('C:\images\ima1.bmp');
figure;
imshow(boxPoints);
title('Image of a Box');
sceneImage = imread('C:\images\im1.jpg');
figure;
imshow(sceneImage);
title('Image of a Cluttered Scene');
boxPoints =detectSURFFeatures(boxPoints);
scenePoints = detectSURFFeatures(sceneImage);
figure;
imshow(boxImage);
title('100 Strongest Feature Points from Box Image');
hold on;
plot(selectStrongest(boxPoints, 100));
figure;
imshow(sceneImage);
title('300 Strongest Feature Points from Scene Image');
hold on;
plot(selectStrongest(scenePoints, 300));
[boxFeatures, boxPoints] = extractFeatures(boxImage, boxPoints);
[sceneFeatures, scenePoints] = extractFeatures(sceneImage, scenePoints);
boxPairs = matchFeatures(boxFeatures, sceneFeatures);
matchedBoxPoints = boxPoints(boxPairs(:, 1), :);
matchedScenePoints = scenePoints(boxPairs(:, 2), :);
figure;
showMatchedFeatures(boxImage, sceneImage, matchedBoxPoints, ...
matchedScenePoints, 'montage');
title('Putatively Matched Points (Including Outliers)');
[tform, inlierBoxPoints, inlierScenePoints] = ...
estimateGeometricTransform(matchedBoxPoints, matchedScenePoints, 'affine');
figure;
showMatchedFeatures(boxImage, sceneImage, inlierBoxPoints, ...
inlierScenePoints, 'montage');
title('Matched Points (Inliers Only)');
boxPolygon = [1, 1;... % top-left
size(boxImage, 2), 1;... % top-right
size(boxImage, 2), size(boxImage, 1);... % bottom-right
1, size(boxImage, 1);... % bottom-left
1, 1]; % top-left again to close the polygon
newBoxPolygon = transformPointsForward(tform, boxPolygon);
figure;
imshow(sceneImage);
hold on;
line(newBoxPolygon(:, 1), newBoxPolygon(:, 2), 'Color', 'y');
title('Detected Box');
And this is the error:
Error in detectSURFFeatures (line 81)
checkImage(I);
Error in Untitled2 (line 1)
boxPoints = detectSURFFeatures(boxImage);
  3 Comments
Image Analyst
Image Analyst on 2 Dec 2017
Start your own question and attach your code and images(s) with the paper clip icon.

Sign in to comment.

Answers (3)

Image Analyst
Image Analyst on 16 Mar 2016
boxImage is supposed to be gray scale or binary. You just read it in from a BMP image so it's probably color. Try this and see if it fixes it:
% Get the dimensions of the image.
% numberOfColorBands should be = 1.
[rows, columns, numberOfColorChannels] = size(boxImage);
if numberOfColorChannels > 1
% It's not really gray scale like we expected - it's color.
% Convert it to gray scale by taking only the green channel.
boxImage= boxImage(:, :, 2); % Take green channel.
end
  3 Comments
Ced
Ced on 17 Mar 2016
hm... it looks like your input is correct. But what kind of image are you reading? These are the accepted input classes for
extractFeatures(I, points)
as you are calling it:
% Class Support
% -------------
% The input image I can be logical, uint8, uint16, int16, single, or
% double, and it must be real and nonsparse. POINTS can be a SURFPoints,
% MSERRegions, cornerPoints, or BRISKPoints object, or int16, uint16,
% int32, uint32, single or double.
Also, which points are you using? The output of detectSURFFeatures as you are using it above should be fine, but maybe you changed something?

Sign in to comment.


Dima Lisin
Dima Lisin on 18 Mar 2016
I am guessing that your image is M-by-N-by-3 (RGB). detectSURFFeatures only takes M-by-N grayscale images. Convert your images to grayscale using rgb2gray.

Mystery Devil
Mystery Devil on 10 Feb 2018
Can you please explain it to me what does this two lines mean?
matchedBoxPoints = boxPoints(boxPairs(:, 1), :);
matchedScenePoints = scenePoints(boxPairs(:, 2), :);
Thank you very much. It's kind of urgent.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!