图片提取:输入图片时代码停止执行

Image extraction: when entering image code stops executing

我必须使用 MATLAB 中的图像提取来提取图像的特征。它与 MathWorks 在他们的教程中提供的图像一起成功工作,但是当我输入另一个图像时它不起作用

我的图像提取代码是:

boxImage = imread('stapleRemover.jpg');
%boxImage = imread('D:\matlab test\book\IMG_2294.jpg');

figure;
imshow(boxImage);
title('Image of a Box');

%sceneImage = imread('D:\matlab test\book\IMG_2291.jpg');
sceneImage = imread('clutteredDesk.jpg');
figure;
imshow(sceneImage);
title('Image of Cluttered Scene');

%detecting feature point
boxPoints = detectSURFFeatures(boxImage);
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));

%extracting feature descriptor
[boxFeatures, boxPoints] = extractFeatures(boxImage, boxPoints);
[sceneFeatures, scenePoints] = extractFeatures(sceneImage, scenePoints);

%finding putative point match
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)');

%locating object in the scene using putative matches
[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(boxPolygon);
imshow(sceneImage);
hold on;
line(newBoxPolygon(:, 1), newBoxPolygon(:, 2), 'Color', 'y');
title('Detected Box');

它运行成功,但是当我改变我用我的相机制作的图像时,它停止执行这一行的代码:

boxPoints = detectSURFFeatures(boxImage);

谁能帮我解决一下?

你遇到了什么错误?根据您提供的信息,我猜您的图像是 RGB,您需要将其转换为灰度,然后再将其传递给 detectSURFFeatures。

未定义函数showMatchedFeatures 对于 SURFPoints 类型的输入参数。 在 matlab 2012a