Matlab handwritten match

Working with handwriting pattern matching , but faces some problems in order to be very new in Matlab. I want to match this pattern
enter image description here
with this.
enter image description here

So far I have been doing this:

function result=test(image1,image2) %********************************************************* image1=rgb2gray(image1); image2=rgb2gray(image2); % check which one is target and which one is template using their size if size(image1)>size(image2) Target=image1; Template=image2; else Target=image2; Template=image1; end % find both images sizes [r1,c1]=size(Target); [r2,c2]=size(Template); % mean of the template image22=Template-mean(mean(Template)); %corrolate both images M=[]; for i=1:(r1-r2+1) for j=1:(c1-c2+1) Nimage=Target(i:i+r2-1,j:j+c2-1); Nimage=Nimage-mean(mean(Nimage)); % mean of image part under mask corr=sum(sum(Nimage.*image22)); %warning off M(i,j)=corr/sqrt(sum(sum(Nimage.^2))); end end % plot box on the target image result=plotbox(Target,Template,M); 

For plotbox ..

 function result=plotbox(Target,Template,M) %********************************************************* [r1,c1]=size(Target); [r2,c2]=size(Template); [r,c]=max(M); [r3,c3]=max(max(M)); i=c(c3); j=c3; result=Target; for x=i:i+r2-1 for y=j result(x,y)=255; end end for x=i:i+r2-1 for y=j+c2-1 result(x,y)=255; end end for x=i for y=j:j+c2-1 result(x,y)=255; end end for x=i+r2-1 for y=j:j+c2-1 result(x,y)=255; end end 

And for testing I use ..

 % read Template image im1=imread('C:\Users\Shuvro\Desktop\New folder\1.jpg'); % read Traget Image im2=imread('C:\Users\Shuvro\Desktop\New folder\2.jpg'); % apply templete matching using power of the image result1=test(im1,im2); figure, subplot(2,2,1),imshow(im1);title('Template'); subplot(2,2,2),imshow(im2);title('Target'); subplot(2,2,3),imshow(result1);title('Matching Result using tmp'); 

But this code often cannot identify this template in the source image without understanding what happened to it. Anyone can help?
Basically, when I enter 2 images into the system, I want their height to be the same. Then I want to measure the width of the image of the template, and then I want to scan the original image according to this width and examine the pixel values. When these pixel values ​​of the template will correspond to the original image of more than 70%, then I will give the result that it is found, otherwise not found.
This is what I am going to do. I really appreciate if anyone can help with the above code by editing it or giving advice.

+4
source share
1 answer

First of all, I want to warn you that size(image1)>size(image2) is a vector comparison, usually you will not want to do this. (Perhaps with all or any ).

Said:

In this particular case, the only way to find out why your code is not doing what you expect is to load the inputs that it should match, but not do it. Then go through the line of code line by line until you see some unexpected behavior.


Of course, you can also just try to find template matching functions for matlab, there should be some of them that you can find in google or maybe even in stackoverflow.

0
source

Source: https://habr.com/ru/post/1481034/


All Articles