How to apply a common function to complete directory?
Show older comments
Hi,
I want to match and detect an input image with all images contained in a folder using for loop.
For this what i did is
srcFiles = dir('path of the folder');% the folder in which ur images exists
for i = 1 : length(srcFiles)
filename = strcat('path of the folder',srcfiles(i).name);
I = rgb2gray(imread(filename));
figure, imshow(I);
end
boxImage = rgb2gray(imread(' path of an input image');
figure;
imshow(boxImage);
title('Image of a Box');
for i = 1 : length(srcFiles)
boxPoints = detectSURFFeatures(boxImage);
scenePoints = detectSURFFeatures(I);
figure;
imshow(boxImage);
title('100 Strongest Feature Points from Box Image');
hold on;
plot(selectStrongest(boxPoints, 100));
title('300 Strongest Feature Points from I');
hold on;
plot(selectStrongest(scenePoints, 300));
[boxFeatures, boxPoints] = extractFeatures(boxImage, boxPoints);
[sceneFeatures, scenePoints] = extractFeatures(I, scenePoints);
boxPairs = matchFeatures(boxFeatures, sceneFeatures);
matchedBoxPoints = boxPoints(boxPairs(:, 1),:);
matchedScenePoints = scenePoints(boxPairs(:, 2),:);
figure;
showMatchedFeatures(boxImage, I,matchedBoxPoints, ...
matchedScenePoints,'montage');
title('Putatively Matched Points (Including Outliers)');
[tform, inlierBoxPoints, inlierScenePoints] = ...
estimateGeometricTransform(matchedBoxPoints, matchedScenePoints, 'affine');
figure;
showMatchedFeatures(boxImage, I, 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);
newBoxPolygon1 = transformPointsForward(tform, boxPolygon);
figure;
imshow(I);
hold on;
x=line(newBoxPolygon(:, 1),newBoxPolygon1(:, 2), 'Color', 'g');
title('Detected Box');
end
This is the source code which i was tried, but i am not getting exact requirement. It is showing only one matched image from all images eventhough there are having some more similar images w.r.t an input image. can somebody help me?
Thanks in advance
Answers (1)
Jan
on 7 Mar 2016
The posted code will not display the wrong results, but it will not even run at all. There is at least a missing parenthesis.
srcFiles = dir('path');% the folder in which ur images exists
Are you aware, that you have to replace 'path' with the name of the folder you find the images in? Better:
Folder = <your folder comes here>
srcFiles = dir(Folder);% the folder in which ur images exists
for i = 1 : length(srcFiles)
filename = fullfile(Folder, srcfiles(i).name);
I = rgb2gray(imread(filename));
figure, imshow(I);
end
Now a lot of figures are opened. But I assume you want to include the rest of the processing in the loop also.
So omit:
boxImage = rgb2gray(imread('path'); % Line failes due to missing )
But use
boxImage = I;
and join both loops.
1 Comment
Sindoora Pottavathini
on 7 Mar 2016
Categories
Find more on Feature Detection and Extraction in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!