Description
1. Use image called mask in file chars45.mat to study shape analysis using Hu’s moments
for the characters:
A,B,C,D,E,F,G,H,I,K,L,M,N,O,R,S,T,U,V,Y
a,c,d,e,f,g,h,i,k,l,m,n,o,p,r,s,t,u,v,y
0,1,2,3,4,5,6,7,8,9
Use a character from the image as a model, (A1, (A2, (A3, (A4, (A5, (A6), for each charac-
ter above. Develop the functions listed below and report performance in terms of overall
and per character success.
function Mpq = CS4640_central_moment(pts,p,q)
% CS4640_central_moment – compute a central moment
% Mpq = sum sum (xˆp*yˆq)
% x y
% On input:
% pts (nx2 array): row and cols of points
% p (int): exponent for x
% q (int): exponent for y
% On output:
% Mpq (float): Mpq moment
% Call:
% M00 = CS4640_central_moments([1 1; 2 2; 3 3],0,0);
% Author:
% T. Henderson
1
% UU
% Fall 2019
%
function Epq = CS4640_normal_moment(pts,p,q)
% CS4640_normal_moment – compute a central normal moment
% Epq = <pq/M00ˆb where b = 1+(p+q)/2
% On input:
% pts (nx2 array): row and cols of points
% p (int): exponent for x
% q (int): exponent for y
% On output:
% Epq (float): Epq moment
% Call:
% E00 = CS4640_normal_moment([1 1; 2 2; 3 3],0,0);
% Author:
% T. Henderson
% UU
% Fall 2019
%
function H = CS4640_Hu_moments(pts)
% CS4640_Hu_moments – compute Hu’s 6 moments
% On input:
% pts (nx2 array): row and cols of points
% On output:
% H (6×1 vector): Hu moments
% Call:
% H = CS4640_Hu_moments([1 1; 2 2; 3 3]);
% Author:
% T. Henderson
% UU
% Fall 2019
%
function H_models = CS4640_Hu_build(templates)
% CS4640_Hu_models – produce Hu models for image templates
% On input:
% templates (n-element vector struct): template images
% (k).im (MxN binary image): image template
% On output:
% H_models (nx7 array): Hu models
% Call:
% Hm = CS4640_Hu_models(templates);
2
% Author:
% T. Henderson
% UU
% Fall 2019
%
function classes = CS4640_Hu_classify(im,H_models)
% CS4640_Hu_classify – classify characters using Hu models
% On input:
% im (MxN binary image): input image
% H_models (nx7 array): Hu models for n characters
% On output:
% classes (kx2 array): class and distance for each CC
% Call:
% Hm = CS4640_Hu_classify(im,Hm);
% Author:
% T. Henderson
% UU
% Fall 2019
%
2. Implement an eigenchars classification approach similar to the eigenfaces method dis-
cussed in the text. Develop a template database of 100 images (2 examples of each charac-
ter). Build the models and then report performance on overall and per character success on
mask from chars45.mat. Develop the following functions.
function classes = CS4640_Hu_classify(im,H_models)
% CS4640_Hu_classify – classify characters using Hu models
% On input:
% im (MxN binary image): input image
% H_models (nx7 array): Hu models for n characters
% On output:
% classes (kx2 array): class and distance for each CC
% Call:
% Hm = CS4640_Hu_classify(im,Hm);
% Author:
% T. Henderson
% UU
% Fall 2019
%
3
function [V,MM,PCA_models] = CS4640_PCA_model(templates)
% CS4640_PCA_model – build PCA model from templates
% On input:
% templates (vector struct): n template images
% (k).im (MxN binary array): template image for character k
% On output:
% V (M*nxM*n array): eigenvectors
% MM (M*nx1 vector): mean vector
% PCA_models (nxk array): weight values for first k eigenvectors
% Call:
% [V,MM,PCA_models] = CS4640_PCA_model(templates);
% Author:
% T. Henderson
% UU
% Fall 2019
%
function c = CS4640_PCA_classify(im,V,MM,PCA_models)
% CS4640_PCA_classify – classify image using PCA models
% On input:
% im (MxN binary array): input image
% V (M*NxM*N array): eigenvectors
% MM (M*Nx1 vector): mean vector
% PCA_models (nxk array): weight values for first k eigenvectors
% On output:
% c (int): class
% Call:
% [V,MM,PCAm] = CS4640_PCA_model(templates);
% Author:
% T. Henderson
% UU
% Fall 2019
%
4