Simple lecteur de texte (OCR) dans Matlab

Je suis en train d'écrire un programme simple à lire une image bmp en échelle de gris. J'ai un ensemble de modèles (l'ensemble de l'alphabet, sauf pour les 'I') et je veux les faire correspondre. J'ai des problèmes dans Matlab.

Ce que j'ai obtenu jusqu'à présent:

clear
clc

%set of patterns
BW1 = imread('alphabet.bmp');
patterns = bwlabel(~BW1);
patternStats = regionprops(patterns,'all');

patternNumber = size(patternStats);
imagePatternArray = cell(patternNumber);

%make cell array of pattern vectors
for i = 1:1:patternNumber
  imageMatrix = patternStats(i).Image;
  imageVector = imageMatrix(:);
  imagePatternArray{i} = imageVector;
end  

%set of chars
BW2 = imread('text.bmp');
text = bwlabel(~BW2);
textStats = regionprops(text,'all');

letterNumber = size(textStats);
imageLetterArray = cell(letterNumber);

%make cell array of text vectors
for i = 1:1:letterNumber
  imageMatrix = textStats(i).Image;
  imageVector = imageMatrix(:);
  imageLetterArray{i} = imageVector;
end

%lookup table
charSet =['A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];

Maintenant, je voudrais comparer le modèle avec des vecteurs le vecteur donné, mais ils ont des tailles différentes.

Comment puis-je faire cela? Est-il spécial fonction de comparaison? Dois-je ajouter de 0s à la fin et ensuite de calculer la distance avec pdist?

Ce que vous voulez probablement à faire est d'utiliser la corrélation à des échelles différentes (tailles.) C'est le plus simple OCR qui existe. Regardez la fonction normxcorr2, spécifiquement les exemples dans matlab.

OriginalL'auteur Lukasz Madon | 2011-04-05