How to do the image matching?
1 view (last 30 days)
Show older comments
I have cropped out individual image of the objects as shown below and require to do a template matching. I have read out on this
but could not understand. How can I apply the template matching method to my current coding? thanks
Original Image:

Processed Image:

Template:

im=imread('bus70.jpg');
im=rgb2gray(im); % convert to gray scale
im=im>graythresh(im)*255; % covert to binary
siz=size(im); % image dimensions
L=bwlabel(im,8); % Label the disconnected foreground regions (using 8 conned neighbourhood)
% Get the bounding box around each object
bb=regionprops(L,'BoundingBox');
% Crop the individual objects and store them in a cell
n=max(L(:)); % number of objects
ObjCell=cell(n,1);
for i=1:n
% Get the bb of the i-th object and offest by 2 pixels in all
% directions
bb_i=ceil(bb(i).BoundingBox);
idx_x=[bb_i(1)-2 bb_i(1)+bb_i(3)+2]; % bb_i(1) read from 1st location
idx_y=[bb_i(2)-2 bb_i(2)+bb_i(4)+2];
if idx_x(1)<1, idx_x(1)=1; end
if idx_y(1)<1, idx_y(1)=1; end
if idx_x(2)>siz(2), idx_x(2)=siz(2); end
if idx_y(2)>siz(1), idx_y(2)=siz(1); end
% Crop the object and write to ObjCell
im=L==i;
ObjCell{i}=im(idx_y(1):idx_y(2),idx_x(1):idx_x(2));
end
% Visualize the individual objects
figure
for i=1:n
subplot(1,n,i)
imshow(ObjCell{i})
end
clear im L bb n i bb_i idx_x idx_y siz
0 Comments
Answers (1)
David Young
on 7 Feb 2012
If you have the Image Processing Toolbox, use normxcorr2. In the documentation, "template" means your small image, and "A" is the large original image. You find the maximum of the result to get the accuracy of the match and the coordinates at which the best match occurs.
See Also
Categories
Find more on Geometric Transformation and Image Registration 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!