<< FilterBySize IPD - Image Processing Design GetVideoInfo >>

IPD - Image Processing Design >> IPD - Image Processing Design > FindBestMatches

FindBestMatches

はテンプレート画像とソース画像間の類以度が最も高い画素を探索する

呼び出し

MatchList = FindBestMatches(Match, TemplateImageSize, Method);

引数

Match

2次元の行列で、型は doubleで、MatchTemplateの結果である

TemplateImageSize

構成要素2つになるベクトルで、テンプレート画像における行と列の数を含む

Method

定数で、型はuint8で、以下の値は可能である:

  • MATCH_LEAST_SQUARES: SourceImageとTemplateImage間のグレー値の差の2乗の合計

  • MATCH_CORRELATION: SourceImageとTemplateImage間の相関

  • MATCH_LEAST_SQUARES_NORM: SourceImageとTemplateImage間のグレー値の差の2乗の正規化された合計

  • MATCH_CORRELATION_NORM: SourceImageとTemplateImage間のの正規化された相関

MatchList

行列で、列2つがある。各行は画素における座標を指定する。1つ目の構成要素は列を指定し、2つ目の列は行を指定する

説明

本関数はテンプレート画像とソース画像間の類以度が最も高い画素を探索する。発見された画素の座標はソース画像に相当する。

global MATCH_CORRELATION_NORM;

global IPD_PATH;

SourceColorImage = ReadImage(IPD_PATH + 'demos\teaset.png');

SourceImage = RGB2Gray(SourceColorImage);

TemplateColorImage = ReadImage(IPD_PATH + 'demos\cropped_image.png');

TemplateImage = RGB2Gray(TemplateColorImage);

Match = MatchTemplate(SourceImage, TemplateImage, MATCH_CORRELATION_NORM);
                      
MatchList = FindBestMatches(Match, size(TemplateImage), MATCH_CORRELATION_NORM);
                            
SquareList = list();
                            
for n = 1 : size(MatchList, 1)
  
 SquareList($ + 1) = struct('BoundingBox', cat(2, MatchList(n, :) - [1 1], [3 3])');
  
end;                            

SourceHandle = figure();
                            
ShowColorImage(SourceColorImage, 'Image with Marked Match Positions');

DrawBoundingBoxes(SquareList, [0 1 0], SourceHandle);

TemplateHandle = figure();

ShowColorImage(TemplateColorImage, 'Template Image');

参考

<< FilterBySize IPD - Image Processing Design GetVideoInfo >>