{VERSION 3 0 "APPLE_PPC_MAC" "3.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 }{CSTYLE "2D Comment" 2 18 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 } {CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 }{PSTYLE " Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 }1 0 0 0 8 4 0 0 0 0 0 0 -1 0 } {PSTYLE "Heading 2" 3 4 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 8 2 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 3" 4 5 1 {CSTYLE "" -1 -1 "" 1 12 0 0 0 0 1 0 0 0 0 0 0 0 0 }0 0 0 -1 0 0 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Map le Plot" 0 13 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {SECT 1 {PARA 3 "" 0 "" {TEXT -1 12 "Introduction" }}{PARA 0 " " 0 "" {TEXT -1 312 "This worksheet demonstrates some of the key conce pts associated with recognizing images based upon nearest neighbor com parisons in the Eigenspace associated with a set of training images. \+ This has been prepared to go with CS510 and the text \"Introductory Te chniques for 3-D Computer Vision\" by Trucco and Verri." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 126 "A series of these w orksheets have been made available showing slightly different test cas es. This is the first in the series. " }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}{PARA 0 "" 0 "" {TEXT -1 43 "Ross Beveridge April 23 , 1999" }}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 15 "Initializations" }} {PARA 0 "" 0 "" {TEXT -1 20 "Libraires used here." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "with(linalg):\nwith(stats):\nwith(plots):" } {TEXT -1 1 "\n" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 240 "Here are some \+ global variables used to adjust how this worksheet behaves. It is thu s possible to change the size of the test images, the low and high val ues in these images, the number of instances of each class in the trai ning data, etc. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 270 "imageS ize := 4; # The row and column dimension of the images\nimageLo w := 2.0; # The low value in the test imagery\nimageHigh := 7 .0; # The high value in the test imagery\ntrainingSize := 15; # \+ The number of training images. Should be a multiple of 3." }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%*imageSizeG\"\"%" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)imageLowG$\"#?!\"\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%*imageHighG$\"#q!\"\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%-train ingSizeG\"#:" }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 23 "Some Library Pr ocedures" }}{PARA 0 "" 0 "" {TEXT -1 238 "The followling procedures ar e helpful for working viewing images and vectors in this worksheet. Th ey are not by themselves interesting. At the end is commented out expr ession which will display all the images together, one row per class. \+ " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 400 "displayMatrixAsImage := proc(A,maxVal)\n local rs, cs, i, j, Poly, val:\n Poly := [];\n \+ for i from 1 to rowdim(A) do\n for j from 1 to coldim(A) do\n \+ val := convert(A[i,j] / maxVal,float):\n Poly := [op(Po ly), \n POLYGONS([[i, j, A[i,j]], [i, j+1, A[i,j]], [i+1, j+1, A[i,j]], [i+1, j, A[i,j]]],\n COLOR(RGB,val,val,val) )]:\n od:\n od:\n Poly:\nend: " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 503 "displayMatrixAsImageAppend := proc(Lst, A, maxVal, o ffr, offc)\n local rs, cs, i, j, ri, ci, val, Poly:\n Poly := Lst: \n for i from 1 to rowdim(A) do\n for j from 1 to coldim(A) do \n val := convert(A[i,j] / maxVal,float):\n ri := i + offr:\n ci := j + offc:\n Poly := [op(Poly), \n \+ POLYGONS([[ri, ci, A[i,j]], [ri, ci+1, A[i,j]], [ri+1, ci+1, A[i,j]], [ri+1, ci, A[i,j]]],\n COLOR(RGB,val, val,val))]:\n od:\n od:\n Poly:\nend:" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 753 "displayImages := proc(imageList,maxVal)\n l ocal i, samples, ims, offr, offc:\n ims := []:\n samples := fl oor(trainingSize/3):\n offr := 0:\n offc := 0:\n for i fro m 1 to samples do\n ims := displayMatrixAsImageAppend(ims,imageLi st[i],maxVal,offr, offc):\n offc := offc + imageSize + 2:\n od: \n offr := offr + imageSize+2:\n offc := 0:\n for i from sa mples + 1 to 2*samples do\n ims := displayMatrixAsImageAppend(ims ,imageList[i],maxVal,offr, offc):\n offc := offc + imageSize + 2: \n od:\n offr := offr + imageSize+2:\n offc := 0:\n for i from 2*samples+1 to 3*samples do\n ims := displayMatrixAsImageAp pend(ims,imageList[i],maxVal,offr, offc):\n offc := offc + imageS ize + 2:\n od:\n ims:\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 82 "display(displayImages(trainImages,10),orientation=[0.0,0.0],sc aling=CONSTRAINED);\n" }}{PARA 13 "" 1 "" {GLPLOT3D 400 300 300 {PLOTDATA 3 "6^z-%)POLYGONSG6$7&7%\"\"\"F($\"$)H!\"#7%F(\"\"#F)7%F-F-F )7%F-F(F)-%&COLORG6&%$RGBG$\"++++!)H!#5F4F4-F$6$7&7%F(F-$\"$i#F+7%F(\" \"$F;7%F-F>F;7%F-F-F;-F16&F3$\"++++?EF6FCFC-F$6$7&7%F(F>$\"#\"*F+7%F( \"\"%FI7%F-FLFI7%F-F>FI-F16&F3$\"+++++\"*!#6FQFQ-F$6$7&7%F(FL$\"$K\"F+ 7%F(\"\"&FX7%F-FenFX7%F-FLFX-F16&F3$\"++++?8F6FjnFjn-F$6$7&7%F-F($\"#_ F+7%F-F-F`o7%F>F-F`o7%F>F(F`o-F16&F3$\"+++++_FSFgoFgo-F$6$7&7%F-F-$\"$ =(F+7%F-F>F]p7%F>F>F]p7%F>F-F]p-F16&F3$\"++++!=(F6FdpFdp-F$6$7&7%F-F>$ \"$T)F+7%F-FLFjp7%F>FLFjp7%F>F>Fjp-F16&F3$\"++++5%)F6FaqFaq-F$6$7&7%F- FL$\"$7#F+7%F-FenFgq7%F>FenFgq7%F>FLFgq-F16&F3$\"++++?@F6F^rF^r-F$6$7& 7%F>F($!#BF+7%F>F-Fdr7%FLF-Fdr7%FLF(Fdr-F16&F3$!+++++BFSF[sF[s-F$6$7&7 %F>F-$\"$2)F+7%F>F>Fas7%FLF>Fas7%FLF-Fas-F16&F3$\"++++q!)F6FhsFhs-F$6$ 7&7%F>F>$\"$I(F+7%F>FLF^t7%FLFLF^t7%FLF>F^t-F16&F3$\"+++++tF6FetFet-F$ 6$7&7%F>FL$\"$Z#F+7%F>FenF[u7%FLFenF[u7%FLFLF[u-F16&F3$\"++++qCF6FbuFb u-F$6$7&7%FLF($\"$,\"F+7%FLF-Fhu7%FenF-Fhu7%FenF(Fhu-F16&F3$\"++++55F6 F_vF_v-F$6$7&7%FLF-$\"#)*F+7%FLF>Fev7%FenF>Fev7%FenF-Fev-F16&F3$\"++++ +)*FSF\\wF\\w-F$6$7&7%FLF>$\"$a\"F+7%FLFLFbw7%FenFLFbw7%FenF>Fbw-F16&F 3$\"++++S:F6FiwFiw-F$6$7&7%FLFL$\"$o$F+7%FLFenF_x7%FenFenF_x7%FenFLF_x -F16&F3$\"++++!o$F6FfxFfx-F$6$7&7%F(\"\"($\"$f\"F+7%F(\"\")F]y7%F-F`yF ]y7%F-F\\yF]y-F16&F3$\"++++!f\"F6FeyFey-F$6$7&7%F(F`y$\"$H\"F+7%F(\"\" *F[z7%F-F^zF[z7%F-F`yF[z-F16&F3$\"++++!H\"F6FczFcz-F$6$7&7%F(F^z$\"$l \"F+7%F(\"#5Fiz7%F-F\\[lFiz7%F-F^zFiz-F16&F3$\"++++];F6Fa[lFa[l-F$6$7& 7%F(F\\[l$\"$6$F+7%F(\"#6Fg[l7%F-Fj[lFg[l7%F-F\\[lFg[l-F16&F3$\"++++5J F6F_\\lF_\\l-F$6$7&7%F-F\\y$\"$D#F+7%F-F`yFe\\l7%F>F`yFe\\l7%F>F\\yFe \\l-F16&F3$\"++++]AF6F\\]lF\\]l-F$6$7&7%F-F`y$\"$A)F+7%F-F^zFb]l7%F>F^ zFb]l7%F>F`yFb]l-F16&F3$\"++++?#)F6Fi]lFi]l-F$6$7&7%F-F^z$\"$z&F+7%F-F \\[lF_^l7%F>F\\[lF_^l7%F>F^zF_^l-F16&F3$\"++++!z&F6Ff^lFf^l-F$6$7&7%F- F\\[l$\"$4$F+7%F-Fj[lF\\_l7%F>Fj[lF\\_l7%F>F\\[lF\\_l-F16&F3$\"++++!4$ F6Fc_lFc_l-F$6$7&7%F>F\\y$\"$5\"F+7%F>F`yFi_l7%FLF`yFi_l7%FLF\\yFi_l-F 16&F3$\"+++++6F6F``lF``l-F$6$7&7%F>F`y$\"$Z(F+7%F>F^zFf`l7%FLF^zFf`l7% FLF`yFf`l-F16&F3$\"++++quF6F]alF]al-F$6$7&7%F>F^z$\"$'zF+7%F>F\\[lFcal 7%FLF\\[lFcal7%FLF^zFcal-F16&F3$\"++++gzF6FjalFjal-F$6$7&7%F>F\\[l$\"$ b\"F+7%F>Fj[lF`bl7%FLFj[lF`bl7%FLF\\[lF`bl-F16&F3$\"++++]:F6FgblFgbl-F $6$7&7%FLF\\y$\"$H$F+7%FLF`yF]cl7%FenF`yF]cl7%FenF\\yF]cl-F16&F3$\"+++ +!H$F6FdclFdcl-F$6$7&7%FLF`y$\"$i\"F+7%FLF^zFjcl7%FenF^zFjcl7%FenF`yFj cl-F16&F3$\"++++?;F6FadlFadl-F$6$7&7%FLF^z$\"$\"HF+7%FLF\\[lFgdl7%FenF \\[lFgdl7%FenF^zFgdl-F16&F3$\"++++5HF6F^elF^el-F$6$7&7%FLF\\[l$!$7\"F+ 7%FLFj[lFdel7%FenFj[lFdel7%FenF\\[lFdel-F16&F3$!++++?6F6F[flF[fl-F$6$7 &7%F(\"#8$\"#rF+7%F(\"#9Fbfl7%F-FeflFbfl7%F-FaflFbfl-F16&F3$\"+++++rFS FjflFjfl-F$6$7&7%F(Fefl$\"$N#F+7%F(\"#:F`gl7%F-FcglF`gl7%F-FeflF`gl-F1 6&F3$\"++++]BF6FhglFhgl-F$6$7&7%F(Fcgl$\"$g$F+7%F(\"#;F^hl7%F-FahlF^hl 7%F-FcglF^hl-F16&F3$\"+++++OF6FfhlFfhl-F$6$7&7%F(Fahl$\"$Y#F+7%F(\"#FeflFjil7%F>FaflFjil-F16&F3$\"+++++!)FSFajlFa jl-F$6$7&7%F-Fefl$\"$V(F+7%F-FcglFgjl7%F>FcglFgjl7%F>FeflFgjl-F16&F3$ \"++++IuF6F^[mF^[m-F$6$7&7%F-Fcgl$\"$/(F+7%F-FahlFd[m7%F>FahlFd[m7%F>F cglFd[m-F16&F3$\"++++SqF6F[\\mF[\\m-F$6$7&7%F-FahlF]y7%F-F_ilF]y7%F>F_ ilF]y7%F>FahlF]yFcy-F$6$7&7%F>Fafl$\"$<$F+7%F>FeflFh\\m7%FLFeflFh\\m7% FLFaflFh\\m-F16&F3$\"++++qJF6F_]mF_]m-F$6$7&7%F>FeflF_^l7%F>FcglF_^l7% FLFcglF_^l7%FLFeflF_^lFd^l-F$6$7&7%F>Fcgl$\"$p&F+7%F>FahlF\\^m7%FLFahl F\\^m7%FLFcglF\\^m-F16&F3$\"++++!p&F6Fc^mFc^m-F$6$7&7%F>Fahl$\"$'>F+7% F>F_ilFi^m7%FLF_ilFi^m7%FLFahlFi^m-F16&F3$\"++++g>F6F`_mF`_m-F$6$7&7%F LFafl$\"$M%F+7%FLFeflFf_m7%FenFeflFf_m7%FenFaflFf_m-F16&F3$\"++++SVF6F ]`mF]`m-F$6$7&7%FLFefl$\"$O\"F+7%FLFcglFc`m7%FenFcglFc`m7%FenFeflFc`m- F16&F3$\"++++g8F6Fj`mFj`m-F$6$7&7%FLFcgl$\"$R#F+7%FLFahlF`am7%FenFahlF `am7%FenFcglF`am-F16&F3$\"++++!R#F6FgamFgam-F$6$7&7%FLFahl$\"$O%F+7%FL F_ilF]bm7%FenF_ilF]bm7%FenFahlF]bm-F16&F3$\"++++gVF6FdbmFdbm-F$6$7&7%F (\"#>$\"$0\"F+7%F(\"#?F[cm7%F-F^cmF[cm7%F-FjbmF[cm-F16&F3$\"++++]5F6Fc cmFccm-F$6$7&7%F(F^cm$\"#bF+7%F(\"#@Ficm7%F-F\\dmFicm7%F-F^cmFicm-F16& F3$\"+++++bFSFadmFadm-F$6$7&7%F(F\\dm$\"$g\"F+7%F(\"#AFgdm7%F-FjdmFgdm 7%F-F\\dmFgdm-F16&F3$\"+++++;F6F_emF_em-F$6$7&7%F(Fjdm$\"#(*F+7%F(\"#B Feem7%F-FhemFeem7%F-FjdmFeem-F16&F3$\"+++++(*FSF]fmF]fm-F$6$7&7%F-Fjbm $\"$\\$F+7%F-F^cmFcfm7%F>F^cmFcfm7%F>FjbmFcfm-F16&F3$\"++++!\\$F6FjfmF jfm-F$6$7&7%F-F^cm$\"$L(F+7%F-F\\dmF`gm7%F>F\\dmF`gm7%F>F^cmF`gm-F16&F 3$\"++++ItF6FggmFggm-F$6$7&7%F-F\\dm$\"$V'F+7%F-FjdmF]hm7%F>FjdmF]hm7% F>F\\dmF]hm-F16&F3$\"++++IkF6FdhmFdhm-F$6$7&7%F-Fjdm$\"$V\"F+7%F-FhemF jhm7%F>FhemFjhm7%F>FjdmFjhm-F16&F3$\"++++I9F6FaimFaim-F$6$7&7%F>Fjbm$ \"$,#F+7%F>F^cmFgim7%FLF^cmFgim7%FLFjbmFgim-F16&F3$\"++++5?F6F^jmF^jm- F$6$7&7%F>F^cm$\"$m(F+7%F>F\\dmFdjm7%FLF\\dmFdjm7%FLF^cmFdjm-F16&F3$\" ++++gwF6F[[nF[[n-F$6$7&7%F>F\\dm$\"$?)F+7%F>FjdmFa[n7%FLFjdmFa[n7%FLF \\dmFa[n-F16&F3$\"+++++#)F6Fh[nFh[n-F$6$7&7%F>Fjdm$\"$m\"F+7%F>FhemF^ \\n7%FLFhemF^\\n7%FLFjdmF^\\n-F16&F3$\"++++g;F6Fe\\nFe\\n-F$6$7&7%FLFj bmFi^m7%FLF^cmFi^m7%FenF^cmFi^m7%FenFjbmFi^mF^_m-F$6$7&7%FLF^cm$\"$#=F +7%FLF\\dmFb]n7%FenF\\dmFb]n7%FenF^cmFb]n-F16&F3$\"++++?=F6Fi]nFi]n-F$ 6$7&7%FLF\\dm$\"$_#F+7%FLFjdmF_^n7%FenFjdmF_^n7%FenF\\dmF_^n-F16&F3$\" ++++?DF6Ff^nFf^n-F$6$7&7%FLFjdm$\"$_\"F+7%FLFhemF\\_n7%FenFhemF\\_n7%F enFjdmF\\_n-F16&F3$\"++++?:F6Fc_nFc_n-F$6$7&7%F(\"#D$\"#*)F+7%F(\"#EFj _n7%F-F]`nFj_n7%F-Fi_nFj_n-F16&F3$\"+++++*)FSFb`nFb`n-F$6$7&7%F(F]`n$ \"$u#F+7%F(\"#FFh`n7%F-F[anFh`n7%F-F]`nFh`n-F16&F3$\"++++SFF6F`anF`an- F$6$7&7%F(F[an$!#?F+7%F(\"#GFfan7%F-FianFfan7%F-F[anFfan-F16&F3$!+++++ ?FSF^bnF^bn-F$6$7&7%F(Fian$\"$(>F+7%F(\"#HFdbn7%F-FgbnFdbn7%F-FianFdbn -F16&F3$\"++++q>F6F\\cnF\\cn-F$6$7&7%F-Fi_n$\"$e#F+7%F-F]`nFbcn7%F>F]` nFbcn7%F>Fi_nFbcn-F16&F3$\"++++!e#F6FicnFicn-F$6$7&7%F-F]`n$\"$v&F+7%F -F[anF_dn7%F>F[anF_dn7%F>F]`nF_dn-F16&F3$\"++++]dF6FfdnFfdn-F$6$7&7%F- F[an$\"$1'F+7%F-FianF\\en7%F>FianF\\en7%F>F[anF\\en-F16&F3$\"++++ggF6F cenFcen-F$6$7&7%F-Fian$\"$C#F+7%F-FgbnFien7%F>FgbnFien7%F>FianFien-F16 &F3$\"++++SAF6F`fnF`fn-F$6$7&7%F>Fi_nFg[l7%F>F]`nFg[l7%FLF]`nFg[l7%FLF i_nFg[lF]\\l-F$6$7&7%F>F]`n$\"$%*)F+7%F>F[anF]gn7%FLF[anF]gn7%FLF]`nF] gn-F16&F3$\"++++S*)F6FdgnFdgn-F$6$7&7%F>F[an$\"$&eF+7%F>FianFjgn7%FLFi anFjgn7%FLF[anFjgn-F16&F3$\"++++]eF6FahnFahn-F$6$7&7%F>Fian$\"$j#F+7%F >FgbnFghn7%FLFgbnFghn7%FLFianFghn-F16&F3$\"++++IEF6F^inF^in-F$6$7&7%FL Fi_n$\"$g#F+7%FLF]`nFdin7%FenF]`nFdin7%FenFi_nFdin-F16&F3$\"+++++EF6F[ jnF[jn-F$6$7&7%FLF]`n$\"$;&F+7%FLF[anFajn7%FenF[anFajn7%FenF]`nFajn-F1 6&F3$\"++++g^F6FhjnFhjn-F$6$7&7%FLF[an$\"$?#F+7%FLFianF^[o7%FenFianF^[ o7%FenF[anF^[o-F16&F3$\"+++++AF6Fe[oFe[o-F$6$7&7%FLFian$\"$4\"F+7%FLFg bnF[\\o7%FenFgbnF[\\o7%FenFianF[\\o-F16&F3$\"++++!4\"F6Fb\\oFb\\o-F$6$ 7&7%F\\yF($\"$7'F+7%F\\yF-Fh\\o7%F`yF-Fh\\o7%F`yF(Fh\\o-F16&F3$\"++++? hF6F_]oF_]o-F$6$7&7%F\\yF-$\"$%>F+7%F\\yF>Fe]o7%F`yF>Fe]o7%F`yF-Fe]o-F 16&F3$\"++++S>F6F\\^oF\\^o-F$6$7&7%F\\yF>$\"$o'F+7%F\\yFLFb^o7%F`yFLFb ^o7%F`yF>Fb^o-F16&F3$\"++++!o'F6Fi^oFi^o-F$6$7&7%F\\yFL$\"#**F+7%F\\yF enF__o7%F`yFenF__o7%F`yFLF__o-F16&F3$\"+++++**FSFf_oFf_o-F$6$7&7%F`yF( $\"$j)F+7%F`yF-F\\`o7%F^zF-F\\`o7%F^zF(F\\`o-F16&F3$\"++++I')F6Fc`oFc` o-F$6$7&7%F`yF-$\"$:$F+7%F`yF>Fi`o7%F^zF>Fi`o7%F^zF-Fi`o-F16&F3$\"++++ ]JF6F`aoF`ao-F$6$7&7%F`yF>$\"$P'F+7%F`yFLFfao7%F^zFLFfao7%F^zF>Ffao-F1 6&F3$\"++++qjF6F]boF]bo-F$6$7&7%F`yFL$\"$]$F+7%F`yFenFcbo7%F^zFenFcbo7 %F^zFLFcbo-F16&F3$\"+++++NF6FjboFjbo-F$6$7&7%F^zF($\"$*oF+7%F^zF-F`co7 %F\\[lF-F`co7%F\\[lF(F`co-F16&F3$\"++++!*oF6FgcoFgco-F$6$7&7%F^zF-$\"$ \\\"F+7%F^zF>F]do7%F\\[lF>F]do7%F\\[lF-F]do-F16&F3$\"++++!\\\"F6FddoFd do-F$6$7&7%F^zF>$\"$-(F+7%F^zFLFjdo7%F\\[lFLFjdo7%F\\[lF>Fjdo-F16&F3$ \"++++?qF6FaeoFaeo-F$6$7&7%F^zFL$\"$t#F+7%F^zFenFgeo7%F\\[lFenFgeo7%F \\[lFLFgeo-F16&F3$\"++++IFF6F^foF^fo-F$6$7&7%F\\[lF($\"$3(F+7%F\\[lF-F dfo7%Fj[lF-Fdfo7%Fj[lF(Fdfo-F16&F3$\"++++!3(F6F[goF[go-F$6$7&7%F\\[lF- $\"$v#F+7%F\\[lF>Fago7%Fj[lF>Fago7%Fj[lF-Fago-F16&F3$\"++++]FF6FhgoFhg o-F$6$7&7%F\\[lF>$\"$5(F+7%F\\[lFLF^ho7%Fj[lFLF^ho7%Fj[lF>F^ho-F16&F3$ F[glF6FehoFeho-F$6$7&7%F\\[lFL$\"$\">F+7%F\\[lFenFjho7%Fj[lFenFjho7%Fj [lFLFjho-F16&F3$\"++++5>F6FaioFaio-F$6$7&7%F\\yF\\y$\"$#fF+7%F\\yF`yFg io7%F`yF`yFgio7%F`yF\\yFgio-F16&F3$\"++++?fF6F^joF^jo-F$6$7&7%F\\yF`y$ \"$&=F+7%F\\yF^zFdjo7%F`yF^zFdjo7%F`yF`yFdjo-F16&F3$\"++++]=F6F[[pF[[p -F$6$7&7%F\\yF^z$\"$;(F+7%F\\yF\\[lFa[p7%F`yF\\[lFa[p7%F`yF^zFa[p-F16& F3$\"++++grF6Fh[pFh[p-F$6$7&7%F\\yF\\[l$\"$B\"F+7%F\\yFj[lF^\\p7%F`yFj [lF^\\p7%F`yF\\[lF^\\p-F16&F3$\"++++I7F6Fe\\pFe\\p-F$6$7&7%F`yF\\y$\"$ <%F+7%F`yF`yF[]p7%F^zF`yF[]p7%F^zF\\yF[]p-F16&F3$\"++++qTF6Fb]pFb]p-F$ 6$7&7%F`yF`y$\"$x\"F+7%F`yF^zFh]p7%F^zF^zFh]p7%F^zF`yFh]p-F16&F3$\"+++ +q#F+7%F`yFj[lFb _p7%F^zFj[lFb_p7%F^zF\\[lFb_p-F16&F3$\"++++!>#F6Fi_pFi_p-F$6$7&7%F^zF \\y$\"$S'F+7%F^zF`yF_`p7%F\\[lF`yF_`p7%F\\[lF\\yF_`p-F16&F3$\"+++++kF6 Ff`pFf`p-F$6$7&7%F^zF`y$!#7F+7%F^zF^zF\\ap7%F\\[lF^zF\\ap7%F\\[lF`yF\\ ap-F16&F3$!+++++7FSFcapFcap-F$6$7&7%F^zF^z$\"$&oF+7%F^zF\\[lFiap7%F\\[ lF\\[lFiap7%F\\[lF^zFiap-F16&F3$\"++++]oF6F`bpF`bp-F$6$7&7%F^zF\\[l$! \"(F+7%F^zFj[lFfbp7%F\\[lFj[lFfbp7%F\\[lF\\[lFfbp-F16&F3$!+++++qF]apF] cpF]cp-F$6$7&7%F\\[lF\\y$\"$u'F+7%F\\[lF`yFccp7%Fj[lF`yFccp7%Fj[lF\\yF ccp-F16&F3$\"++++SnF6FjcpFjcp-F$6$7&7%F\\[lF`yFb_p7%F\\[lF^zFb_p7%Fj[l F^zFb_p7%Fj[lF`yFb_pFg_p-F$6$7&7%F\\[lF^z$\"$b)F+7%F\\[lF\\[lFgdp7%Fj[ lF\\[lFgdp7%Fj[lF^zFgdp-F16&F3$\"++++]&)F6F^epF^ep-F$6$7&7%F\\[lF\\[l$ \"$>$F+7%F\\[lFj[lFdep7%Fj[lFj[lFdep7%Fj[lF\\[lFdep-F16&F3$\"++++!>$F6 F[fpF[fp-F$6$7&7%F\\yFafl$\"$P%F+7%F\\yFeflFafp7%F`yFeflFafp7%F`yFaflF afp-F16&F3$\"++++qVF6FhfpFhfp-F$6$7&7%F\\yFefl$\"$U#F+7%F\\yFcglF^gp7% F`yFcglF^gp7%F`yFeflF^gp-F16&F3$\"++++?CF6FegpFegp-F$6$7&7%F\\yFcgl$\" $w'F+7%F\\yFahlF[hp7%F`yFahlF[hp7%F`yFcglF[hp-F16&F3$\"++++gnF6FbhpFbh p-F$6$7&7%F\\yFahl$\"#KF+7%F\\yF_ilFhhp7%F`yF_ilFhhp7%F`yFahlFhhp-F16& F3$\"+++++KFSF_ipF_ip-F$6$7&7%F`yFafl$\"$<'F+7%F`yFeflFeip7%F^zFeflFei p7%F^zFaflFeip-F16&F3$\"++++qhF6F\\jpF\\jp-F$6$7&7%F`yFefl$\"$o#F+7%F` yFcglFbjp7%F^zFcglFbjp7%F^zFeflFbjp-F16&F3$\"++++!o#F6FijpFijp-F$6$7&7 %F`yFcgl$\"$A(F+7%F`yFahlF_[q7%F^zFahlF_[q7%F^zFcglF_[q-F16&F3$\"++++? sF6Ff[qFf[q-F$6$7&7%F`yFahlFi_l7%F`yF_ilFi_l7%F^zF_ilFi_l7%F^zFahlFi_l F^`l-F$6$7&7%F^zFafl$\"$;'F+7%F^zFeflFc\\q7%F\\[lFeflFc\\q7%F\\[lFaflF c\\q-F16&F3$\"++++ghF6Fj\\qFj\\q-F$6$7&7%F^zFefl$\"$d#F+7%F^zFcglF`]q7 %F\\[lFcglF`]q7%F\\[lFeflF`]q-F16&F3$\"++++qDF6Fg]qFg]q-F$6$7&7%F^zFcg l$\"$'pF+7%F^zFahlF]^q7%F\\[lFahlF]^q7%F\\[lFcglF]^q-F16&F3$\"++++gpF6 Fd^qFd^q-F$6$7&7%F^zFahl$\"$C$F+7%F^zF_ilFj^q7%F\\[lF_ilFj^q7%F\\[lFah lFj^q-F16&F3$\"++++SKF6Fa_qFa_q-F$6$7&7%F\\[lFafl$\"$4&F+7%F\\[lFeflFg _q7%Fj[lFeflFg_q7%Fj[lFaflFg_q-F16&F3$\"++++!4&F6F^`qF^`q-F$6$7&7%F\\[ lFefl$\"$M#F+7%F\\[lFcglFd`q7%Fj[lFcglFd`q7%Fj[lFeflFd`q-F16&F3$\"++++ SBF6F[aqF[aq-F$6$7&7%F\\[lFcgl$\"$=)F+7%F\\[lFahlFaaq7%Fj[lFahlFaaq7%F j[lFcglFaaq-F16&F3$\"++++!=)F6FhaqFhaq-F$6$7&7%F\\[lFahl$\"$$GF+7%F\\[ lF_ilF^bq7%Fj[lF_ilF^bq7%Fj[lFahlF^bq-F16&F3$\"++++IGF6FebqFebq-F$6$7& 7%F\\yFjbm$\"$B)F+7%F\\yF^cmF[cq7%F`yF^cmF[cq7%F`yFjbmF[cq-F16&F3$\"++ ++I#)F6FbcqFbcq-F$6$7&7%F\\yF^cm$\"#))F+7%F\\yF\\dmFhcq7%F`yF\\dmFhcq7 %F`yF^cmFhcq-F16&F3$\"+++++))FSF_dqF_dq-F$6$7&7%F\\yF\\dm$\"$'yF+7%F\\ yFjdmFedq7%F`yFjdmFedq7%F`yF\\dmFedq-F16&F3$\"++++gyF6F\\eqF\\eq-F$6$7 &7%F\\yFjdm$\"$<\"F+7%F\\yFhemFbeq7%F`yFhemFbeq7%F`yFjdmFbeq-F16&F3$\" ++++q6F6FieqFieq-F$6$7&7%F`yFjbm$\"$4'F+7%F`yF^cmF_fq7%F^zF^cmF_fq7%F^ zFjbmF_fq-F16&F3$\"++++!4'F6FffqFffq-F$6$7&7%F`yF^cmFi`o7%F`yF\\dmFi`o 7%F^zF\\dmFi`o7%F^zF^cmFi`oF^ao-F$6$7&7%F`yF\\dm$\"$<(F+7%F`yFjdmFcgq7 %F^zFjdmFcgq7%F^zF\\dmFcgq-F16&F3$\"++++qrF6FjgqFjgq-F$6$7&7%F`yFjdm$ \"$<#F+7%F`yFhemF`hq7%F^zFhemF`hq7%F^zFjdmF`hq-F16&F3$\"++++q@F6FghqFg hq-F$6$7&FcfqFbfq7%F\\[lF^cmF_fq7%F\\[lFjbmF_fqFdfq-F$6$7&7%F^zF^cm$\" #uF+7%F^zF\\dmFbiq7%F\\[lF\\dmFbiq7%F\\[lF^cmFbiq-F16&F3$\"+++++uFSFii qFiiq-F$6$7&7%F^zF\\dm$\"$p%F+7%F^zFjdmF_jq7%F\\[lFjdmF_jq7%F\\[lF\\dm F_jq-F16&F3$\"++++!p%F6FfjqFfjq-F$6$7&7%F^zFjdm$\"$)GF+7%F^zFhemF\\[r7 %F\\[lFhemF\\[r7%F\\[lFjdmF\\[r-F16&F3$\"++++!)GF6Fc[rFc[r-F$6$7&7%F\\ [lFjbm$\"$E'F+7%F\\[lF^cmFi[r7%Fj[lF^cmFi[r7%Fj[lFjbmFi[r-F16&F3$\"+++ +giF6F`\\rF`\\r-F$6$7&7%F\\[lF^cm$\"$:#F+7%F\\[lF\\dmFf\\r7%Fj[lF\\dmF f\\r7%Fj[lF^cmFf\\r-F16&F3$\"++++]@F6F]]rF]]r-F$6$7&7%F\\[lF\\dm$\"#q! \"\"7%F\\[lFjdmFc]r7%Fj[lFjdmFc]r7%Fj[lF\\dmFc]r-F16&F3$\"+++++qF6F[^r F[^r-F$6$7&F`[rF_[r7%Fj[lFhemF\\[r7%Fj[lFjdmF\\[rFa[r-F$6$7&7%F\\yFi_n $\"$O'F+7%F\\yF]`nFf^r7%F`yF]`nFf^r7%F`yFi_nFf^r-F16&F3$\"++++gjF6F]_r F]_r-F$6$7&7%F\\yF]`n$\"$I#F+7%F\\yF[anFc_r7%F`yF[anFc_r7%F`yF]`nFc_r- F16&F3$\"+++++BF6Fj_rFj_r-F$6$7&7%F\\yF[an$\"$i'F+7%F\\yFianF``r7%F`yF ianF``r7%F`yF[anF``r-F16&F3$\"++++?mF6Fg`rFg`r-F$6$7&7%F\\yFian$\"$C\" F+7%F\\yFgbnF]ar7%F`yFgbnF]ar7%F`yFianF]ar-F16&F3$\"++++S7F6FdarFdar-F $6$7&7%F`yFi_n$\"$@(F+7%F`yF]`nFjar7%F^zF]`nFjar7%F^zFi_nFjar-F16&F3$ \"++++5sF6FabrFabr-F$6$7&7%F`yF]`n$\"#PF+7%F`yF[anFgbr7%F^zF[anFgbr7%F ^zF]`nFgbr-F16&F3$\"+++++PFSF^crF^cr-F$6$7&7%F`yF[an$\"$R*F+7%F`yFianF dcr7%F^zFianFdcr7%F^zF[anFdcr-F16&F3$\"++++!R*F6F[drF[dr-F$6$7&7%F`yFi anF[z7%F`yFgbnF[z7%F^zFgbnF[z7%F^zFianF[zFaz-F$6$7&7%F^zFi_n$\"$R(F+7% F^zF]`nFhdr7%F\\[lF]`nFhdr7%F\\[lFi_nFhdr-F16&F3$\"++++!R(F6F_erF_er-F $6$7&7%F^zF]`n$\"$j\"F+7%F^zF[anFeer7%F\\[lF[anFeer7%F\\[lF]`nFeer-F16 &F3$\"++++I;F6F\\frF\\fr-F$6$7&7%F^zF[an$\"$[(F+7%F^zFianFbfr7%F\\[lFi anFbfr7%F\\[lF[anFbfr-F16&F3$\"++++![(F6FifrFifr-F$6$7&7%F^zFian$\"$7 \"F+7%F^zFgbnF_gr7%F\\[lFgbnF_gr7%F\\[lFianF_gr-F16&F3$\"++++?6F6FfgrF fgr-F$6$7&7%F\\[lFi_n$\"$C(F+7%F\\[lF]`nF\\hr7%Fj[lF]`nF\\hr7%Fj[lFi_n F\\hr-F16&F3$\"++++SsF6FchrFchr-F$6$7&7%F\\[lF]`nF`am7%F\\[lF[anF`am7% Fj[lF[anF`am7%Fj[lF]`nF`amFeam-F$6$7&7%F\\[lF[an$\"$u)F+7%F\\[lFianF`i r7%Fj[lFianF`ir7%Fj[lF[anF`ir-F16&F3$\"++++S()F6FgirFgir-F$6$7&7%F\\[l FianF`gl7%F\\[lFgbnF`gl7%Fj[lFgbnF`gl7%Fj[lFianF`glFfgl-F$6$7&7%FaflF( $\"$j(F+7%FaflF-Fdjr7%FeflF-Fdjr7%FeflF(Fdjr-F16&F3$\"++++IwF6F[[sF[[s -F$6$7&7%FaflF-F`gm7%FaflF>F`gm7%FeflF>F`gm7%FeflF-F`gmFegm-F$6$7&7%Fa flF>$\"$t&F+7%FaflFLFh[s7%FeflFLFh[s7%FeflF>Fh[s-F16&F3$\"++++IdF6F_\\ sF_\\s-F$6$7&7%FaflFL$\"$(zF+7%FaflFenFe\\s7%FeflFenFe\\s7%FeflFLFe\\s -F16&F3$\"++++qzF6F\\]sF\\]s-F$6$7&7%FeflF($\"$#HF+7%FeflF-Fb]s7%FcglF -Fb]s7%FcglF(Fb]s-F16&F3$\"++++?HF6Fi]sFi]s-F$6$7&7%FeflF-$\"$&GF+7%Fe flF>F_^s7%FcglF>F_^s7%FcglF-F_^s-F16&F3$\"++++]GF6Ff^sFf^s-F$6$7&7%Fef lF>$\"##*F+7%FeflFLF\\_s7%FcglFLF\\_s7%FcglF>F\\_s-F16&F3$\"+++++#*FSF c_sFc_s-F$6$7&7%FeflFL$\"$*=F+7%FeflFenFi_s7%FcglFenFi_s7%FcglFLFi_s-F 16&F3$\"++++!*=F6F``sF``s-F$6$7&7%FcglF($\"$k'F+7%FcglF-Ff`s7%FahlF-Ff `s7%FahlF(Ff`s-F16&F3$\"++++SmF6F]asF]as-F$6$7&7%FcglF-$\"$\\(F+7%Fcgl F>Fcas7%FahlF>Fcas7%FahlF-Fcas-F16&F3$\"++++!\\(F6FjasFjas-F$6$7&7%Fcg lF>$\"$l(F+7%FcglFLF`bs7%FahlFLF`bs7%FahlF>F`bs-F16&F3$\"++++]wF6FgbsF gbs-F$6$7&7%FcglFL$\"$`'F+7%FcglFenF]cs7%FahlFenF]cs7%FahlFLF]cs-F16&F 3$\"++++IlF6FdcsFdcs-F$6$7&7%FahlF(F\\_n7%FahlF-F\\_n7%F_ilF-F\\_n7%F_ ilF(F\\_nFa_n-F$6$7&7%FahlF-$!#YF+7%FahlF>Fads7%F_ilF>Fads7%F_ilF-Fads -F16&F3$!+++++YFSFhdsFhds-F$6$7&7%FahlF>$\"$h\"F+7%FahlFLF^es7%F_ilFLF ^es7%F_ilF>F^es-F16&F3$\"++++5;F6FeesFees-F$6$7&7%FahlFL$\"#\\F+7%Fahl FenF[fs7%F_ilFenF[fs7%F_ilFLF[fs-F16&F3$\"+++++\\FSFbfsFbfs-F$6$7&7%Fa flF\\y$\"$z(F+7%FaflF`yFhfs7%FeflF`yFhfs7%FeflF\\yFhfs-F16&F3$\"++++!z (F6F_gsF_gs-F$6$7&7%FaflF`y$\"$P(F+7%FaflF^zFegs7%FeflF^zFegs7%FeflF`y Fegs-F16&F3$\"++++qtF6F\\hsF\\hs-F$6$7&7%FaflF^zF^t7%FaflF\\[lF^t7%Fef lF\\[lF^t7%FeflF^zF^tFct-F$6$7&7%FaflF\\[l$\"$r'F+7%FaflFj[lFihs7%Fefl Fj[lFihs7%FeflF\\[lFihs-F16&F3$\"++++5nF6F`isF`is-F$6$7&7%FeflF\\yF_^n 7%FeflF`yF_^n7%FcglF`yF_^n7%FcglF\\yF_^nFd^n-F$6$7&7%FeflF`yFbw7%FeflF ^zFbw7%FcglF^zFbw7%FcglF`yFbwFgw-F$6$7&7%FeflF^z$\"$W#F+7%FeflF\\[lFdj s7%FcglF\\[lFdjs7%FcglF^zFdjs-F16&F3$\"++++SCF6F[[tF[[t-F$6$7&7%FeflF \\[l$\"##)F+7%FeflFj[lFa[t7%FcglFj[lFa[t7%FcglF\\[lFa[t-F16&F3$Fi[nFSF h[tFh[t-F$6$7&7%FcglF\\y$\"$p'F+7%FcglF`yF]\\t7%FahlF`yF]\\t7%FahlF\\y F]\\t-F16&F3$\"++++!p'F6Fd\\tFd\\t-F$6$7&7%FcglF`y$\"$k(F+7%FcglF^zFj \\t7%FahlF^zFj\\t7%FahlF`yFj\\t-F16&F3$\"++++SwF6Fa]tFa]t-F$6$7&7%Fcgl F^zFf^r7%FcglF\\[lFf^r7%FahlF\\[lFf^r7%FahlF^zFf^rF[_r-F$6$7&7%FcglF\\ [l$\"$0)F+7%FcglFj[lF^^t7%FahlFj[lF^^t7%FahlF\\[lF^^t-F16&F3$\"++++]!) F6Fe^tFe^t-F$6$7&7%FahlF\\yFgdm7%FahlF`yFgdm7%F_ilF`yFgdm7%F_ilF\\yFgd mF]em-F$6$7&7%FahlF`y$\"#'*F+7%FahlF^zFb_t7%F_ilF^zFb_t7%F_ilF`yFb_t-F 16&F3$\"+++++'*FSFi_tFi_t-F$6$7&7%FahlF^zF]ar7%FahlF\\[lF]ar7%F_ilF\\[ lF]ar7%F_ilF^zF]arFbar-F$6$7&7%FahlF\\[l$\"#')F+7%FahlFj[lFf`t7%F_ilFj [lFf`t7%F_ilF\\[lFf`t-F16&F3$\"+++++')FSF]atF]at-F$6$7&7%FaflFaflFd[m7 %FaflFeflFd[m7%FeflFeflFd[m7%FeflFaflFd[mFi[m-F$6$7&7%FaflFefl$\"$A&F+ 7%FaflFcglFjat7%FeflFcglFjat7%FeflFeflFjat-F16&F3$\"++++?_F6FabtFabt-F $6$7&7%FaflFcglF]p7%FaflFahlF]p7%FeflFahlF]p7%FeflFcglF]pFbp-F$6$7&7%F aflFahl$\"$R'F+7%FaflF_ilF^ct7%FeflF_ilF^ct7%FeflFahlF^ct-F16&F3$\"+++ +!R'F6FectFect-F$6$7&7%FeflFafl$\"$(HF+7%FeflFeflF[dt7%FcglFeflF[dt7%F cglFaflF[dt-F16&F3$\"++++qHF6FbdtFbdt-F$6$7&7%FeflFefl$\"$1\"F+7%FeflF cglFhdt7%FcglFcglFhdt7%FcglFeflFhdt-F16&F3$\"++++g5F6F_etF_et-F$6$7&7% FeflFcgl$\"$W\"F+7%FeflFahlFeet7%FcglFahlFeet7%FcglFcglFeet-F16&F3$\"+ +++S9F6F\\ftF\\ft-F$6$7&7%FeflFahl$\"$p#F+7%FeflF_ilFbft7%FcglF_ilFbft 7%FcglFahlFbft-F16&F3$\"++++!p#F6FiftFift-F$6$7&7%FcglFafl$\"$F(F+7%Fc glFeflF_gt7%FahlFeflF_gt7%FahlFaflF_gt-F16&F3$\"++++qsF6FfgtFfgt-F$6$7 &7%FcglFeflFjdo7%FcglFcglFjdo7%FahlFcglFjdo7%FahlFeflFjdoF_eo-F$6$7&7% FcglFcgl$\"$!zF+7%FcglFahlFcht7%FahlFahlFcht7%FahlFcglFcht-F16&F3$\"++ +++zF6FjhtFjht-F$6$7&7%FcglFahl$\"$v'F+7%FcglF_ilF`it7%FahlF_ilF`it7%F ahlFahlF`it-F16&F3$\"++++]nF6FgitFgit-F$6$7&7%FahlFaflFi_s7%FahlFeflFi _s7%F_ilFeflFi_s7%F_ilFaflFi_sF^`s-F$6$7&7%FahlFeflF__o7%FahlFcglF__o7 %F_ilFcglF__o7%F_ilFeflF__oFd_o-F$6$7&7%FahlFcgl$\"$J#F+7%FahlFahlF[[u 7%F_ilFahlF[[u7%F_ilFcglF[[u-F16&F3$\"++++5BF6Fb[uFb[u-F$6$7&7%FahlFah lF`gl7%FahlF_ilF`gl7%F_ilF_ilF`gl7%F_ilFahlF`glFfgl-F$6$7&7%FaflFjbm$ \"$D(F+7%FaflF^cmF_\\u7%FeflF^cmF_\\u7%FeflFjbmF_\\u-F16&F3$\"++++]sF6 Ff\\uFf\\u-F$6$7&7%FaflF^cm$\"$*fF+7%FaflF\\dmF\\]u7%FeflF\\dmF\\]u7%F eflF^cmF\\]u-F16&F3$\"++++!*fF6Fc]uFc]u-F$6$7&7%FaflF\\dm$\"$$fF+7%Faf lFjdmFi]u7%FeflFjdmFi]u7%FeflF\\dmFi]u-F16&F3$\"++++IfF6F`^uF`^u-F$6$7 &7%FaflFjdm$\"$_(F+7%FaflFhemFf^u7%FeflFhemFf^u7%FeflFjdmFf^u-F16&F3$ \"++++?vF6F]_uF]_u-F$6$7&7%FeflFjbmFbfl7%FeflF^cmFbfl7%FcglF^cmFbfl7%F cglFjbmFbflFhfl-F$6$7&7%FeflF^cmFeer7%FeflF\\dmFeer7%FcglF\\dmFeer7%Fc glF^cmFeerFjer-F$6$7&7%FeflF\\dmF_^n7%FeflFjdmF_^n7%FcglFjdmF_^n7%Fcgl F\\dmF_^nFd^n-F$6$7&7%FeflFjdm$\"$e$F+7%FeflFhemFh`u7%FcglFhemFh`u7%Fc glFjdmFh`u-F16&F3$\"++++!e$F6F_auF_au-F$6$7&7%FcglFjbm$\"$`&F+7%FcglF^ cmFeau7%FahlF^cmFeau7%FahlFjbmFeau-F16&F3$\"++++IbF6F\\buF\\bu-F$6$7&7 %FcglF^cm$\"$z'F+7%FcglF\\dmFbbu7%FahlF\\dmFbbu7%FahlF^cmFbbu-F16&F3$ \"++++!z'F6FibuFibu-F$6$7&7%FcglF\\dmF]hm7%FcglFjdmF]hm7%FahlFjdmF]hm7 %FahlF\\dmF]hmFbhm-F$6$7&7%FcglFjdmFj\\t7%FcglFhemFj\\t7%FahlFhemFj\\t 7%FahlFjdmFj\\tF_]t-F$6$7&7%FahlFjbm$\"$$QF+7%FahlF^cmF]du7%F_ilF^cmF] du7%F_ilFjbmF]du-F16&F3$\"++++IQF6FdduFddu-F$6$7&7%FahlF^cm$\"$X\"F+7% FahlF\\dmFjdu7%F_ilF\\dmFjdu7%F_ilF^cmFjdu-F16&F3$\"++++]9F6FaeuFaeu-F $6$7&7%FahlF\\dm$\"$^\"F+7%FahlFjdmFgeu7%F_ilFjdmFgeu7%F_ilF\\dmFgeu-F 16&F3$\"++++5:F6F^fuF^fu-F$6$7&7%FahlFjdm$\"$K#F+7%FahlFhemFdfu7%F_ilF hemFdfu7%F_ilFjdmFdfu-F16&F3$\"++++?BF6F[guF[gu-F$6$7&7%FaflFi_n$\"$l& F+7%FaflF]`nFagu7%FeflF]`nFagu7%FeflFi_nFagu-F16&F3$\"++++]cF6FhguFhgu -F$6$7&7%FaflF]`n$\"$W'F+7%FaflF[anF^hu7%FeflF[anF^hu7%FeflF]`nF^hu-F1 6&F3$\"++++SkF6FehuFehu-F$6$7&7%FaflF[an$\"$%fF+7%FaflFianF[iu7%FeflFi anF[iu7%FeflF[anF[iu-F16&F3$\"++++SfF6FbiuFbiu-F$6$7&7%FaflFianFbbu7%F aflFgbnFbbu7%FeflFgbnFbbu7%FeflFianFbbuFgbu-F$6$7&7%FeflFi_n$\"$8\"F+7 %FeflF]`nF_ju7%FcglF]`nF_ju7%FcglFi_nF_ju-F16&F3$\"++++I6F6FfjuFfju-F$ 6$7&7%FeflF]`nF\\[r7%FeflF[anF\\[r7%FcglF[anF\\[r7%FcglF]`nF\\[rFa[r-F $6$7&7%FeflF[anFbw7%FeflFianFbw7%FcglFianFbw7%FcglF[anFbwFgw-F$6$7&7%F eflFian$\"$v%F+7%FeflFgbnFj[v7%FcglFgbnFj[v7%FcglFianFj[v-F16&F3$\"+++ +]ZF6Fa\\vFa\\v-F$6$7&7%FcglFi_nFbfr7%FcglF]`nFbfr7%FahlF]`nFbfr7%Fahl Fi_nFbfrFgfr-F$6$7&7%FcglF]`n$\"$r&F+7%FcglF[anF^]v7%FahlF[anF^]v7%Fah lF]`nF^]v-F16&F3$\"++++5dF6Fe]vFe]v-F$6$7&7%FcglF[anFihs7%FcglFianFihs 7%FahlFianFihs7%FahlF[anFihsF^is-F$6$7&7%FcglFian$\"$p(F+7%FcglFgbnFb^ v7%FahlFgbnFb^v7%FahlFianFb^v-F16&F3$\"++++!p(F6Fi^vFi^v-F$6$7&7%FahlF i_n$\"$*>F+7%FahlF]`nF__v7%F_ilF]`nF__v7%F_ilFi_nF__v-F16&F3$\"++++!*> F6Ff_vFf_v-F$6$7&7%FahlF]`n$\"$'RF+7%FahlF[anF\\`v7%F_ilF[anF\\`v7%F_i lF]`nF\\`v-F16&F3$\"++++gRF6Fc`vFc`v-F$6$7&7%FahlF[an$F^cmFe]r7%FahlFi anFi`v7%F_ilFianFi`v7%F_ilF[anFi`v-F16&F3$\"+++++?F6F_avF_av-F$6$7&7%F ahlFian$\"$w#F+7%FahlFgbnFeav7%F_ilFgbnFeav7%F_ilFianFeav-F16&F3$\"+++ +gFF6F\\bvF\\bv-%(SCALINGG6#%,CONSTRAINEDG-%+PROJECTIONG6%\"\"!FebvF( " 1 2 0 1 0 2 1 1 1 1 1.000000 0.000000 0.000000 1 }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 23 "Fix Precision of Floats" }}{PARA 0 "" 0 "" {TEXT -1 281 " Maple is awkward in its display of floats. Unless one \+ actually changes the precision, it appears impossible to change the wa y the pretty printer does display. The following routine is used to re duce the precision of elements in arrays so they print in a relatively compact form. " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 192 "roundSig Digits := proc(x,d)\n local val, saveDigits:\n saveDigits := Digit s:\n Digits := d:\n val := convert(round(x*10^d)/10^d,f loat):\n Digits := saveDigits:\n val:\nend:" }}}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 24 "Generate Training Images" }}{PARA 0 "" 0 "" {TEXT -1 426 "Let us create a vector of training images based upon \+ three random image generators. Each of these will generate an image b ased upon a particular pattern plus noise. The noise is Gaussian with \+ zero mean and sigma 1.0. The images are four pixels on a side. The fir st class has a bright square in the center, the second class is altern ating bright and dark vertical bars, class 3 is alternating bright and dark horizontal bars. " }}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 21 "Add No ise to an Image" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 175 "addNoise := proc(A,n)\n local noise, i, j:\n for i from 1 to n do\n f or j from 1 to n do\n A[i,j] := A[i,j] + random[normald]():\n \+ od:\n od:\n eval(A):\nend:" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 13 "Image Class 1" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 191 "imageClass1 := proc(n,low,high)\n local A, i, j:\n A := matrix( n, n, low):\n for i from 2 to n-1 do \n for j from 2 to n-1 do\n \+ A[i,j] := high:\n od:\n od:\n addNoise(A,n):\n end:" }}} }{SECT 1 {PARA 4 "" 0 "" {TEXT -1 13 "Image Class 2" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 192 "imageClass2 := proc(n,low,high)\n local A , i, j:\n A := matrix(n, n, low):\n for i from 1 to n do \n for \+ j from 1 to n by 2 do\n A[i,j] := high:\n od:\n od:\n add Noise(A,n):\n end:" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 13 "Image Cl ass 3" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 192 "imageClass3 := pro c(n,low,high)\n local A, i, j:\n A := matrix(n, n, low):\n for j fr om 1 to n do \n for i from 1 to n by 2 do\n A[i,j] := high: \n od:\n od:\n addNoise(A,n):\n end:" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 35 "Procedure to create Training Images" }}{PARA 0 "" 0 " " {TEXT -1 124 "As currently setup, this procedcure produces 9 trainin g images, 3 from each class. The are ordered from class 1 to class 3. \+ " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 459 "trainingImages := proc( size,n,low,high)\n local samples, data, k, s:\n samples := floor(s ize/3):\n data := vector(3*samples):\n k := 1:\n for s \+ from 1 to samples do\n data[k] := imageClass1(n,low,high):\n \+ k := k + 1:\n od:\n for s from 1 to samples do\n data[k] := \+ imageClass2(n,low,high):\n k := k + 1:\n od:\n for s from 1 t o samples do\n data[k] := imageClass3(n,low,high):\n k := k \+ + 1:\n od:\n eval(data):\nend:" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 37 "Global call to create Training Images" }}{PARA 0 "" 0 "" {TEXT -1 197 "Here we bind T to the vector of training images. Note that the precision is alterred so that there are only 2 digits right of the de cimal. Also note that the default setting is saved and restored. " }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 169 "saveDigits := Digits:\nD igits := 3:\ntrainImages := trainingImages(trainingSize,image Size,imageLow,imageHigh):\nDigits := saveDigits:\n#eval(trainIm ages);" }}}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 17 "Images to Vectors" } }{PARA 0 "" 0 "" {TEXT -1 73 "Go down the list of training images and \+ convert these to column vectors. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 503 "This procedure takes advantage of some n ice features of Maple. First, if you convert an nxn matrix to a vector , it automatically unrolls the elements in exactly the manner we want. The result is a true Maple vector. Next, you can normalize the vector to be of unit length with one comand. Next, when you convert that ve ctor to a matrix, it assumes you want a column vector, which in this c ase works out well for display purposes. At this step, we will also su btract off the mean from each image vector." }}{SECT 1 {PARA 4 "" 0 " " {TEXT -1 36 "Procedure to Compute the Mean Vector" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 95 "meanXcv := proc(size,X)\n local i:\n sc alarmul(evalm(sum(eval(X)[i],i=1..size)),1/size):\nend:" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 45 "Procedure to Map images to normalized vec tors" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 300 "mapImagesToVectors \+ := proc(size,n,Images)\n local s, X, Xmu:\n X := vector(size):\n \+ for s from 1 to size do\n X[s] := convert(normalize(convert(Imag es[s],vector)),matrix):\n od:\n Xmu := meanXcv(size,X):\n for s \+ from 1 to size do\n X[s] := evalm(X[s] - Xmu):\n od:\n eval(X ):\nend:\n " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}} {SECT 1 {PARA 4 "" 0 "" {TEXT -1 35 "Actually Perform Mapping to Vecto rs" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 64 "Xcvs := mapImagesToVec tors(trainingSize,imageSize,trainImages):\n" }}}{SECT 1 {PARA 5 "" 0 " " {TEXT -1 43 "Make a version which is better for printing" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 130 "Xcvsr := vector(trainingSize):\nfo r i from 1 to trainingSize do\n Xcvsr[i] := map(roundSigDigits,Xcvs[ i],3):\nod:\n#X = eval(Xcvsr);" }}}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 32 "Brute Force , Look at Correlation" }}{PARA 0 "" 0 "" {TEXT -1 163 "Let us compute \+ the cross correlation between all pairs of images. Note that we will g o back to original images, do the normalization, but do NOT remove the mean. " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 363 "imageCrossCorre lations := proc(size,n,Images)\n local s1, s2, X, CC:\n CC := matr ix(size,size):\n for s1 from 1 to size do\n for s2 from 1 to si ze do\n CC[s1,s2] := roundSigDigits(dotprod(normalize(convert( Images[s1],vector)),\n nor malize(convert(Images[s2],vector))),3):\n od:\n od:\n eval(CC ):\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 81 "CC := imageCros sCorrelations(trainingSize,imageSize,trainImages):\n#CC = eval(CC);" } }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 30 "Covariance for Training Images " }}{PARA 0 "" 0 "" {TEXT -1 148 "Now we are ready to compute the actu al numeric covariance matrix for our training images. To start, we wan t to create the X matrix defined in trucco" }}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 29 "Procedure to create X matrix." }}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 230 "mapVectorsToX := proc(size,n,Xcvs)\n local X, V, col, i:\n X := matrix((n*n),size):\n for col from 1 to size do\n \+ V := Xcvs[col]:\n for i from 1 to (n*n) do\n X[i,col ] := V[i,1]:\n od:\n od:\n eval(X):\nend:" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 37 "Actually create the Covariance Matrix" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 246 "saveDigits := Digits:\nDigi ts := 10:\nXm := mapVectorsToX(trainingSize,imageSize,Xcvs ):\ncoVar := evalm(Xm &* transpose(Xm)):\nDigits := saveDigit s:\n#X = map(roundSigDigits,eval(Xm),3);\n#Omega = map(roundSigDigits, eval(coVar),3);" }}}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 33 "Eigen Vecto rs for Training Images" }}{PARA 0 "" 0 "" {TEXT -1 101 "Using Single V alue Decomposition, compute the Eigen Vectors and Eigen Values for the training images." }}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 53 "Use SVD to g enerate rotation matrix and eigen values" }}{PARA 0 "" 0 "" {TEXT -1 184 "The call to Svd will perform singular value decomposition on the \+ covariance matrix. The result are the elements of the diagonal matrix, as well as the pre- and post-multiply matrices: " }{XPPEDIT 18 0 "Um; " "6#%#UmG" }{TEXT -1 5 " and " }{XPPEDIT 18 0 "Vm;" "6#%#VmG" }{TEXT -1 3 ". " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 109 "Um := matrix(i mageSize*imageSize,imageSize*imageSize):\nVm := matrix(imageSize*image Size,imageSize*imageSize):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 176 "Lambda := evalf(Svd(coVar,Um,Vm)):\nDm := matrix(imageSize*imageS ize,imageSize*imageSize,0.0):\nfor i from 1 to imageSize*imageSize do \+ Dm[i,i] := roundSigDigits(Lambda[i],3): od:" }}}{SECT 1 {PARA 5 "" 0 " " {TEXT -1 25 " Show the diagonalization" }}{PARA 0 "" 0 "" {TEXT -1 51 "Show the diagonalization as well as the check that " }{XPPEDIT 18 0 "Omega = U*D*U^T;" "6#/%&OmegaG*(%\"UG\"\"\"%\"DGF')F&%\"TGF'" } {TEXT -1 1 "." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 244 "coVar3 := \+ map(roundSigDigits,eval(coVar),2):\nUm3 := map(roundSigDigits,eval( Um),2):\nDm3 := map(roundSigDigits,eval(Dm),2):\n#eval(Um3) * eval( Dm3) * transpose(Um3);\n#eval(coVar3) = map(roundSigDigits,evalm(Um3 & * Dm3 &* transpose(Um3)),3);" }}}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 44 "Do projection by using first 3 eigenvectgors" }}{PARA 0 "" 0 "" {TEXT -1 315 " Here we consider what the distribution of images looks like when projecting into a 3-dimensional subspace associated with th e first three (largest three) eigenvectors. This will culminate in a 3 D point plot where the class 1 images are shown in red, the class two \+ images in greeen and the class 3 images in blue. " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 120 "projMat := submatrix(Um,1..(imageSize*image Size),1..3):\nprojMat3 := map(roundSigDigits,projMat,3):\n#S = eval(pr ojMat3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 142 "pts := evalm(t ranspose(projMat) &* Xm):\nXm3 := map(roundSigDigits,Xm,3):\n#P = tran spose(Xm3) * eval(projMat3);\n#P = map(roundSigDigits,pts,3);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 560 "subspacePts := proc(pts)\n \+ local i, samples, dpts:\n dpts := []:\n samples := floor(cold im(pts)/3):\n for i from 1 to samples do\n dpts := [op(dpts),PO INTS([pts[1,i], pts[2,i], pts[3,i]],SYMBOL(BOX),COLOR(RGB,1.0,0.0,0.0) )]:\n od:\n for i from samples + 1 to 2*samples do\n dpts := \+ [op(dpts),POINTS([pts[1,i], pts[2,i], pts[3,i]],SYMBOL(BOX),COLOR(RGB, 0.0,1.0,0.0))]:\n od:\n for i from 2*samples+1 to 3*samples do\n \+ dpts := [op(dpts),POINTS([pts[1,i], pts[2,i], pts[3,i]],SYMBOL(BOX ),COLOR(RGB,0.0,0.0,1.0))]:\n od:\n eval(dpts):\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 114 "display(subspacePts(pts),axes=BOXE D,labels=[\"PC 1\", \"PC 2\", \"PC 3\"],scaling=CONSTRAINED,font=[HELV ETICA,BOLD,14]);" }}{PARA 13 "" 1 "" {GLPLOT3D 400 300 300 {PLOTDATA 3 "65-%'POINTSG6%7%$\"+i#*)=)[!#5$!+E>'pE\"F)$!+;oSa " 0 "" {MPLTEXT 1 0 0 "" }}}}}}{MARK "2 6 2 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 }