Socket
Socket
Sign inDemoInstall

jsfeat

Package Overview
Dependencies
0
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.2 to 0.0.4

2

build/jsfeat-min.js

@@ -1,1 +0,1 @@

var jsfeat=jsfeat||{REVISION:"ALPHA"};(function(o){var l=1.192092896e-7;var i=1e-37;var j=256,g=512,f=1024,t=2048,s=4096;var w=1,k=2,a=3,m=4;var v=new Int32Array([-1,1,4,-1,4,-1,-1,-1,8,-1,-1,-1,-1,-1,-1,-1,8]);var u=(function(){return function(x){return(x&65280)}})();var h=(function(){return function(x){return(x&255)}})();var b=(function(){return function(x){return v[(x&65280)>>8]}})();var d=1;var p=1;var e=2;var r=(function(){function x(z,y){this.size=((z+7)|0)&-8;if(typeof y==="undefined"){this.buffer=new ArrayBuffer(this.size)}else{this.buffer=y;this.size=y.length}this.u8=new Uint8Array(this.buffer);this.i32=new Int32Array(this.buffer);this.f32=new Float32Array(this.buffer);this.f64=new Float64Array(this.buffer)}return x})();var n=(function(){function x(B,z,A,y){this.type=u(A)|0;this.channel=h(A)|0;this.cols=B|0;this.rows=z|0;if(typeof y==="undefined"){this.buffer=new r((B*b(A)*h(A))*z)}else{this.buffer=y}this.data=this.type&j?this.buffer.u8:(this.type&g?this.buffer.i32:(this.type&f?this.buffer.f32:this.buffer.f64))}x.prototype.set_data_type=function(y){this.type=u(y)|0;this.channel=h(y)|0;delete this.data;delete this.buffer;this.buffer=new r((this.cols*b(y)*h(y))*this.rows);this.data=this.type&j?this.buffer.u8:(this.type&g?this.buffer.i32:(this.type&f?this.buffer.f32:this.buffer.f64))};x.prototype.set_data=function(z){var y=z.length;while(--y>=0){this.data[y]=z[y]}};return x})();var q=(function(){function x(y){this.levels=y|0;this.data=new Array(y);this.pyrdown=jsfeat.imgproc.pyrdown}x.prototype.allocate=function(y,A,B){var z=this.levels;while(--z>=0){this.data[z]=new n(y>>z,A>>z,B)}};x.prototype.build=function(B,A){if(typeof A==="undefined"){A=true}var D=2,z=B,y=this.data[0];if(!A){var C=B.cols*B.rows;while(--C>=0){y.data[C]=B.data[C]}}y=this.data[1];this.pyrdown(z,y);for(;D<this.levels;++D){z=y;y=this.data[D];this.pyrdown(z,y)}};return x})();var c=(function(){function x(z,C,A,B){if(typeof z==="undefined"){z=0}if(typeof C==="undefined"){C=0}if(typeof A==="undefined"){A=0}if(typeof B==="undefined"){B=0}this.x=z;this.y=C;this.score=A;this.level=B}return x})();o.U8_t=j;o.S32_t=g;o.F32_t=f;o.S64_t=t;o.F64_t=s;o.C1_t=w;o.C2_t=k;o.C3_t=a;o.C4_t=m;o.EPSILON=l;o.FLT_MIN=i;o.BOX_BLUR_NOSCALE=d;o.SVD_U_T=p;o.SVD_V_T=e;o.get_data_type=u;o.get_channel=h;o.get_data_type_size=b;o.data_t=r;o.matrix_t=n;o.pyramid_t=q;o.point2d_t=c})(jsfeat);(function(b){var a=(function(){var f=(function(){function g(h){this.next=null;this.data=new jsfeat.data_t(h);this.size=this.data.size;this.buffer=this.data.buffer;this.u8=this.data.u8;this.i32=this.data.i32;this.f32=this.data.f32;this.f64=this.data.f64}g.prototype.resize=function(h){delete this.data;this.data=new jsfeat.data_t(h);this.size=this.data.size;this.buffer=this.data.buffer;this.u8=this.data.u8;this.i32=this.data.i32;this.f32=this.data.f32;this.f64=this.data.f64};return g})();var e,c;var d=0;return{allocate:function(g,k){e=c=new f(k);for(var h=0;h<g;++h){var j=new f(k);c=c.next=j;d++}},get_buffer:function(g){var h=e;e=e.next;d--;if(g>h.size){h.resize(g)}return h},put_buffer:function(g){c=c.next=g;d++}}})();b.cache=a;a.allocate(30,640*4)})(jsfeat);(function(b){var a=(function(){var c=new Int32Array(48*2);return{get_gaussian_kernel:function(p,m,e,l){var f=0,j=0,o=0,n=0,d=0;var g=0;var h=jsfeat.cache.get_buffer(p<<2);var k=h.f32;if((p&1)==1&&p<=7&&m<=0){switch(p>>1){case 0:k[0]=1;g=1;break;case 1:k[0]=0.25,k[1]=0.5,k[2]=0.25;g=0.25+0.5+0.25;break;case 2:k[0]=0.0625,k[1]=0.25,k[2]=0.375,k[3]=0.25,k[4]=0.0625;g=0.0625+0.25+0.375+0.25+0.0625;break;case 3:k[0]=0.03125,k[1]=0.109375,k[2]=0.21875,k[3]=0.28125,k[4]=0.21875,k[5]=0.109375,k[6]=0.03125;g=0.03125+0.109375+0.21875+0.28125+0.21875+0.109375+0.03125;break}}else{n=m>0?m:((p-1)*0.5-1)*0.3+0.8;d=-0.5/(n*n);for(;f<p;++f){j=f-(p-1)*0.5;o=Math.exp(d*j*j);k[f]=o;g+=o}}if(l&jsfeat.U8_t){g=256/g;for(f=0;f<p;++f){e[f]=(k[f]*g+0.5)|0}}else{g=1/g;for(f=0;f<p;++f){e[f]=k[f]*g}}jsfeat.cache.put_buffer(h)},qsort:function(o,J,s,u){var D=7;var v,r,q,p;var C=0,j=0,G=0,B=0,z=0,A=0,e=0,y=0,E=0;var x=0,w=0,h=0,g=0,l=0,I=0,H=0,F=0,f=0;var k=c;if((s-J+1)<=1){return}k[0]=J;k[1]=s;while(C>=0){j=k[C<<1];G=k[(C<<1)+1];C--;for(;;){z=(G-j)+1;if(z<=D){for(e=j+1;e<=G;e++){for(y=e;y>j&&u(o[y],o[y-1]);y--){v=o[y];o[y]=o[y-1];o[y-1]=v}}break}else{f=0;x=j;h=G;l=j+(z>>1);if(z>40){E=z>>3;I=j,H=j+E,F=j+(E<<1);r=o[I],q=o[H],p=o[F];j=u(r,q)?(u(q,p)?H:(u(r,p)?F:I)):(u(p,q)?H:(u(r,p)?I:F));I=l-E,H=l,F=l+E;r=o[I],q=o[H],p=o[F];l=u(r,q)?(u(q,p)?H:(u(r,p)?F:I)):(u(p,q)?H:(u(r,p)?I:F));I=G-(E<<1),H=G-E,F=G;r=o[I],q=o[H],p=o[F];G=u(r,q)?(u(q,p)?H:(u(r,p)?F:I)):(u(p,q)?H:(u(r,p)?I:F))}I=j,H=l,F=G;r=o[I],q=o[H],p=o[F];l=u(r,q)?(u(q,p)?H:(u(r,p)?F:I)):(u(p,q)?H:(u(r,p)?I:F));if(l!=x){v=o[l];o[l]=o[x];o[x]=v;l=x}j=w=x+1;G=g=h;r=o[l];for(;;){while(j<=G&&!u(r,o[j])){if(!u(o[j],r)){if(j>w){v=o[w];o[w]=o[j];o[j]=v}f=1;w++}j++}while(j<=G&&!u(o[G],r)){if(!u(r,o[G])){if(G<g){v=o[g];o[g]=o[G];o[G]=v}f=1;g--}G--}if(j>G){break}v=o[j];o[j]=o[G];o[G]=v;f=1;j++;G--}if(f==0){j=x,G=h;for(e=j+1;e<=G;e++){for(y=e;y>j&&u(o[y],o[y-1]);y--){v=o[y];o[y]=o[y-1];o[y-1]=v}}break}z=Math.min((w-x),(j-w));A=(j-z)|0;for(B=0;B<z;++B,++A){v=o[x+B];o[x+B]=o[A];o[A]=v}z=Math.min((h-g),(g-G));A=(h-z+1)|0;for(B=0;B<z;++B,++A){v=o[j+B];o[j+B]=o[A];o[A]=v}z=(j-w);A=(g-G);if(z>1){if(A>1){if(z>A){++C;k[C<<1]=x;k[(C<<1)+1]=x+z-1;j=h-A+1,G=h}else{++C;k[C<<1]=h-A+1;k[(C<<1)+1]=h;j=x,G=x+z-1}}else{j=x,G=x+z-1}}else{if(A>1){j=h-A+1,G=h}else{break}}}}}},median:function(k,d,i){var e;var f=0,j=0,g=0,h=(d+i)>>1;for(;;){if(i<=d){return k[h]}if(i==(d+1)){if(k[d]>k[i]){e=k[d];k[d]=k[i];k[i]=e}return k[h]}f=((d+i)>>1);if(k[f]>k[i]){e=k[f];k[f]=k[i];k[i]=e}if(k[d]>k[i]){e=k[d];k[d]=k[i];k[i]=e}if(k[f]>k[d]){e=k[f];k[f]=k[d];k[d]=e}j=(d+1);e=k[f];k[f]=k[j];k[j]=e;g=i;for(;;){do{++j}while(k[d]>k[j]);do{--g}while(k[g]>k[d]);if(g<j){break}e=k[j];k[j]=k[g];k[g]=e}e=k[d];k[d]=k[g];k[g]=e;if(g<=h){d=j}else{if(g>=h){i=(g-1)}}}return 0}}})();b.math=a})(jsfeat);(function(b){var a=(function(){return{transpose:function(f,d){var l=0,h=0,k=d.rows,c=d.cols;var n=0,e=0,m=0;var o=d.data,g=f.data;for(;l<k;e+=1,n+=c,l++){m=e;for(h=0;h<c;m+=k,h++){g[m]=o[n+h]}}},multiply:function(l,n,m){var u=0,s=0,o=0;var r=0,t=0,q=0,w=0,g=0;var f=n.cols,e=n.rows,p=m.cols;var v=n.data,d=m.data,h=l.data;var c=0;for(;u<e;r+=f,u++){for(w=0,s=0;s<p;g++,w++,s++){q=w;t=r;c=0;for(o=0;o<f;t++,q+=p,o++){c+=v[t]*d[q]}h[g]=c}}},multiply_ABt:function(c,g,d){var p=0,n=0,m=0;var r=0,l=0,f=0,u=0;var e=g.cols,o=g.rows,q=d.rows;var v=g.data,t=d.data,h=c.data;var s=0;for(;p<o;r+=e,p++){for(f=0,n=0;n<q;u++,n++){l=r;s=0;for(m=0;m<e;l++,f++,m++){s+=v[l]*t[f]}h[u]=s}}},multiply_AtB:function(l,n,m){var u=0,s=0,o=0;var r=0,t=0,q=0,w=0,g=0;var f=n.cols,e=n.rows,p=m.cols;var v=n.data,d=m.data,h=l.data;var c=0;for(;u<f;r++,u++){for(w=0,s=0;s<p;g++,w++,s++){q=w;t=r;c=0;for(o=0;o<e;t+=f,q+=p,o++){c+=v[t]*d[q]}h[g]=c}}},multiply_AAt:function(d,h){var q=0,o=0,n=0;var c=0,r=0,m=0,g=0,e=0,u=0;var f=h.cols,p=h.rows;var t=h.data,l=d.data;var s=0;for(;q<p;c+=p+1,r=m,q++){e=c;u=c;g=r;for(o=q;o<p;e++,u+=p,o++){m=r;s=0;for(n=0;n<f;n++){s+=t[m++]*t[g++]}l[e]=s;l[u]=s}}},multiply_AtA:function(c,g){var r=0,p=0,n=0;var s=0,m=0,f=0,o=0,d=0,l=0;var e=g.cols,q=g.rows;var u=g.data,h=c.data;var t=0;for(;r<e;o+=e,r++){s=r;l=o+r;d=l;for(p=r;p<e;d++,l+=e,p++){m=s;f=p;t=0;for(n=0;n<q;m+=e,f+=e,n++){t+=u[m]*u[f]}h[d]=t;h[l]=t}}}}})();b.matmath=a})(jsfeat);(function(b){var a=(function(){var f=function(g,j,i,h){h=g[j];g[j]=g[i];g[i]=h};var d=function(h,g){h=Math.abs(h);g=Math.abs(g);if(h>g){g/=h;return h*Math.sqrt(1+g*g)}if(g>0){h/=g;return g*Math.sqrt(1+h*h)}return 0};var c=function(H,o,q,r,h,I){var C=jsfeat.EPSILON;var N=0,M=0,L=0,J=0,K=0,D=0,R=0,G=0;var u=0,v=I*I*30;var E=0,U=0,F=0,x=0,z=0,B=0,Q=0,T=0,w=0;var P=jsfeat.cache.get_buffer(I<<2);var S=jsfeat.cache.get_buffer(I<<2);var O=P.i32;var g=S.i32;if(r){for(;N<I;N++){L=N*h;for(M=0;M<I;M++){r[L+M]=0}r[L+N]=1}}for(L=0;L<I;L++){q[L]=H[(o+1)*L];if(L<I-1){for(J=L+1,E=Math.abs(H[o*L+J]),N=L+2;N<I;N++){U=Math.abs(H[o*L+N]);if(E<U){E=U,J=N}}O[L]=J}if(L>0){for(J=0,E=Math.abs(H[L]),N=1;N<L;N++){U=Math.abs(H[o*N+L]);if(E<U){E=U,J=N}}g[L]=J}}if(I>1){for(;u<v;u++){for(L=0,E=Math.abs(H[O[0]]),N=1;N<I-1;N++){U=Math.abs(H[o*N+O[N]]);if(E<U){E=U,L=N}}K=O[L];for(N=1;N<I;N++){U=Math.abs(H[o*g[N]+N]);if(E<U){E=U,L=g[N],K=N}}F=H[o*L+K];if(Math.abs(F)<=C){break}x=(q[K]-q[L])*0.5;z=Math.abs(x)+d(F,x);B=d(F,z);Q=z/B;B=F/B;z=(F/z)*F;if(x<0){B=-B,z=-z}H[o*L+K]=0;q[L]-=z;q[K]+=z;for(N=0;N<L;N++){R=(o*N+L);G=(o*N+K);T=H[R];w=H[G];H[R]=T*Q-w*B;H[G]=T*B+w*Q}for(N=(L+1);N<K;N++){R=(o*L+N);G=(o*N+K);T=H[R];w=H[G];H[R]=T*Q-w*B;H[G]=T*B+w*Q}N=K+1;R=(o*L+N);G=(o*K+N);for(;N<I;N++,R++,G++){T=H[R];w=H[G];H[R]=T*Q-w*B;H[G]=T*B+w*Q}if(r){R=h*L;G=h*K;for(N=0;N<I;N++,R++,G++){T=r[R];w=r[G];r[R]=T*Q-w*B;r[G]=T*B+w*Q}}for(M=0;M<2;M++){D=M==0?L:K;if(D<I-1){for(J=D+1,E=Math.abs(H[o*D+J]),N=D+2;N<I;N++){U=Math.abs(H[o*D+N]);if(E<U){E=U,J=N}}O[D]=J}if(D>0){for(J=0,E=Math.abs(H[D]),N=1;N<D;N++){U=Math.abs(H[o*N+D]);if(E<U){E=U,J=N}}g[D]=J}}}}for(L=0;L<I-1;L++){J=L;for(N=L+1;N<I;N++){if(q[J]<q[N]){J=N}}if(L!=J){f(q,J,L,E);if(r){for(N=0;N<I;N++){f(r,h*J+N,h*L+N,E)}}}}jsfeat.cache.put_buffer(P);jsfeat.cache.put_buffer(S)};var e=function(D,l,h,M,v,T,S,E){var C=jsfeat.EPSILON*10;var q=jsfeat.FLT_MIN;var X=0,V=0,U=0,A=0,u=Math.max(T,30);var K=0,J=0,R=0,Q=0,F=0;var Y=0,O=0,N=0;var H=0,G=0,x=0,I=0,w=0,L=0,aa=0,P=0,Z=0;var z=4660;var B=0,y=0,o=0;var r=jsfeat.cache.get_buffer(S<<3);var g=r.f64;for(;X<S;X++){for(U=0,x=0;U<T;U++){N=D[X*l+U];x+=N*N}g[X]=x;if(M){for(U=0;U<S;U++){M[X*v+U]=0}M[X*v+X]=1}}for(;A<u;A++){F=0;for(X=0;X<S-1;X++){for(V=X+1;V<S;V++){K=(X*l)|0,J=(V*l)|0;aa=g[X],P=0,Z=g[V];U=3;P+=D[K]*D[J];P+=D[K+1]*D[J+1];P+=D[K+2]*D[J+2];for(;U<T;U++){P+=D[K+U]*D[J+U]}if(Math.abs(P)<=C*Math.sqrt(aa*Z)){continue}P*=2;I=aa-Z,w=d(P,I);if(I<0){L=(w-I)*0.5;O=Math.sqrt(L/w);Y=(P/(w*O*2))}else{Y=Math.sqrt((w+I)/(w*2));O=(P/(w*Y*2));L=P*P*0.5/(w+I)}g[X]+=L;g[V]-=L;if((A&1)&&g[X]>0&&g[V]>0){U=3;H=Y*D[K]+O*D[J];G=-O*D[K]+Y*D[J];D[K]=H;D[J]=G;H=Y*D[K+1]+O*D[J+1];G=-O*D[K+1]+Y*D[J+1];D[K+1]=H;D[J+1]=G;H=Y*D[K+2]+O*D[J+2];G=-O*D[K+2]+Y*D[J+2];D[K+2]=H;D[J+2]=G;for(;U<T;U++){H=Y*D[K+U]+O*D[J+U];G=-O*D[K+U]+Y*D[J+U];D[K+U]=H;D[J+U]=G}}else{aa=Z=0;U=3;H=Y*D[K]+O*D[J];G=-O*D[K]+Y*D[J];D[K]=H;D[J]=G;aa+=H*H;Z+=G*G;H=Y*D[K+1]+O*D[J+1];G=-O*D[K+1]+Y*D[J+1];D[K+1]=H;D[J+1]=G;aa+=H*H;Z+=G*G;H=Y*D[K+2]+O*D[J+2];G=-O*D[K+2]+Y*D[J+2];D[K+2]=H;D[J+2]=G;aa+=H*H;Z+=G*G;for(;U<T;U++){H=Y*D[K+U]+O*D[J+U];G=-O*D[K+U]+Y*D[J+U];D[K+U]=H;D[J+U]=G;aa+=H*H;Z+=G*G}g[X]=aa;g[V]=Z}F=1;if(M){R=(X*v)|0,Q=(V*v)|0;U=3;H=Y*M[R]+O*M[Q];G=-O*M[R]+Y*M[Q];M[R]=H;M[Q]=G;H=Y*M[R+1]+O*M[Q+1];G=-O*M[R+1]+Y*M[Q+1];M[R+1]=H;M[Q+1]=G;H=Y*M[R+2]+O*M[Q+2];G=-O*M[R+2]+Y*M[Q+2];M[R+2]=H;M[Q+2]=G;for(;U<S;U++){H=Y*M[R+U]+O*M[Q+U];G=-O*M[R+U]+Y*M[Q+U];M[R+U]=H;M[Q+U]=G}}}}if(F==0){break}}for(X=0;X<S;X++){for(U=0,x=0;U<T;U++){N=D[X*l+U];x+=N*N}g[X]=Math.sqrt(x)}for(X=0;X<S-1;X++){V=X;for(U=X+1;U<S;U++){if(g[V]<g[U]){V=U}}if(X!=V){f(g,X,V,x);if(M){for(U=0;U<T;U++){f(D,X*l+U,V*l+U,N)}for(U=0;U<S;U++){f(M,X*v+U,V*v+U,N)}}}}for(X=0;X<S;X++){h[X]=g[X]}if(!M){jsfeat.cache.put_buffer(r);return}for(X=0;X<E;X++){x=X<S?g[X]:0;while(x<=q){y=(1/T);for(U=0;U<T;U++){z=(z*214013+2531011);B=(((z>>16)&32767)&256)!=0?y:-y;D[X*l+U]=B}for(A=0;A<2;A++){for(V=0;V<X;V++){x=0;for(U=0;U<T;U++){x+=D[X*l+U]*D[V*l+U]}o=0;for(U=0;U<T;U++){N=(D[X*l+U]-x*D[V*l+U]);D[X*l+U]=N;o+=Math.abs(N)}o=o?1/o:0;for(U=0;U<T;U++){D[X*l+U]*=o}}}x=0;for(U=0;U<T;U++){N=D[X*l+U];x+=N*N}x=Math.sqrt(x)}O=(1/x);for(U=0;U<T;U++){D[X*l+U]*=O}}jsfeat.cache.put_buffer(r)};return{lu_solve:function(l,g){var q=0,o=0,n=0,h=1,v=l.cols;var w=l.data,r=g.data;var x,m,u,y;for(q=0;q<v;q++){n=q;for(o=q+1;o<v;o++){if(Math.abs(w[o*v+q])>Math.abs(w[n*v+q])){n=o}}if(Math.abs(w[n*v+q])<jsfeat.EPSILON){return 0}if(n!=q){for(o=q;o<v;o++){f(w,q*v+o,n*v+o,x)}f(r,q,n,x);h=-h}u=-1/w[q*v+q];for(o=q+1;o<v;o++){m=w[o*v+q]*u;for(n=q+1;n<v;n++){w[o*v+n]+=m*w[q*v+n]}r[o]+=m*r[q]}w[q*v+q]=-u}for(q=v-1;q>=0;q--){y=r[q];for(n=q+1;n<v;n++){y-=w[q*v+n]*r[n]}r[q]=y*w[q*v+q]}return 1},cholesky_solve:function(h,g){var l=0,v=0,r=0,s=0,n=0,p=0,o=0;var u=h.cols;var t=h.data,q=g.data;var k,m;for(l=0;l<u;l++){m=1;s=(l*u);n=s;for(v=l;v<u;v++){k=t[(n+l)];for(r=0;r<l;r++){k-=t[(r*u+l)]*t[(n+r)]}if(v==l){t[(n+l)]=k;if(k==0){return 0}m=1/k}else{t[(s+v)]=k;t[(n+l)]=k*m}n=(n+u)}}s=0;for(p=0;p<u;p++){k=q[p];for(o=0;o<p;o++){k-=t[(s+o)]*q[o]}q[p]=k;s=(s+u)}s=0;for(p=0;p<u;p++){q[p]/=t[(s+p)];s=(s+u)}p=(u-1);for(;p>=0;p--){k=q[p];o=(p+1);s=(o*u);for(;o<u;o++){k-=t[(s+p)]*q[o];s=(s+u)}q[p]=k}return 1},svd_decompose:function(t,k,p,l,o){if(typeof o==="undefined"){o=0}var r=0,z=0,x=0,g=t.rows,D=t.cols,w=g,v=D;var s=t.type|jsfeat.C1_t;if(w<v){r=1;z=w;w=v;v=z}var q=jsfeat.cache.get_buffer((w*w)<<3);var h=jsfeat.cache.get_buffer(v<<3);var C=jsfeat.cache.get_buffer((v*v)<<3);var u=new jsfeat.matrix_t(w,w,s,q.data);var B=new jsfeat.matrix_t(1,v,s,h.data);var y=new jsfeat.matrix_t(v,v,s,C.data);if(r==0){jsfeat.matmath.transpose(u,t)}else{for(z=0;z<D*g;z++){u.data[z]=t.data[z]}for(;z<v*w;z++){u.data[z]=0}}e(u.data,w,B.data,y.data,v,w,v,w);if(k){for(z=0;z<v;z++){k.data[z]=B.data[z]}for(;z<D;z++){k.data[z]=0}}if(r==0){if(p&&(o&jsfeat.SVD_U_T)){z=w*w;while(--z>=0){p.data[z]=u.data[z]}}else{if(p){jsfeat.matmath.transpose(p,u)}}if(l&&(o&jsfeat.SVD_V_T)){z=v*v;while(--z>=0){l.data[z]=y.data[z]}}else{if(l){jsfeat.matmath.transpose(l,y)}}}else{if(p&&(o&jsfeat.SVD_U_T)){z=v*v;while(--z>=0){p.data[z]=y.data[z]}}else{if(p){jsfeat.matmath.transpose(p,y)}}if(l&&(o&jsfeat.SVD_V_T)){z=w*w;while(--z>=0){l.data[z]=u.data[z]}}else{if(l){jsfeat.matmath.transpose(l,u)}}}jsfeat.cache.put_buffer(q);jsfeat.cache.put_buffer(h);jsfeat.cache.put_buffer(C)},svd_solve:function(v,l,s){var E=0,C=0,z=0;var w=0,u=0;var o=v.rows,p=v.cols;var h=0,I=0,x=0;var r=v.type|jsfeat.C1_t;var F=jsfeat.cache.get_buffer((o*o)<<3);var m=jsfeat.cache.get_buffer(p<<3);var H=jsfeat.cache.get_buffer((p*p)<<3);var t=new jsfeat.matrix_t(o,o,r,F.data);var G=new jsfeat.matrix_t(1,p,r,m.data);var D=new jsfeat.matrix_t(p,p,r,H.data);var n=s.data,y=t.data,q=G.data,g=D.data;this.svd_decompose(v,G,t,D,0);x=jsfeat.EPSILON*q[0]*p;for(;E<p;E++,u+=p){I=0;for(C=0;C<p;C++){if(q[C]>x){for(z=0,h=0,w=0;z<o;z++,w+=p){h+=y[w+C]*n[z]}I+=h*g[u+C]/q[C]}}l.data[E]=I}jsfeat.cache.put_buffer(F);jsfeat.cache.put_buffer(m);jsfeat.cache.put_buffer(H)},svd_invert:function(E,t){var C=0,z=0,y=0;var v=0,s=0,h=0;var n=t.rows,o=t.cols;var l=0,w=0;var q=t.type|jsfeat.C1_t;var D=jsfeat.cache.get_buffer((n*n)<<3);var m=jsfeat.cache.get_buffer(o<<3);var G=jsfeat.cache.get_buffer((o*o)<<3);var u=new jsfeat.matrix_t(n,n,q,D.data);var F=new jsfeat.matrix_t(1,o,q,m.data);var B=new jsfeat.matrix_t(o,o,q,G.data);var r=E.data,x=u.data,p=F.data,g=B.data;this.svd_decompose(t,F,u,B,0);w=jsfeat.EPSILON*p[0]*o;for(;C<o;C++,s+=o){for(z=0,v=0;z<n;z++,h++){for(y=0,l=0;y<o;y++,v++){if(p[y]>w){l+=g[s+y]*x[v]/p[y]}}r[h]=l}}jsfeat.cache.put_buffer(D);jsfeat.cache.put_buffer(m);jsfeat.cache.put_buffer(G)},eigenVV:function(j,p,r){var k=j.cols,m=k*k;var g=j.type|jsfeat.C1_t;var o=jsfeat.cache.get_buffer((k*k)<<3);var h=jsfeat.cache.get_buffer(k<<3);var l=new jsfeat.matrix_t(k,k,g,o.data);var q=new jsfeat.matrix_t(1,k,g,h.data);while(--m>=0){l.data[m]=j.data[m]}c(l.data,k,q.data,p?p.data:null,k,k);if(r){while(--k>=0){r.data[k]=q.data[k]}}jsfeat.cache.put_buffer(o);jsfeat.cache.put_buffer(h)}}})();b.linalg=a})(jsfeat);(function(b){var a=(function(){return{affine_3point_transform:function(l,h,o,f,m,g,n,d,j,e,k,c,i){},perspective_4point_transform:function(B,w,ac,s,Z,v,ab,r,W,u,aa,p,U,t,Y,m,S){var J=w;var I=u;var H=ab;var G=J*I*H;var F=Y;var E=J*F;var D=I*E;var C=aa;var o=J*C;var l=v;var h=ac;var f=t;var d=h*f;var au=d*l;var T=f*l*C;var R=f*H;var O=f*C;var N=I*H;var M=F*I;var L=F*l;var K=C*l;var A=1/(R-O-N+M-L+K);var y=J*f;var x=h*l;var q=H*J;var n=F*q;var k=h*I;var g=d*C;var c=h*C*l;var V=H*F*I;var Q=F*h;var at=-(D-G+o*l-l*E-d*I+au-T+R*I)*A;var ar=(G-D-y*H+y*C+au-I*x+L*I-T)*A;var aq=J;var ap=(-C*E+n+k*H-d*H+g-c+L*C-V)*A;var ao=(-n+q*C-Q*I+g-c+Q*l+V-R*C)*A;var am=h;var ak=(-o+q+k-x+O-R-M+L)*A;var ai=(-E+o+d-k+L-K-R+N)*A;J=s;I=p;H=W;G=J*I*H;F=S;E=J*F;D=I*E;C=U;o=J*C;l=r;h=Z;f=m;d=h*f;au=d*l;T=f*l*C;R=f*H;O=f*C;N=I*H;M=F*I;L=F*l;K=C*l;A=1/(R-O-N+M-L+K);y=J*f;x=h*l;q=H*J;n=F*q;k=h*I;g=d*C;c=h*C*l;V=H*F*I;Q=F*h;var an=-(D-G+o*l-l*E-d*I+au-T+R*I)*A;var al=(G-D-y*H+y*C+au-I*x+L*I-T)*A;var aj=J;var ah=(-C*E+n+k*H-d*H+g-c+L*C-V)*A;var ag=(-n+q*C-Q*I+g-c+Q*l+V-R*C)*A;var af=h;var ae=(-o+q+k-x+O-R-M+L)*A;var ad=(-E+o+d-k+L-K-R+N)*A;I=ao-ai*am;H=at*ao;G=at*am;E=ap*ar;D=aq*ap;o=ar*ak;var j=aq*ak;f=1/(H-G*ai-E+D*ai+o*am-j*ao);au=-ap+am*ak;var P=-ap*ai+ao*ak;K=-ar+aq*ai;var z=at-j;x=at*ai-o;q=-ar*am+aq*ao;var i=G-D;var e=H-E;c=I*f;var av=K*f;var X=q*f;B[0]=an*c+al*(au*f)-aj*(P*f);B[1]=an*av+al*(z*f)-aj*(x*f);B[2]=-an*X-al*(i*f)+aj*(e*f);B[3]=ah*c+ag*(au*f)-af*(P*f);B[4]=ah*av+ag*(z*f)-af*(x*f);B[5]=-ah*X-ag*(i*f)+af*(e*f);B[6]=ae*c+ad*(au*f)-P*f;B[7]=ae*av+ad*(z*f)-x*f;B[8]=-ae*X-ad*(i*f)+e*f},invert_affine_transform:function(c,k){var i=c[0],h=c[1],g=c[2];var f=c[3],e=c[4],d=c[5];var j=1/(i*e-h*f);k[0]=j*e;k[1]=j*-h;k[2]=j*(h*d-g*e);k[3]=j*-f;k[4]=j*i;k[5]=j*(g*f-i*d)},invert_perspective_transform:function(c,k){var i=c[0],h=c[1],g=c[2];var f=c[3],e=c[4],d=c[5];var n=c[6],m=c[7],l=c[8];var j=1/(i*(e*l-d*m)-h*(f*l-d*n)+g*(f*m-e*n));k[0]=j*(e*l-d*m);k[1]=j*(g*m-h*l);k[2]=j*(h*d-g*e);k[3]=j*(d*n-f*l);k[4]=j*(i*l-g*n);k[5]=j*(g*f-i*d);k[6]=j*(f*m-e*n);k[7]=j*(h*n-i*m);k[8]=j*(i*e-h*f)}}})();b.transform=a})(jsfeat);(function(b){var a=(function(){var c=function(q,R,O,p){var z=[],r=0;var y=q.channel,v=q.cols,J=q.rows;var P=q.data,m=R.data;var I=v/O,H=J/p;var n=(I*H*65536)|0;var x=0,u=0,C=0,A=0,t=0,s=0,G=0,F=0,D=0,B=0;var Q=0,N=0,K=0,o=0,M=0,E=0;var l=jsfeat.cache.get_buffer((O*y)<<2);var g=jsfeat.cache.get_buffer((O*y)<<2);var L=l.i32;var j=g.i32;for(;x<O;x++){D=x*I,B=D+I;t=(D+1-0.000001)|0,s=B|0;t=Math.min(t,v-1);s=Math.min(s,v-1);if(t>D){z[r++]={si:((t-1)*y)|0,di:(x*y)|0,alpha:((t-D)*256)|0}}for(C=t;C<s;C++){z[r++]={si:(C*y)|0,di:(x*y)|0,alpha:256}}if(B-s>0.001){z[r++]={si:(s*y)|0,di:(x*y)|0,alpha:((B-s)*256)|0}}}for(x=0;x<O*y;x++){L[x]=j[x]=0}u=0;for(A=0;A<J;A++){Q=v*A;for(F=0;F<r;F++){K=z[F].di;o=z[F].alpha;t=z[F].si;for(G=0;G<y;G++){L[K+G]+=P[Q+t+G]*o}}if((u+1)*H<=A+1||A==J-1){M=(Math.max(A+1-(u+1)*H,0)*256)|0;E=256-M;N=O*u;if(M<=0){for(x=0;x<O*y;x++){m[N+x]=Math.min(Math.max((j[x]+L[x]*256)/n,0),255);j[x]=L[x]=0}}else{for(x=0;x<O*y;x++){m[N+x]=Math.min(Math.max((j[x]+L[x]*E)/n,0),255);j[x]=L[x]*M;L[x]=0}}u++}else{for(x=0;x<O*y;x++){j[x]+=L[x]*256;L[x]=0}}}jsfeat.cache.put_buffer(g);jsfeat.cache.put_buffer(l)};var f=function(p,R,N,o){var y=[],q=0;var x=p.channel,u=p.cols,I=p.rows;var O=p.data,m=R.data;var H=u/N,G=I/o;var Q=1/(H*G);var v=0,t=0,B=0,z=0,s=0,r=0,F=0,E=0,C=0,A=0;var P=0,M=0,J=0,n=0,L=0,D=0;var l=jsfeat.cache.get_buffer((N*x)<<2);var g=jsfeat.cache.get_buffer((N*x)<<2);var K=l.f32;var j=g.f32;for(;v<N;v++){C=v*H,A=C+H;s=(C+1-0.000001)|0,r=A|0;s=Math.min(s,u-1);r=Math.min(r,u-1);if(s>C){y[q++]={si:((s-1)*x)|0,di:(v*x)|0,alpha:(s-C)*Q}}for(B=s;B<r;B++){y[q++]={si:(B*x)|0,di:(v*x)|0,alpha:Q}}if(A-r>0.001){y[q++]={si:(r*x)|0,di:(v*x)|0,alpha:(A-r)*Q}}}for(v=0;v<N*x;v++){K[v]=j[v]=0}t=0;for(z=0;z<I;z++){P=u*z;for(E=0;E<q;E++){J=y[E].di;n=y[E].alpha;s=y[E].si;for(F=0;F<x;F++){K[J+F]+=O[P+s+F]*n}}if((t+1)*G<=z+1||z==I-1){L=Math.max(z+1-(t+1)*G,0);D=1-L;M=N*t;if(Math.abs(L)<0.001){for(v=0;v<N*x;v++){m[M+v]=j[v]+K[v];j[v]=K[v]=0}}else{for(v=0;v<N*x;v++){m[M+v]=j[v]+K[v]*D;j[v]=K[v]*L;K[v]=0}}t++}else{for(v=0;v<N*x;v++){j[v]+=K[v];K[v]=0}}}jsfeat.cache.put_buffer(g);jsfeat.cache.put_buffer(l)};var e=function(D,F,m,s,B,t,g,n){var z=0,y=0,x=0,A=0,u=0,l=0,G=0,E=0,C=0,v=t[0],r=0;var q=s<<1,p=s*3,o=s<<2;for(;z<B;++z){l=F[A];for(y=0;y<n;++y){D[y]=l}for(y=0;y<=s-2;y+=2){D[y+n]=F[A+y];D[y+n+1]=F[A+y+1]}for(;y<s;++y){D[y+n]=F[A+y]}l=F[A+s-1];for(y=s;y<n+s;++y){D[y+n]=l}for(y=0;y<=s-4;y+=4){l=D[y]*v,G=D[y+1]*v,E=D[y+2]*v,C=D[y+3]*v;for(x=1;x<g;++x){r=t[x];l+=D[x+y]*r;G+=D[x+y+1]*r;E+=D[x+y+2]*r;C+=D[x+y+3]*r}m[u+y]=l>>8;m[u+y+1]=G>>8;m[u+y+2]=E>>8;m[u+y+3]=C>>8}for(;y<s;++y){l=D[y]*v;for(x=1;x<g;++x){l+=D[x+y]*t[x]}m[u+y]=l>>8}A+=s;u+=s}for(z=0;z<s;++z){l=m[z];for(y=0;y<n;++y){D[y]=l}x=z;for(y=0;y<=B-2;y+=2,x+=q){D[y+n]=m[x];D[y+n+1]=m[x+s]}for(;y<B;++y,x+=s){D[y+n]=m[x]}l=m[(B-1)*s+z];for(y=B;y<n+B;++y){D[y+n]=l}u=z;for(y=0;y<=B-4;y+=4,u+=o){l=D[y]*v,G=D[y+1]*v,E=D[y+2]*v,C=D[y+3]*v;for(x=1;x<g;++x){r=t[x];l+=D[x+y]*r;G+=D[x+y+1]*r;E+=D[x+y+2]*r;C+=D[x+y+3]*r}m[u]=l>>8;m[u+s]=G>>8;m[u+q]=E>>8;m[u+p]=C>>8}for(;y<B;++y,u+=s){l=D[y]*v;for(x=1;x<g;++x){l+=D[x+y]*t[x]}m[u]=l>>8}}};var d=function(D,F,m,s,B,t,g,n){var z=0,y=0,x=0,A=0,u=0,l=0,G=0,E=0,C=0,v=t[0],r=0;var q=s<<1,p=s*3,o=s<<2;for(;z<B;++z){l=F[A];for(y=0;y<n;++y){D[y]=l}for(y=0;y<=s-2;y+=2){D[y+n]=F[A+y];D[y+n+1]=F[A+y+1]}for(;y<s;++y){D[y+n]=F[A+y]}l=F[A+s-1];for(y=s;y<n+s;++y){D[y+n]=l}for(y=0;y<=s-4;y+=4){l=D[y]*v,G=D[y+1]*v,E=D[y+2]*v,C=D[y+3]*v;for(x=1;x<g;++x){r=t[x];l+=D[x+y]*r;G+=D[x+y+1]*r;E+=D[x+y+2]*r;C+=D[x+y+3]*r}m[u+y]=l;m[u+y+1]=G;m[u+y+2]=E;m[u+y+3]=C}for(;y<s;++y){l=D[y]*v;for(x=1;x<g;++x){l+=D[x+y]*t[x]}m[u+y]=l}A+=s;u+=s}for(z=0;z<s;++z){l=m[z];for(y=0;y<n;++y){D[y]=l}x=z;for(y=0;y<=B-2;y+=2,x+=q){D[y+n]=m[x];D[y+n+1]=m[x+s]}for(;y<B;++y,x+=s){D[y+n]=m[x]}l=m[(B-1)*s+z];for(y=B;y<n+B;++y){D[y+n]=l}u=z;for(y=0;y<=B-4;y+=4,u+=o){l=D[y]*v,G=D[y+1]*v,E=D[y+2]*v,C=D[y+3]*v;for(x=1;x<g;++x){r=t[x];l+=D[x+y]*r;G+=D[x+y+1]*r;E+=D[x+y+2]*r;C+=D[x+y+3]*r}m[u]=l;m[u+s]=G;m[u+q]=E;m[u+p]=C}for(;y<B;++y,u+=s){l=D[y]*v;for(x=1;x<g;++x){l+=D[x+y]*t[x]}m[u]=l}}};return{grayscale:function(g,p){var k=g.length|0,q=(k-16)|0;var m=0;var o=4899,h=9617,l=1868;for(var n=0;n<=q;n+=16,m+=4){p[m]=(g[n]*o+g[n+1]*h+g[n+2]*l+8192)>>14;p[m+1]=(g[n+4]*o+g[n+5]*h+g[n+6]*l+8192)>>14;p[m+2]=(g[n+8]*o+g[n+9]*h+g[n+10]*l+8192)>>14;p[m+3]=(g[n+12]*o+g[n+13]*h+g[n+14]*l+8192)>>14}for(;n<k;n+=4,++m){p[m]=(g[n]*o+g[n+1]*h+g[n+2]*l+8192)>>14}},resample:function(l,m,i,k){var j=l.rows,g=l.cols;if(j>k&&g>i){if(l.type&jsfeat.U8_t&&m.type&jsfeat.U8_t&&j*g/(k*i)<256){c(l,m,i,k)}else{f(l,m,i,k)}}},box_blur_gray:function(s,K,n,l){if(typeof l==="undefined"){l=0}var A=s.cols,F=s.rows,t=F<<1,z=A<<1;var E=0,v=0,u=0,m=0;var C=((n<<1)+1)|0;var p=(n+1)|0,I=(p+1)|0;var q=8192;var J=l&jsfeat.BOX_BLUR_NOSCALE?1:(16384/(C*C)+0.5)|0;var D=jsfeat.cache.get_buffer((A*F)<<2);var j=0,H=0,o=0,r=0,k=0;var G=D.i32;var g=s.data;var B=0;for(u=0;u<F;++u){H=u;j=p*g[o];for(E=(o+1)|0,m=(o+n)|0;E<=m;++E){j+=g[E]}r=(o+p)|0;k=o;B=g[k];for(v=0;v<n;++v,H+=F){G[H]=j;j+=g[r]-B;r++}for(;v<A-I;v+=2,H+=t){G[H]=j;j+=g[r]-g[k];G[H+F]=j;j+=g[r+1]-g[k+1];r+=2;k+=2}for(;v<A-p;++v,H+=F){G[H]=j;j+=g[r]-g[k];r++;k++}B=g[r-1];for(;v<A;++v,H+=F){G[H]=j;j+=B-g[k];k++}o+=A}o=0;g=K.data;if(J==1){for(u=0;u<A;++u){H=u;j=p*G[o];for(E=(o+1)|0,m=(o+n)|0;E<=m;++E){j+=G[E]}r=o+p;k=o;B=G[k];for(v=0;v<n;++v,H+=A){g[H]=j;j+=G[r]-B;r++}for(;v<F-I;v+=2,H+=z){g[H]=j;j+=G[r]-G[k];g[H+A]=j;j+=G[r+1]-G[k+1];r+=2;k+=2}for(;v<F-p;++v,H+=A){g[H]=j;j+=G[r]-G[k];r++;k++}B=G[r-1];for(;v<F;++v,H+=A){g[H]=j;j+=B-G[k];k++}o+=F}}else{for(u=0;u<A;++u){H=u;j=p*G[o];for(E=(o+1)|0,m=(o+n)|0;E<=m;++E){j+=G[E]}r=o+p;k=o;B=G[k];for(v=0;v<n;++v,H+=A){g[H]=(j*J+q)>>14;j+=G[r]-B;r++}for(;v<F-I;v+=2,H+=z){g[H]=(j*J+q)>>14;j+=G[r]-G[k];g[H+A]=(j*J+q)>>14;j+=G[r+1]-G[k+1];r+=2;k+=2}for(;v<F-p;++v,H+=A){g[H]=(j*J+q)>>14;j+=G[r]-G[k];r++;k++}B=G[r-1];for(;v<F;++v,H+=A){g[H]=(j*J+q)>>14;j+=B-G[k];k++}o+=F}}jsfeat.cache.put_buffer(D)},gaussian_blur:function(g,s,r,v){if(typeof v==="undefined"){v=0}if(typeof r==="undefined"){r=0}r=r==0?(Math.max(1,(4*v+1-1e-8))*2+1)|0:r;var x=r>>1;var t=g.cols,p=g.rows;var u=g.type,n=u&jsfeat.U8_t;var m=g.data,j=s.data;var k,i,q=(r+Math.max(p,t))|0;var l=jsfeat.cache.get_buffer(q<<2);var o=jsfeat.cache.get_buffer(r<<2);if(n){k=l.u8;i=o.i32}else{if(u&jsfeat.S32_t){k=l.i32;i=o.f32}else{k=l.f32;i=o.f32}}jsfeat.math.get_gaussian_kernel(r,v,i,u);if(n){e(k,m,j,t,p,i,r,x)}else{d(k,m,j,t,p,i,r,x)}jsfeat.cache.put_buffer(l);jsfeat.cache.put_buffer(o)},pyrdown:function(i,o){var r=i.cols,m=i.rows;var l=r>>1,n=m>>1;var q=0,p=0,g=0,t=0,s=0;var k=i.data,j=o.data;for(p=0;p<n;++p){t=g;for(q=0;q<=l-2;q+=2,s+=2,t+=4){j[s]=(k[t]+k[t+1]+k[t+r]+k[t+r+1]+2)>>2;j[s+1]=(k[t+2]+k[t+3]+k[t+r+2]+k[t+r+3]+2)>>2}for(;q<l;++q,++s,t+=2){j[s]=(k[t]+k[t+1]+k[t+r]+k[t+r+1]+2)>>2}g+=r<<1}},scharr_derivatives:function(i,F){var o=i.cols,r=i.rows;var G=o<<1,n=0,l=0,t=0,D,C,B,A,z,v;var u=0,s=0,q=0,g=0;var m,k;var E=i.data;var j=jsfeat.cache.get_buffer((o+2)<<2);var p=jsfeat.cache.get_buffer((o+2)<<2);if(i.type&jsfeat.U8_t||i.type&jsfeat.S32_t){m=j.i32;k=p.i32}else{m=j.f32;k=p.f32}for(;l<r;++l,s+=o){u=((l>0?l-1:1)*o)|0;q=((l<r-1?l+1:r-2)*o)|0;g=(l*G)|0;for(n=0,t=1;n<=o-2;n+=2,t+=2){D=E[u+n],C=E[q+n];m[t]=((D+C)*3+(E[s+n])*10);k[t]=(C-D);D=E[u+n+1],C=E[q+n+1];m[t+1]=((D+C)*3+(E[s+n+1])*10);k[t+1]=(C-D)}for(;n<o;++n,++t){D=E[u+n],C=E[q+n];m[t]=((D+C)*3+(E[s+n])*10);k[t]=(C-D)}n=(o+1)|0;m[0]=m[1];m[n]=m[o];k[0]=k[1];k[n]=k[o];for(n=0;n<=o-4;n+=4){D=k[n+2],C=k[n+1],B=k[n+3],A=k[n+4],z=m[n+2],v=m[n+3];F[g++]=(z-m[n]);F[g++]=((D+k[n])*3+C*10);F[g++]=(v-m[n+1]);F[g++]=((B+C)*3+D*10);F[g++]=((m[n+4]-z));F[g++]=(((A+D)*3+B*10));F[g++]=((m[n+5]-v));F[g++]=(((k[n+5]+B)*3+A*10))}for(;n<o;++n){F[g++]=((m[n+2]-m[n]));F[g++]=(((k[n+2]+k[n])*3+k[n+1]*10))}}jsfeat.cache.put_buffer(j);jsfeat.cache.put_buffer(p)},sobel_derivatives:function(i,F){var o=i.cols,r=i.rows;var G=o<<1,n=0,l=0,t=0,D,C,B,A,z,v;var u=0,s=0,q=0,g=0;var m,k;var E=i.data;var j=jsfeat.cache.get_buffer((o+2)<<2);var p=jsfeat.cache.get_buffer((o+2)<<2);if(i.type&jsfeat.U8_t||i.type&jsfeat.S32_t){m=j.i32;k=p.i32}else{m=j.f32;k=p.f32}for(;l<r;++l,s+=o){u=((l>0?l-1:1)*o)|0;q=((l<r-1?l+1:r-2)*o)|0;g=(l*G)|0;for(n=0,t=1;n<=o-2;n+=2,t+=2){D=E[u+n],C=E[q+n];m[t]=((D+C)+(E[s+n]*2));k[t]=(C-D);D=E[u+n+1],C=E[q+n+1];m[t+1]=((D+C)+(E[s+n+1]*2));k[t+1]=(C-D)}for(;n<o;++n,++t){D=E[u+n],C=E[q+n];m[t]=((D+C)+(E[s+n]*2));k[t]=(C-D)}n=(o+1)|0;m[0]=m[1];m[n]=m[o];k[0]=k[1];k[n]=k[o];for(n=0;n<=o-4;n+=4){D=k[n+2],C=k[n+1],B=k[n+3],A=k[n+4],z=m[n+2],v=m[n+3];F[g++]=(z-m[n]);F[g++]=(D+k[n]+C*2);F[g++]=(v-m[n+1]);F[g++]=(B+C+D*2);F[g++]=(m[n+4]-z);F[g++]=(A+D+B*2);F[g++]=(m[n+5]-v);F[g++]=(k[n+5]+B+A*2)}for(;n<o;++n){F[g++]=(m[n+2]-m[n]);F[g++]=(k[n+2]+k[n]+k[n+1]*2)}}jsfeat.cache.put_buffer(j);jsfeat.cache.put_buffer(p)},compute_integral_image:function(g,l,y,u){var t=g.cols|0,w=g.rows|0,o=g.data;var r=(t+1)|0;var B=0,z=0,h=0,x=0,q=0,n=0,A=0,m=0;if(l&&y){for(;q<r;++q){l[q]=0,y[q]=0}h=(r+1)|0,x=1;for(q=0,m=0;q<w;++q,++h,++x){B=z=0;for(n=0;n<=t-2;n+=2,m+=2,h+=2,x+=2){A=o[m];B+=A,z+=A*A;l[h]=l[x]+B;y[h]=y[x]+z;A=o[m+1];B+=A,z+=A*A;l[h+1]=l[x+1]+B;y[h+1]=y[x+1]+z}for(;n<t;++n,++m,++h,++x){A=o[m];B+=A,z+=A*A;l[h]=l[x]+B;y[h]=y[x]+z}}}else{if(l){for(;q<r;++q){l[q]=0}h=(r+1)|0,x=1;for(q=0,m=0;q<w;++q,++h,++x){B=0;for(n=0;n<=t-2;n+=2,m+=2,h+=2,x+=2){B+=o[m];l[h]=l[x]+B;B+=o[m+1];l[h+1]=l[x+1]+B}for(;n<t;++n,++m,++h,++x){B+=o[m];l[h]=l[x]+B}}}else{if(y){for(;q<r;++q){y[q]=0}h=(r+1)|0,x=1;for(q=0,m=0;q<w;++q,++h,++x){z=0;for(n=0;n<=t-2;n+=2,m+=2,h+=2,x+=2){A=o[m];z+=A*A;y[h]=y[x]+z;A=o[m+1];z+=A*A;y[h+1]=y[x+1]+z}for(;n<t;++n,++m,++h,++x){A=o[m];z+=A*A;y[h]=y[x]+z}}}}}if(u){for(q=0;q<r;++q){u[q]=0}h=(r+1)|0,x=0;for(q=0,m=0;q<w;++q,++h,++x){for(n=0;n<=t-2;n+=2,m+=2,h+=2,x+=2){u[h]=o[m]+u[x];u[h+1]=o[m+1]+u[x+1]}for(;n<t;++n,++m,++h,++x){u[h]=o[m]+u[x]}}h=(r+t)|0,x=t;for(q=0;q<w;++q,h+=r,x+=r){u[h]+=u[x]}for(n=t-1;n>0;--n){h=n+w*r,x=h-r;for(q=w;q>0;--q,h-=r,x-=r){u[h]+=u[x]+u[x+1]}}}},equalize_histogram:function(j,r){var s=j.cols,q=j.rows,o=j.data,l=r.data,t=s*q;var p=0,n=0,k,g;var m=jsfeat.cache.get_buffer(256<<2);k=m.i32;for(;p<256;++p){k[p]=0}for(p=0;p<t;++p){++k[o[p]]}n=k[0];for(p=1;p<256;++p){n=k[p]+=n}g=255/t;for(p=0;p<t;++p){l[p]=(k[o[p]]*g+0.5)|0}jsfeat.cache.put_buffer(m)},canny:function(t,U,D,k){var B=t.cols,K=t.rows,R=t.data,n=U.data;var J=0,G=0,p=0,z=B<<1,Q=0,I=0,M=0,v=0,u=0,C=0;var g=0,T=0;var o=jsfeat.cache.get_buffer((K*z)<<2);var l=jsfeat.cache.get_buffer((3*(B+2))<<2);var m=jsfeat.cache.get_buffer(((K+2)*(B+2))<<2);var r=jsfeat.cache.get_buffer((K*B)<<2);var P=l.i32;var S=m.i32;var q=r.i32;var F=o.i32;var O=1,N=(B+2+1)|0,L=(2*(B+2)+1)|0,A=(B+2)|0,H=(A+1)|0,E=0;this.sobel_derivatives(t,F);if(D>k){J=D;D=k;k=J}J=(3*(B+2))|0;while(--J>=0){P[J]=0}J=((K+2)*(B+2))|0;while(--J>=0){S[J]=0}for(;G<B;++G,p+=2){v=F[p],u=F[p+1];P[N+G]=((v^(v>>31))-(v>>31))+((u^(u>>31))-(u>>31))}for(J=1;J<=K;++J,p+=z){if(J==K){G=L+B;while(--G>=L){P[G]=0}}else{for(G=0;G<B;G++){v=F[p+(G<<1)],u=F[p+(G<<1)+1];P[L+G]=((v^(v>>31))-(v>>31))+((u^(u>>31))-(u>>31))}}Q=(p-z)|0;S[H-1]=0;I=0;for(G=0;G<B;++G,Q+=2){M=P[N+G];if(M>D){v=F[Q];u=F[Q+1];C=v^u;v=((v^(v>>31))-(v>>31))|0;u=((u^(u>>31))-(u>>31))|0;g=v*13573;T=g+((v+v)<<15);u<<=15;if(u<g){if(M>P[N+G-1]&&M>=P[N+G+1]){if(M>k&&!I&&S[H+G-A]!=2){S[H+G]=2;I=1;q[E++]=H+G}else{S[H+G]=1}continue}}else{if(u>T){if(M>P[O+G]&&M>=P[L+G]){if(M>k&&!I&&S[H+G-A]!=2){S[H+G]=2;I=1;q[E++]=H+G}else{S[H+G]=1}continue}}else{C=C<0?-1:1;if(M>P[O+G-C]&&M>P[L+G+C]){if(M>k&&!I&&S[H+G-A]!=2){S[H+G]=2;I=1;q[E++]=H+G}else{S[H+G]=1}continue}}}}S[H+G]=0;I=0}S[H+B]=0;H+=A;G=O;O=N;N=L;L=G}G=H-A-1;for(J=0;J<A;++J,++G){S[G]=0}while(E>0){H=q[--E];H-=A+1;if(S[H]==1){S[H]=2,q[E++]=H}H+=1;if(S[H]==1){S[H]=2,q[E++]=H}H+=1;if(S[H]==1){S[H]=2,q[E++]=H}H+=A;if(S[H]==1){S[H]=2,q[E++]=H}H-=2;if(S[H]==1){S[H]=2,q[E++]=H}H+=A;if(S[H]==1){S[H]=2,q[E++]=H}H+=1;if(S[H]==1){S[H]=2,q[E++]=H}H+=1;if(S[H]==1){S[H]=2,q[E++]=H}}H=A+1;O=0;for(J=0;J<K;++J,H+=A){for(G=0;G<B;++G){n[O++]=(S[H+G]==2)*255}}jsfeat.cache.put_buffer(o);jsfeat.cache.put_buffer(l);jsfeat.cache.put_buffer(m);jsfeat.cache.put_buffer(r)},warp_perspective:function(q,Q,u,P){if(typeof P==="undefined"){P=0}var C=q.cols,F=q.rows,o=Q.cols,D=Q.rows;var K=q.data,l=Q.data;var t=0,s=0,O=0,v=0,G=0,r=0,E=0,w=0,i=0,h=0,g=0,M=0,J=0,k=0,j=0;var B=u[0],A=u[1],z=u[2],N=u[3],L=u[4],I=u[5],p=u[6],n=u[7],m=u[8];for(var H=0;s<D;++s){w=A*s+z,i=L*s+I,h=n*s+m;for(t=0;t<o;++t,++H,w+=B,i+=N,h+=p){g=1/h;r=w*g,E=i*g;v=r|0,G=E|0;if(r>0&&E>0&&v<(C-1)&&G<(F-1)){M=Math.max(r-v,0);J=Math.max(E-G,0);O=C*G+v;k=K[O]+M*(K[O+1]-K[O]);j=K[O+C]+M*(K[O+C+1]-K[O+C]);l[H]=k+J*(j-k)}else{l[H]=P}}}},warp_affine:function(k,J,o,I){if(typeof I==="undefined"){I=0}var t=k.cols,w=k.rows,j=J.cols,u=J.rows;var D=k.data,i=J.data;var n=0,m=0,H=0,p=0,z=0,l=0,v=0,F=0,C=0,h=0,g=0;var s=o[0],r=o[1],q=o[2],G=o[3],E=o[4],B=o[5];for(var A=0;m<u;++m){l=r*m+q;v=E*m+B;for(n=0;n<j;++n,++A,l+=s,v+=G){p=l|0;z=v|0;if(l>0&&v>0&&p<(t-1)&&z<(w-1)){F=Math.max(l-p,0);C=Math.max(v-z,0);H=t*z+p;h=D[H]+F*(D[H+1]-D[H]);g=D[H+t]+F*(D[H+t+1]-D[H+t]);i[A]=h+C*(g-h)}else{i[A]=I}}}}}})();b.imgproc=a})(jsfeat);(function(a){var b=(function(){var h=new Int32Array([0,3,1,3,2,2,3,1,3,0,3,-1,2,-2,1,-3,0,-3,-1,-3,-2,-2,-3,-1,-3,0,-3,1,-2,2,-1,3]);var f=new Uint8Array(512);var e=new Int32Array(25);var i=new Int32Array(25);var d=function(l,n,o){var j=0;var m=h;for(;j<o;++j){l[j]=m[j<<1]+m[(j<<1)+1]*n}for(;j<25;++j){l[j]=l[j-o]}},g=function(j,n,l,r,p){var q=25,o=0,w=j[n];var m=p,t=0,u=0,s=0;for(;o<q;++o){r[o]=w-j[n+l[o]]}for(o=0;o<16;o+=2){t=Math.min(r[o+1],r[o+2]);t=Math.min(t,r[o+3]);if(t<=m){continue}t=Math.min(t,r[o+4]);t=Math.min(t,r[o+5]);t=Math.min(t,r[o+6]);t=Math.min(t,r[o+7]);t=Math.min(t,r[o+8]);m=Math.max(m,Math.min(t,r[o]));m=Math.max(m,Math.min(t,r[o+9]))}u=-m;for(o=0;o<16;o+=2){s=Math.max(r[o+1],r[o+2]);s=Math.max(s,r[o+3]);s=Math.max(s,r[o+4]);s=Math.max(s,r[o+5]);if(s>=u){continue}s=Math.max(s,r[o+6]);s=Math.max(s,r[o+7]);s=Math.max(s,r[o+8]);u=Math.min(u,Math.max(s,r[o]));u=Math.min(u,Math.max(s,r[o+9]))}return -u-1};var c=20;return{set_threshold:function(j){c=Math.min(Math.max(j,0),255);for(var k=-255;k<=255;++k){f[(k+255)]=(k<-c?1:(k>c?2:0))}return c},detect:function(L,H,D){if(typeof D==="undefined"){D=3}var A=8,t=25;var u=L.data,X=L.cols,ar=L.rows;var ap=0,an=0,al=0,E=0,W=0,aq=0;var B=jsfeat.cache.get_buffer(3*X);var O=jsfeat.cache.get_buffer(((X+1)*3)<<2);var I=B.u8;var F=O.i32;var M=e;var J=i;var y=Math.max(3,D);var Z=Math.min((ar-2),(ar-D));var z=Math.max(3,D);var aa=Math.min((X-3),(X-D));var ah=0,P=0,C;var Q=g;var G=f;var p=c;var Y=0,ao=0,au=0,aw=0,U=0,V=0,av=0,R=0,at=0;var T=0,S=0,o=0;d(M,X,16);var am=M[0];var ak=M[1];var aj=M[2];var ai=M[3];var ag=M[4];var af=M[5];var ae=M[6];var ad=M[7];var ac=M[8];var ab=M[9];var s=M[10];var r=M[11];var q=M[12];var n=M[13];var m=M[14];var l=M[15];for(ap=0;ap<X*3;++ap){I[ap]=0}for(ap=y;ap<Z;++ap){av=((ap*X)+z)|0;aq=(ap-3)%3;V=(aq*X)|0;U=(aq*(X+1))|0;for(an=0;an<X;++an){I[V+an]=0}aw=0;if(ap<(Z-1)){an=z;for(;an<aa;++an,++av){Y=u[av];ao=(-Y+255);au=(G[ao+u[av+am]]|G[ao+u[av+ac]]);if(au==0){continue}au&=(G[ao+u[av+aj]]|G[ao+u[av+s]]);au&=(G[ao+u[av+ag]]|G[ao+u[av+q]]);au&=(G[ao+u[av+ae]]|G[ao+u[av+m]]);if(au==0){continue}au&=(G[ao+u[av+ak]]|G[ao+u[av+ab]]);au&=(G[ao+u[av+ai]]|G[ao+u[av+r]]);au&=(G[ao+u[av+af]]|G[ao+u[av+n]]);au&=(G[ao+u[av+ad]]|G[ao+u[av+l]]);if(au&1){E=(Y-p);ah=0;for(al=0;al<t;++al){W=u[(av+M[al])];if(W<E){++ah;if(ah>A){++aw;F[U+aw]=an;I[V+an]=Q(u,av,M,J,p);break}}else{ah=0}}}if(au&2){E=(Y+p);ah=0;for(al=0;al<t;++al){W=u[(av+M[al])];if(W>E){++ah;if(ah>A){++aw;F[U+aw]=an;I[V+an]=Q(u,av,M,J,p);break}}else{ah=0}}}}}F[U+X]=aw;if(ap==y){continue}aq=(ap-4+3)%3;R=(aq*X)|0;U=(aq*(X+1))|0;aq=(ap-5+3)%3;at=(aq*X)|0;aw=F[U+X];for(al=0;al<aw;++al){an=F[U+al];T=(an+1)|0;S=(an-1)|0;o=I[R+an];if((o>I[R+T]&&o>I[R+S]&&o>I[at+S]&&o>I[at+an]&&o>I[at+T]&&o>I[V+S]&&o>I[V+an]&&o>I[V+T])){C=H[P];C.x=an,C.y=(ap-1),C.score=o;P++}}}jsfeat.cache.put_buffer(B);jsfeat.cache.put_buffer(O);return P}}})();a.fast_corners=b;b.set_threshold(20)})(jsfeat);(function(b){var a=(function(){var d=function(e,j,m,i,n,g){var k=0,l=0,f=(n*m)|0,o=f;for(k=n;k<i-n;++k,f+=m,o=f){for(l=m-n;l>=n;--l){j[o]=-4*e[o]+e[o+n]+e[o-n]+e[o+g]+e[o-g];++o}}};var c=function(e,f,k,m,g,l,h){var o=-2*e[f]+e[f+m]+e[f-m];var i=-2*e[f]+e[f+g]+e[f-g];var n=e[f+l]+e[f-l]-e[f+h]-e[f-h];var j=(Math.sqrt(((o-i)*(o-i)+4*n*n)))|0;return Math.min(Math.abs(k-j),Math.abs(-(k+j)))};return{laplacian_threshold:30,min_eigen_value_threshold:25,detect:function(l,u){var o=0,n=0;var p=l.cols,v=l.rows,q=l.data;var C=5,f=(5*p)|0;var B=(3+3*p)|0,g=(3-3*p)|0;var e=jsfeat.cache.get_buffer((p*v)<<2);var j=e.i32;var i=0,k=0,m=0,r=0,t;var s=0;var A=this.laplacian_threshold;var z=this.min_eigen_value_threshold;o=p*v;while(--o>=0){j[o]=0}d(q,j,p,v,C,f);k=(p+1)|0;for(n=1;n<v-1;++n,k+=p){for(o=1,m=k;o<p-1;++o,++m){i=j[m];if((i<-A&&i<j[m-1]&&i<j[m+1]&&i<j[m-p]&&i<j[m+p]&&i<j[m-p-1]&&i<j[m+p-1]&&i<j[m-p+1]&&i<j[m+p+1])||(i>A&&i>j[m-1]&&i>j[m+1]&&i>j[m-p]&&i>j[m+p]&&i>j[m-p-1]&&i>j[m+p-1]&&i>j[m-p+1]&&i>j[m+p+1])){r=c(q,m,i,C,f,B,g);if(r>z){t=u[s];t.x=o,t.y=n,t.score=r;++s;++o,++m}}}}jsfeat.cache.put_buffer(e);return s}}})();b.yape06=a})(jsfeat);(function(a){var b=(function(){var d=function(l,m,k){var j=0;var h,n;h=k;for(n=0;n<h;n++,j++){h=(Math.sqrt((k*k-n*n))+0.5)|0;m[j]=(h+l*n)}for(h--;h<n&&h>=0;h--,j++){n=(Math.sqrt((k*k-h*h))+0.5)|0;m[j]=(h+l*n)}for(;-h<n;h--,j++){n=(Math.sqrt((k*k-h*h))+0.5)|0;m[j]=(h+l*n)}for(n--;n>=0;n--,j++){h=(-Math.sqrt((k*k-n*n))-0.5)|0;m[j]=(h+l*n)}for(;n>h;n--,j++){h=(-Math.sqrt((k*k-n*n))-0.5)|0;m[j]=(h+l*n)}for(h++;h<=0;h++,j++){n=(-Math.sqrt((k*k-h*h))-0.5)|0;m[j]=(h+l*n)}for(;h<-n;h++,j++){n=(-Math.sqrt((k*k-h*h))-0.5)|0;m[j]=(h+l*n)}for(n++;n<0;n++,j++){h=(Math.sqrt((k*k-n*n))+0.5)|0;m[j]=(h+l*n)}m[j]=m[0];m[j+1]=m[1];return j};var g=function(h,j,i){var k=0;if(h[j+1]!=0){k++}if(h[j-1]!=0){k++}if(h[j+i]!=0){k++}if(h[j+i+1]!=0){k++}if(h[j+i-1]!=0){k++}if(h[j-i]!=0){k++}if(h[j-i+1]!=0){k++}if(h[j-i-1]!=0){k++}return k};var c=function(l,m,i,k,j){var h,n;if(i>0){m-=k*j;for(n=-j;n<=j;++n){for(h=-j;h<=j;++h){if(l[m+h]>i){return false}}m+=k}}else{m-=k*j;for(n=-j;n<=j;++n){for(h=-j;h<=j;++h){if(l[m+h]<i){return false}}m+=k}}return true};var e=function(s,r,m,u,p,i,l,n){var k=0;var q=0,o=(l-1)|0;var j=0,w=0,v=0,t=0;var h=0;j=s[r+i[q]];if((j<=p)){if((j>=u)){w=s[r+i[o]];if((w<=p)){if((w>=u)){m[r]=0;return}else{o++;v=s[r+i[o]];if((v>p)){o++;t=s[r+i[o]];if((t>p)){h=3}else{if((t<u)){h=6}else{m[r]=0;return}}}else{o++;t=s[r+i[o]];if((t>p)){h=7}else{if((t<u)){h=2}else{m[r]=0;return}}}}}else{o++;v=s[r+i[o]];if((v>p)){o++;t=s[r+i[o]];if((t>p)){h=3}else{if((t<u)){h=6}else{m[r]=0;return}}}else{if((v<u)){o++;t=s[r+i[o]];if((t>p)){h=7}else{if((t<u)){h=2}else{m[r]=0;return}}}else{m[r]=0;return}}}}else{w=s[r+i[o]];if((w>p)){m[r]=0;return}o++;v=s[r+i[o]];if((v>p)){m[r]=0;return}o++;t=s[r+i[o]];if((t>p)){m[r]=0;return}h=1}}else{w=s[r+i[o]];if((w<u)){m[r]=0;return}o++;v=s[r+i[o]];if((v<u)){m[r]=0;return}o++;t=s[r+i[o]];if((t<u)){m[r]=0;return}h=0}for(q=1;q<=l;q++){j=s[r+i[q]];switch(h){case 0:if((j>p)){v=t;o++;t=s[r+i[o]];if((t<u)){m[r]=0;return}k-=j+v;h=0;break}if((j<u)){if((v>p)){m[r]=0;return}if((t>p)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t>p)){m[r]=0;return}k-=j+v;h=8;break}if((v<=p)){m[r]=0;return}if((t<=p)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t>p)){k-=j+v;h=3;break}if((t<u)){k-=j+v;h=6;break}m[r]=0;return;case 1:if((j<u)){v=t;o++;t=s[r+i[o]];if((t>p)){m[r]=0;return}k-=j+v;h=1;break}if((j>p)){if((v<u)){m[r]=0;return}if((t<u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t<u)){m[r]=0;return}k-=j+v;h=9;break}if((v>=u)){m[r]=0;return}if((t>=u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t<u)){k-=j+v;h=2;break}if((t>p)){k-=j+v;h=7;break}m[r]=0;return;case 2:if((j>p)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((j<u)){if((t>p)){m[r]=0;return}k-=j+v;h=4;break}if((t>p)){k-=j+v;h=7;break}if((t<u)){k-=j+v;h=2;break}m[r]=0;return;case 3:if((j<u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((j>p)){if((t<u)){m[r]=0;return}k-=j+v;h=5;break}if((t>p)){k-=j+v;h=3;break}if((t<u)){k-=j+v;h=6;break}m[r]=0;return;case 4:if((j>p)){m[r]=0;return}if((j<u)){v=t;o++;t=s[r+i[o]];if((t>p)){m[r]=0;return}k-=j+v;h=1;break}if((t>=u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t<u)){k-=j+v;h=2;break}if((t>p)){k-=j+v;h=7;break}m[r]=0;return;case 5:if((j<u)){m[r]=0;return}if((j>p)){v=t;o++;t=s[r+i[o]];if((t<u)){m[r]=0;return}k-=j+v;h=0;break}if((t<=p)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t>p)){k-=j+v;h=3;break}if((t<u)){k-=j+v;h=6;break}m[r]=0;return;case 7:if((j>p)){m[r]=0;return}if((j<u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t>p)){k-=j+v;h=3;break}if((t<u)){k-=j+v;h=6;break}m[r]=0;return;case 6:if((j>p)){m[r]=0;return}if((j<u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t<u)){k-=j+v;h=2;break}if((t>p)){k-=j+v;h=7;break}m[r]=0;return;case 8:if((j>p)){if((t<u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t<u)){m[r]=0;return}k-=j+v;h=9;break}if((j<u)){v=t;o++;t=s[r+i[o]];if((t>p)){m[r]=0;return}k-=j+v;h=1;break}m[r]=0;return;case 9:if((j<u)){if((t>p)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t>p)){m[r]=0;return}k-=j+v;h=8;break}if((j>p)){v=t;o++;t=s[r+i[o]];if((t<u)){m[r]=0;return}k-=j+v;h=0;break}m[r]=0;return;default:break}}m[r]=(k+n*s[r])};var f=(function(){function h(i,j,k){this.dirs=new Int32Array(1024);this.dirs_count=d(i,this.dirs,k)|0;this.scores=new Int32Array(i*j);this.radius=k|0}return h})();return{level_tables:[],tau:7,init:function(m,j,h,l){if(typeof l==="undefined"){l=1}var k;h=Math.min(h,7);h=Math.max(h,3);for(k=0;k<l;++k){this.level_tables[k]=new f(m>>k,j>>k,h)}},detect:function(k,J,G){if(typeof G==="undefined"){G=4}var A=this.level_tables[0];var i=A.radius|0,q=(i-1)|0;var m=A.dirs;var n=A.dirs_count|0;var v=n>>1;var O=k.data,u=k.cols|0,K=k.rows|0,N=u>>1;var H=A.scores;var s=0,r=0,j=0,l=0,o=0,p=0,z=0,I=0;var F=this.tau|0;var D=0,E;var C=Math.max(i+1,G)|0;var B=Math.max(i+1,G)|0;var M=Math.min(u-i-2,u-G)|0;var L=Math.min(K-i-2,K-G)|0;j=(B*u+C)|0;for(r=B;r<L;++r,j+=u){for(s=C,l=j;s<M;++s,++l){o=O[l]+F,p=O[l]-F;if(p<O[l+i]&&O[l+i]<o&&p<O[l-i]&&O[l-i]<o){H[l]=0}else{e(O,l,H,p,o,m,v,n)}}}j=(B*u+C)|0;for(r=B;r<L;++r,j+=u){for(s=C,l=j;s<M;++s,++l){I=H[l];z=Math.abs(I);if(z<5){++s,++l}else{if(g(H,l,u)>=3&&c(H,l,I,N,i)){E=J[D];E.x=s,E.y=r,E.score=z;++D;s+=q,l+=q}}}}return D}}})();a.yape=b})(jsfeat);(function(b){var a=(function(){var c=jsfeat.imgproc.scharr_derivatives;return{track:function(n,u,ao,aK,k,N,R,K,f,q){if(typeof R==="undefined"){R=30}if(typeof K==="undefined"){K=new Uint8Array(k)}if(typeof f==="undefined"){f=0.01}if(typeof q==="undefined"){q=0.0001}var e=(N-1)*0.5;var h=(N*N)|0;var Z=h<<1;var r=n.data,S=u.data;var g=r[0].data,F=S[0].data;var M=r[0].cols,aA=r[0].rows,ax=0,aG=0;var ay=jsfeat.cache.get_buffer(h<<2);var s=jsfeat.cache.get_buffer(Z<<2);var t=jsfeat.cache.get_buffer((aA*(M<<1))<<2);var w=ay.i32;var ab=s.i32;var az=t.i32;var aa=0,I=0,aL=0,ar=0,aH=0,at=0;var al=0,aE=0,aC=0,ae=0,ad=0;var E=0,z=0,X=0,V=0;var p=0,o=0,aD=0,aB=0;var Q=0,P=0,J=0,H=0,ah=0,aj=0,l=0;var d=0,A=0,O=0;var U=0,T=0,av=0,au=0;var ag=14;var C=14;var Y=C-5;var aw=(1<<((Y)-1));var ac=(1<<ag);var m=(1<<((C)-1));var W=1/(1<<20);var aJ=0,aI=0,aq=0,ap=0,ak=0,v=0,B=0;var an=0,am=0,af=0,ai=0,aF=0;var G=1.1920929e-7;f*=f;for(;Q<k;++Q){K[Q]=1}var L=(n.levels-1)|0;ah=L;for(;ah>=0;--ah){al=(1/(1<<ah));ax=M>>ah;aG=aA>>ah;aa=ax<<1;g=r[ah].data;F=S[ah].data;A=(ax-N)|0;O=(aG-N)|0;c(r[ah],az);for(aj=0;aj<k;++aj){Q=aj<<1;P=Q+1;aE=ao[Q]*al;aC=ao[P]*al;if(ah==L){ae=aE;ad=aC}else{ae=aK[Q]*2;ad=aK[P]*2}aK[Q]=ae;aK[P]=ad;aE-=e;aC-=e;p=aE|0;o=aC|0;J=(p<=d)|(p>=A)|(o<=d)|(o>=O);if(J!=0){if(ah==0){K[aj]=0}continue}U=aE-p;T=aC-o;aJ=(((1-U)*(1-T)*ac)+0.5)|0;aI=((U*(1-T)*ac)+0.5)|0;aq=(((1-U)*T*ac)+0.5)|0;ap=(ac-aJ-aI-aq);an=0,am=0,af=0;for(H=0;H<N;++H){I=((H+o)*ax+p)|0;aL=I<<1;ar=(H*N)|0;aH=ar<<1;for(J=0;J<N;++J,++I,++ar,aL+=2){ak=((g[I])*aJ+(g[I+1])*aI+(g[I+ax])*aq+(g[I+ax+1])*ap);ak=(((ak)+aw)>>(Y));v=(az[aL]*aJ+az[aL+2]*aI+az[aL+aa]*aq+az[aL+aa+2]*ap);v=(((v)+m)>>(C));B=(az[aL+1]*aJ+az[aL+3]*aI+az[aL+aa+1]*aq+az[aL+aa+3]*ap);B=(((B)+m)>>(C));w[ar]=ak;ab[aH++]=v;ab[aH++]=B;an+=v*v;am+=v*B;af+=B*B}}an*=W;am*=W;af*=W;ai=an*af-am*am;aF=(af+an-Math.sqrt((an-af)*(an-af)+4*am*am))/Z;if(aF<q||ai<G){if(ah==0){K[aj]=0}continue}ai=1/ai;ae-=e;ad-=e;E=0;z=0;for(l=0;l<R;++l){aD=ae|0;aB=ad|0;J=(aD<=d)|(aD>=A)|(aB<=d)|(aB>=O);if(J!=0){if(ah==0){K[aj]=0}break}U=ae-aD;T=ad-aB;aJ=(((1-U)*(1-T)*ac)+0.5)|0;aI=((U*(1-T)*ac)+0.5)|0;aq=(((1-U)*T*ac)+0.5)|0;ap=(ac-aJ-aI-aq);av=0,au=0;for(H=0;H<N;++H){at=((H+aB)*ax+aD)|0;ar=(H*N)|0;aH=ar<<1;for(J=0;J<N;++J,++at,++ar){ak=((F[at])*aJ+(F[at+1])*aI+(F[at+ax])*aq+(F[at+ax+1])*ap);ak=(((ak)+aw)>>(Y));ak=(ak-w[ar]);av+=ak*ab[aH++];au+=ak*ab[aH++]}}av*=W;au*=W;X=((am*au-af*av)*ai);V=((am*av-an*au)*ai);ae+=X;ad+=V;aK[Q]=ae+e;aK[P]=ad+e;if(X*X+V*V<=f){break}if(l>0&&Math.abs(X+E)<0.01&&Math.abs(V+z)<0.01){aK[Q]-=X*0.5;aK[P]-=V*0.5;break}E=X;z=V}}}jsfeat.cache.put_buffer(ay);jsfeat.cache.put_buffer(s);jsfeat.cache.put_buffer(t)}}})();b.optical_flow_lk=a})(jsfeat);(function(b){var a=(function(){var c=function(e,d){var f=(e.width*0.25+0.5)|0;return d.x<=e.x+f&&d.x>=e.x-f&&d.y<=e.y+f&&d.y>=e.y-f&&d.width<=(e.width*1.5+0.5)|0&&(d.width*1.5+0.5)|0>=e.width};return{edges_density:0.07,detect_single_scale:function(E,ad,af,q,d,f,D,B){var z=(B.size[0]*D)|0,N=(B.size[1]*D)|0,V=(0.5*D+1.5)|0,U=V;var Z,X,W,Q,O,T=(d-z)|0,R=(f-N)|0;var H=(d+1)|0,w,p,r,S;var e=1/(z*N);var t,o,l,u,s,ae,A,g=true,L,h,n,G,m;var M,K,J,I,v,C;var ac=0,ab=z,aa=N*H,Y=aa+z;var F=((z*N)*255*this.edges_density)|0;var P=[];for(O=0;O<R;O+=U){ac=O*H;for(Q=0;Q<T;Q+=V,ac+=V){p=E[ac]-E[ac+ab]-E[ac+aa]+E[ac+Y];if(q){w=(q[ac]-q[ac+ab]-q[ac+aa]+q[ac+Y]);if(w<F||p<20){Q+=V,ac+=V;continue}}p*=e;r=(ad[ac]-ad[ac+ab]-ad[ac+aa]+ad[ac+Y])*e-p*p;S=r>0?Math.sqrt(r):1;t=B.complexClassifiers;s=t.length;g=true;for(Z=0;Z<s;++Z){o=t[Z];L=o.threshold;l=o.simpleClassifiers;ae=l.length;h=0;for(X=0;X<ae;++X){u=l[X];n=0;m=u.features;A=m.length;if(u.tilted===1){for(W=0;W<A;++W){G=m[W];M=~~(Q+G[0]*D)+~~(O+G[1]*D)*H;v=~~(G[2]*D);C=~~(G[3]*D);K=v*H;J=C*H;n+=(af[M]-af[M+v+K]-af[M-C+J]+af[M+v-C+K+J])*G[4]}}else{for(W=0;W<A;++W){G=m[W];M=~~(Q+G[0]*D)+~~(O+G[1]*D)*H;v=~~(G[2]*D);C=~~(G[3]*D);J=C*H;n+=(E[M]-E[M+v]-E[M+J]+E[M+J+v])*G[4]}}h+=(n*e<u.threshold*S)?u.left_val:u.right_val}if(h<L){g=false;break}}if(g){P.push({x:Q,y:O,width:z,height:N,neighbor:1,confidence:h});Q+=V,ac+=V}}}return P},detect_multi_scale:function(e,m,f,h,d,n,i,g,k){if(typeof g==="undefined"){g=1.2}if(typeof k==="undefined"){k=1}var o=i.size[0];var j=i.size[1];var l=[];while(k*o<d&&k*j<n){l=l.concat(this.detect_single_scale(e,m,f,h,d,n,k,i));k*=g}return l},group_rectangles:function(g,l){if(typeof l==="undefined"){l=1}var y,v,q=g.length;var r=[];for(y=0;y<q;++y){r[y]={parent:-1,element:g[y],rank:0}}for(y=0;y<q;++y){if(!r[y].element){continue}var t=y;while(r[t].parent!=-1){t=r[t].parent}for(v=0;v<q;++v){if(y!=v&&r[v].element&&c(r[y].element,r[v].element)){var s=v;while(r[s].parent!=-1){s=r[s].parent}if(s!=t){if(r[t].rank>r[s].rank){r[s].parent=t}else{r[t].parent=s;if(r[t].rank==r[s].rank){r[s].rank++}t=s}var A,d=v;while(r[d].parent!=-1){A=d;d=r[d].parent;r[A].parent=t}d=y;while(r[d].parent!=-1){A=d;d=r[d].parent;r[A].parent=t}}}}}var w=[];var o=0;for(y=0;y<q;y++){v=-1;var e=y;if(r[e].element){while(r[e].parent!=-1){e=r[e].parent}if(r[e].rank>=0){r[e].rank=~o++}v=~r[e].rank}w[y]=v}var m=[];for(y=0;y<o+1;++y){m[y]={neighbors:0,x:0,y:0,width:0,height:0,confidence:0}}for(y=0;y<q;++y){var z=g[y];var k=w[y];if(m[k].neighbors==0){m[k].confidence=z.confidence}++m[k].neighbors;m[k].x+=z.x;m[k].y+=z.y;m[k].width+=z.width;m[k].height+=z.height;m[k].confidence=Math.max(m[k].confidence,z.confidence)}var h=[];for(y=0;y<o;++y){q=m[y].neighbors;if(q>=l){h.push({x:(m[y].x*2+q)/(2*q),y:(m[y].y*2+q)/(2*q),width:(m[y].width*2+q)/(2*q),height:(m[y].height*2+q)/(2*q),neighbors:m[y].neighbors,confidence:m[y].confidence})}}var p=[];q=h.length;for(y=0;y<q;++y){var z=h[y];var x=true;for(v=0;v<q;++v){var u=h[v];var f=(u.width*0.25+0.5)|0;if(y!=v&&z.x>=u.x-f&&z.y>=u.y-f&&z.x+z.width<=u.x+u.width+f&&z.y+z.height<=u.y+u.height+f&&(u.neighbors>Math.max(3,z.neighbors)||z.neighbors<3)){x=false;break}}if(x){p.push(z)}}return p}}})();b.haar=a})(jsfeat);(function(a){var b=(function(){var c=function(e,d){var f=(e.width*0.25+0.5)|0;return d.x<=e.x+f&&d.x>=e.x-f&&d.y<=e.y+f&&d.y>=e.y-f&&d.width<=(e.width*1.5+0.5)|0&&(d.width*1.5+0.5)|0>=e.width};return{interval:4,scale:1.1486,next:5,scale_to:1,prepare_cascade:function(f){var l=f.stage_classifier.length;for(var g=0;g<l;g++){var i=f.stage_classifier[g].feature;var d=f.stage_classifier[g].count;var h=f.stage_classifier[g]._feature=new Array(d);for(var e=0;e<d;e++){h[e]={size:i[e].size,px:new Array(i[e].size),pz:new Array(i[e].size),nx:new Array(i[e].size),nz:new Array(i[e].size)}}}},build_pyramid:function(e,p,x,t,m){if(typeof t==="undefined"){t=4}if(typeof m==="undefined"){m=true}if(m){var l=e.getContext("2d");var n=e.width*e.height;var v=l.getImageData(0,0,e.width,e.height);var k=v.data;var o=new Uint32Array(k.buffer);var j=jsfeat.cache.get_buffer(n);var f=j.u8;jsfeat.imgproc.grayscale(k,f);var h=(255<<24);var r=n,d=0;while(--r>=0){d=f[r];o[r]=h|(d<<16)|(d<<8)|d}l.putImageData(v,0,0);jsfeat.cache.put_buffer(j)}this.interval=t;this.scale=Math.pow(2,1/(this.interval+1));this.next=(this.interval+1)|0;this.scale_to=(Math.log(Math.min(e.width/p,e.height/x))/Math.log(this.scale))|0;var q=document.createElement("canvas");q.width=e.width;q.height=e.height;var s=q.getContext("2d");var w=new Array((this.scale_to+this.next*2)*4);w[0]={width:e.width,height:e.height,data:e.getContext("2d").getImageData(0,0,e.width,e.height).data};var u,g;for(r=1;r<=this.interval;++r){u=(e.width/Math.pow(this.scale,r))|0;g=(e.height/Math.pow(this.scale,r))|0;s.drawImage(e,0,0,e.width,e.height,0,0,u,g);w[r*4]={width:u,height:g,data:s.getImageData(0,0,u,g).data}}for(r=this.next;r<this.scale_to+this.next*2;++r){u=w[r*4-this.next*4].width>>1;g=w[r*4-this.next*4].height>>1;s.drawImage(e,0,0,e.width,e.height,0,0,u,g);w[r*4]={width:u,height:g,data:s.getImageData(0,0,u,g).data}}for(r=this.next*2;r<this.scale_to+this.next*2;++r){u=w[r*4-this.next*4].width>>1;g=w[r*4-this.next*4].height>>1;s.drawImage(e,1,0,e.width-1,e.height,0,0,u-2,g);w[r*4+1]={width:u,height:g,data:s.getImageData(0,0,u,g).data};s.drawImage(e,0,1,e.width,e.height-1,0,0,u,g-2);w[r*4+2]={width:u,height:g,data:s.getImageData(0,0,u,g).data};s.drawImage(e,1,1,e.width-1,e.height-1,0,0,u-2,g-2);w[r*4+3]={width:u,height:g,data:s.getImageData(0,0,u,g).data}}return w},detect:function(z,H){var g=this.interval;var J=this.scale;var l=this.next;var h=this.scale_to;var X=0,W=0,V=0,S=0,O=0,N=0,Q=0,w=0,F=0,E=0,R=0,Z=0,I=0,Y=0,t=0,U=0,e=0;var B=0,T,M,A,D,C,K=true,m=true;var u=1,s=1;var r=[0,1,0,1];var o=[0,0,1,1];var G=[];var v=[],d=[0,0,0];var L=[0,0,0];var P=[0,0,0];for(X=0;X<h;X++){t=(X<<2);U=z[t+(l<<3)].width-(H.width>>2);e=z[t+(l<<3)].height-(H.height>>2);L[0]=z[t].width<<2;L[1]=z[t+(l<<2)].width<<2;L[2]=z[t+(l<<3)].width<<2;P[0]=(z[t].width<<4)-(U<<4);P[1]=(z[t+(l<<2)].width<<3)-(U<<3);P[2]=(z[t+(l<<3)].width<<2)-(U<<2);w=H.stage_classifier.length;for(W=0;W<w;W++){A=H.stage_classifier[W].feature;M=H.stage_classifier[W]._feature;F=H.stage_classifier[W].count;for(V=0;V<F;V++){D=M[V];C=A[V];E=C.size|0;for(Q=0;Q<E;Q++){D.px[Q]=(C.px[Q]<<2)+C.py[Q]*L[C.pz[Q]];D.pz[Q]=C.pz[Q];D.nx[Q]=(C.nx[Q]<<2)+C.ny[Q]*L[C.nz[Q]];D.nz[Q]=C.nz[Q]}}}v[0]=z[t].data;v[1]=z[t+(l<<2)].data;for(Q=0;Q<4;Q++){v[2]=z[t+(l<<3)+Q].data;d[0]=(r[Q]<<3)+o[Q]*(z[t].width<<3);d[1]=(r[Q]<<2)+o[Q]*(z[t+(l<<2)].width<<2);d[2]=0;for(N=0;N<e;N++){for(O=0;O<U;O++){B=0;K=true;w=H.stage_classifier.length;for(W=0;W<w;W++){B=0;T=H.stage_classifier[W].alpha;M=H.stage_classifier[W]._feature;F=H.stage_classifier[W].count;for(V=0;V<F;V++){D=M[V];Z=v[D.pz[0]][d[D.pz[0]]+D.px[0]];I=v[D.nz[0]][d[D.nz[0]]+D.nx[0]];if(Z<=I){B+=T[V<<1]}else{m=true;E=D.size;for(Y=0;Y<E;Y++){if(D.pz[Y]>=0){R=v[D.pz[Y]][d[D.pz[Y]]+D.px[Y]];if(R<Z){if(R<=I){m=false;break}Z=R}}if(D.nz[Y]>=0){S=v[D.nz[Y]][d[D.nz[Y]]+D.nx[Y]];if(S>I){if(Z<=S){m=false;break}I=S}}}B+=(m)?T[(V<<1)+1]:T[V<<1]}}if(B<H.stage_classifier[W].threshold){K=false;break}}if(K){G.push({x:(O*4+r[Q]*2)*u,y:(N*4+o[Q]*2)*s,width:H.width*u,height:H.height*s,neighbor:1,confidence:B})}d[0]+=16;d[1]+=8;d[2]+=4}d[0]+=P[0];d[1]+=P[1];d[2]+=P[2]}}u*=J;s*=J}return G},group_rectangles:function(g,l){if(typeof l==="undefined"){l=1}var y,v,q=g.length;var r=[];for(y=0;y<q;++y){r[y]={parent:-1,element:g[y],rank:0}}for(y=0;y<q;++y){if(!r[y].element){continue}var t=y;while(r[t].parent!=-1){t=r[t].parent}for(v=0;v<q;++v){if(y!=v&&r[v].element&&c(r[y].element,r[v].element)){var s=v;while(r[s].parent!=-1){s=r[s].parent}if(s!=t){if(r[t].rank>r[s].rank){r[s].parent=t}else{r[t].parent=s;if(r[t].rank==r[s].rank){r[s].rank++}t=s}var A,d=v;while(r[d].parent!=-1){A=d;d=r[d].parent;r[A].parent=t}d=y;while(r[d].parent!=-1){A=d;d=r[d].parent;r[A].parent=t}}}}}var w=[];var o=0;for(y=0;y<q;y++){v=-1;var e=y;if(r[e].element){while(r[e].parent!=-1){e=r[e].parent}if(r[e].rank>=0){r[e].rank=~o++}v=~r[e].rank}w[y]=v}var m=[];for(y=0;y<o+1;++y){m[y]={neighbors:0,x:0,y:0,width:0,height:0,confidence:0}}for(y=0;y<q;++y){var z=g[y];var k=w[y];if(m[k].neighbors==0){m[k].confidence=z.confidence}++m[k].neighbors;m[k].x+=z.x;m[k].y+=z.y;m[k].width+=z.width;m[k].height+=z.height;m[k].confidence=Math.max(m[k].confidence,z.confidence)}var h=[];for(y=0;y<o;++y){q=m[y].neighbors;if(q>=l){h.push({x:(m[y].x*2+q)/(2*q),y:(m[y].y*2+q)/(2*q),width:(m[y].width*2+q)/(2*q),height:(m[y].height*2+q)/(2*q),neighbors:m[y].neighbors,confidence:m[y].confidence})}}var p=[];q=h.length;for(y=0;y<q;++y){var z=h[y];var x=true;for(v=0;v<q;++v){var u=h[v];var f=(u.width*0.25+0.5)|0;if(y!=v&&z.x>=u.x-f&&z.y>=u.y-f&&z.x+z.width<=u.x+u.width+f&&z.y+z.height<=u.y+u.height+f&&(u.neighbors>Math.max(3,z.neighbors)||z.neighbors<3)){x=false;break}}if(x){p.push(z)}}return p}}})();a.bbf=b})(jsfeat);(function(a){var b={};if(typeof(exports)==="undefined"){b.exports=window}else{b.exports=exports}if(typeof(b.exports)!=="undefined"){b.exports.jsfeat=a}})(jsfeat);
var jsfeat=jsfeat||{REVISION:"ALPHA"};(function(o){var l=1.192092896e-7;var i=1e-37;var j=256,g=512,f=1024,t=2048,s=4096;var w=1,k=2,a=3,m=4;var v=new Int32Array([-1,1,4,-1,4,-1,-1,-1,8,-1,-1,-1,-1,-1,-1,-1,8]);var u=(function(){return function(x){return(x&65280)}})();var h=(function(){return function(x){return(x&255)}})();var b=(function(){return function(x){return v[(x&65280)>>8]}})();var d=1;var p=1;var e=2;var r=(function(){function x(z,y){this.size=((z+7)|0)&-8;if(typeof y==="undefined"){this.buffer=new ArrayBuffer(this.size)}else{this.buffer=y;this.size=y.length}this.u8=new Uint8Array(this.buffer);this.i32=new Int32Array(this.buffer);this.f32=new Float32Array(this.buffer);this.f64=new Float64Array(this.buffer)}return x})();var n=(function(){function x(B,z,A,y){this.type=u(A)|0;this.channel=h(A)|0;this.cols=B|0;this.rows=z|0;if(typeof y==="undefined"){this.buffer=new r((B*b(A)*h(A))*z)}else{this.buffer=y}this.data=this.type&j?this.buffer.u8:(this.type&g?this.buffer.i32:(this.type&f?this.buffer.f32:this.buffer.f64))}x.prototype.set_data_type=function(y){this.type=u(y)|0;this.channel=h(y)|0;delete this.data;delete this.buffer;this.buffer=new r((this.cols*b(y)*h(y))*this.rows);this.data=this.type&j?this.buffer.u8:(this.type&g?this.buffer.i32:(this.type&f?this.buffer.f32:this.buffer.f64))};x.prototype.set_data=function(z){var y=z.length;while(--y>=0){this.data[y]=z[y]}};return x})();var q=(function(){function x(y){this.levels=y|0;this.data=new Array(y);this.pyrdown=jsfeat.imgproc.pyrdown}x.prototype.allocate=function(y,A,B){var z=this.levels;while(--z>=0){this.data[z]=new n(y>>z,A>>z,B)}};x.prototype.build=function(B,A){if(typeof A==="undefined"){A=true}var D=2,z=B,y=this.data[0];if(!A){var C=B.cols*B.rows;while(--C>=0){y.data[C]=B.data[C]}}y=this.data[1];this.pyrdown(z,y);for(;D<this.levels;++D){z=y;y=this.data[D];this.pyrdown(z,y)}};return x})();var c=(function(){function x(z,C,A,B){if(typeof z==="undefined"){z=0}if(typeof C==="undefined"){C=0}if(typeof A==="undefined"){A=0}if(typeof B==="undefined"){B=0}this.x=z;this.y=C;this.score=A;this.level=B}return x})();o.U8_t=j;o.S32_t=g;o.F32_t=f;o.S64_t=t;o.F64_t=s;o.C1_t=w;o.C2_t=k;o.C3_t=a;o.C4_t=m;o.EPSILON=l;o.FLT_MIN=i;o.BOX_BLUR_NOSCALE=d;o.SVD_U_T=p;o.SVD_V_T=e;o.get_data_type=u;o.get_channel=h;o.get_data_type_size=b;o.data_t=r;o.matrix_t=n;o.pyramid_t=q;o.point2d_t=c})(jsfeat);(function(b){var a=(function(){var f=(function(){function g(h){this.next=null;this.data=new jsfeat.data_t(h);this.size=this.data.size;this.buffer=this.data.buffer;this.u8=this.data.u8;this.i32=this.data.i32;this.f32=this.data.f32;this.f64=this.data.f64}g.prototype.resize=function(h){delete this.data;this.data=new jsfeat.data_t(h);this.size=this.data.size;this.buffer=this.data.buffer;this.u8=this.data.u8;this.i32=this.data.i32;this.f32=this.data.f32;this.f64=this.data.f64};return g})();var e,c;var d=0;return{allocate:function(g,k){e=c=new f(k);for(var h=0;h<g;++h){var j=new f(k);c=c.next=j;d++}},get_buffer:function(g){var h=e;e=e.next;d--;if(g>h.size){h.resize(g)}return h},put_buffer:function(g){c=c.next=g;d++}}})();b.cache=a;a.allocate(30,640*4)})(jsfeat);(function(b){var a=(function(){var c=new Int32Array(48*2);return{get_gaussian_kernel:function(p,m,e,l){var f=0,j=0,o=0,n=0,d=0;var g=0;var h=jsfeat.cache.get_buffer(p<<2);var k=h.f32;if((p&1)==1&&p<=7&&m<=0){switch(p>>1){case 0:k[0]=1;g=1;break;case 1:k[0]=0.25,k[1]=0.5,k[2]=0.25;g=0.25+0.5+0.25;break;case 2:k[0]=0.0625,k[1]=0.25,k[2]=0.375,k[3]=0.25,k[4]=0.0625;g=0.0625+0.25+0.375+0.25+0.0625;break;case 3:k[0]=0.03125,k[1]=0.109375,k[2]=0.21875,k[3]=0.28125,k[4]=0.21875,k[5]=0.109375,k[6]=0.03125;g=0.03125+0.109375+0.21875+0.28125+0.21875+0.109375+0.03125;break}}else{n=m>0?m:((p-1)*0.5-1)*0.3+0.8;d=-0.5/(n*n);for(;f<p;++f){j=f-(p-1)*0.5;o=Math.exp(d*j*j);k[f]=o;g+=o}}if(l&jsfeat.U8_t){g=256/g;for(f=0;f<p;++f){e[f]=(k[f]*g+0.5)|0}}else{g=1/g;for(f=0;f<p;++f){e[f]=k[f]*g}}jsfeat.cache.put_buffer(h)},qsort:function(o,J,s,u){var D=7;var v,r,q,p;var C=0,j=0,G=0,B=0,z=0,A=0,e=0,y=0,E=0;var x=0,w=0,h=0,g=0,l=0,I=0,H=0,F=0,f=0;var k=c;if((s-J+1)<=1){return}k[0]=J;k[1]=s;while(C>=0){j=k[C<<1];G=k[(C<<1)+1];C--;for(;;){z=(G-j)+1;if(z<=D){for(e=j+1;e<=G;e++){for(y=e;y>j&&u(o[y],o[y-1]);y--){v=o[y];o[y]=o[y-1];o[y-1]=v}}break}else{f=0;x=j;h=G;l=j+(z>>1);if(z>40){E=z>>3;I=j,H=j+E,F=j+(E<<1);r=o[I],q=o[H],p=o[F];j=u(r,q)?(u(q,p)?H:(u(r,p)?F:I)):(u(p,q)?H:(u(r,p)?I:F));I=l-E,H=l,F=l+E;r=o[I],q=o[H],p=o[F];l=u(r,q)?(u(q,p)?H:(u(r,p)?F:I)):(u(p,q)?H:(u(r,p)?I:F));I=G-(E<<1),H=G-E,F=G;r=o[I],q=o[H],p=o[F];G=u(r,q)?(u(q,p)?H:(u(r,p)?F:I)):(u(p,q)?H:(u(r,p)?I:F))}I=j,H=l,F=G;r=o[I],q=o[H],p=o[F];l=u(r,q)?(u(q,p)?H:(u(r,p)?F:I)):(u(p,q)?H:(u(r,p)?I:F));if(l!=x){v=o[l];o[l]=o[x];o[x]=v;l=x}j=w=x+1;G=g=h;r=o[l];for(;;){while(j<=G&&!u(r,o[j])){if(!u(o[j],r)){if(j>w){v=o[w];o[w]=o[j];o[j]=v}f=1;w++}j++}while(j<=G&&!u(o[G],r)){if(!u(r,o[G])){if(G<g){v=o[g];o[g]=o[G];o[G]=v}f=1;g--}G--}if(j>G){break}v=o[j];o[j]=o[G];o[G]=v;f=1;j++;G--}if(f==0){j=x,G=h;for(e=j+1;e<=G;e++){for(y=e;y>j&&u(o[y],o[y-1]);y--){v=o[y];o[y]=o[y-1];o[y-1]=v}}break}z=Math.min((w-x),(j-w));A=(j-z)|0;for(B=0;B<z;++B,++A){v=o[x+B];o[x+B]=o[A];o[A]=v}z=Math.min((h-g),(g-G));A=(h-z+1)|0;for(B=0;B<z;++B,++A){v=o[j+B];o[j+B]=o[A];o[A]=v}z=(j-w);A=(g-G);if(z>1){if(A>1){if(z>A){++C;k[C<<1]=x;k[(C<<1)+1]=x+z-1;j=h-A+1,G=h}else{++C;k[C<<1]=h-A+1;k[(C<<1)+1]=h;j=x,G=x+z-1}}else{j=x,G=x+z-1}}else{if(A>1){j=h-A+1,G=h}else{break}}}}}},median:function(k,d,i){var e;var f=0,j=0,g=0,h=(d+i)>>1;for(;;){if(i<=d){return k[h]}if(i==(d+1)){if(k[d]>k[i]){e=k[d];k[d]=k[i];k[i]=e}return k[h]}f=((d+i)>>1);if(k[f]>k[i]){e=k[f];k[f]=k[i];k[i]=e}if(k[d]>k[i]){e=k[d];k[d]=k[i];k[i]=e}if(k[f]>k[d]){e=k[f];k[f]=k[d];k[d]=e}j=(d+1);e=k[f];k[f]=k[j];k[j]=e;g=i;for(;;){do{++j}while(k[d]>k[j]);do{--g}while(k[g]>k[d]);if(g<j){break}e=k[j];k[j]=k[g];k[g]=e}e=k[d];k[d]=k[g];k[g]=e;if(g<=h){d=j}else{if(g>=h){i=(g-1)}}}return 0}}})();b.math=a})(jsfeat);(function(b){var a=(function(){return{transpose:function(f,d){var l=0,h=0,k=d.rows,c=d.cols;var n=0,e=0,m=0;var o=d.data,g=f.data;for(;l<k;e+=1,n+=c,l++){m=e;for(h=0;h<c;m+=k,h++){g[m]=o[n+h]}}},multiply:function(l,n,m){var u=0,s=0,o=0;var r=0,t=0,q=0,w=0,g=0;var f=n.cols,e=n.rows,p=m.cols;var v=n.data,d=m.data,h=l.data;var c=0;for(;u<e;r+=f,u++){for(w=0,s=0;s<p;g++,w++,s++){q=w;t=r;c=0;for(o=0;o<f;t++,q+=p,o++){c+=v[t]*d[q]}h[g]=c}}},multiply_ABt:function(c,g,d){var p=0,n=0,m=0;var r=0,l=0,f=0,u=0;var e=g.cols,o=g.rows,q=d.rows;var v=g.data,t=d.data,h=c.data;var s=0;for(;p<o;r+=e,p++){for(f=0,n=0;n<q;u++,n++){l=r;s=0;for(m=0;m<e;l++,f++,m++){s+=v[l]*t[f]}h[u]=s}}},multiply_AtB:function(l,n,m){var u=0,s=0,o=0;var r=0,t=0,q=0,w=0,g=0;var f=n.cols,e=n.rows,p=m.cols;var v=n.data,d=m.data,h=l.data;var c=0;for(;u<f;r++,u++){for(w=0,s=0;s<p;g++,w++,s++){q=w;t=r;c=0;for(o=0;o<e;t+=f,q+=p,o++){c+=v[t]*d[q]}h[g]=c}}},multiply_AAt:function(d,h){var q=0,o=0,n=0;var c=0,r=0,m=0,g=0,e=0,u=0;var f=h.cols,p=h.rows;var t=h.data,l=d.data;var s=0;for(;q<p;c+=p+1,r=m,q++){e=c;u=c;g=r;for(o=q;o<p;e++,u+=p,o++){m=r;s=0;for(n=0;n<f;n++){s+=t[m++]*t[g++]}l[e]=s;l[u]=s}}},multiply_AtA:function(c,g){var r=0,p=0,n=0;var s=0,m=0,f=0,o=0,d=0,l=0;var e=g.cols,q=g.rows;var u=g.data,h=c.data;var t=0;for(;r<e;o+=e,r++){s=r;l=o+r;d=l;for(p=r;p<e;d++,l+=e,p++){m=s;f=p;t=0;for(n=0;n<q;m+=e,f+=e,n++){t+=u[m]*u[f]}h[d]=t;h[l]=t}}}}})();b.matmath=a})(jsfeat);(function(b){var a=(function(){var f=function(g,j,i,h){h=g[j];g[j]=g[i];g[i]=h};var d=function(h,g){h=Math.abs(h);g=Math.abs(g);if(h>g){g/=h;return h*Math.sqrt(1+g*g)}if(g>0){h/=g;return g*Math.sqrt(1+h*h)}return 0};var c=function(H,o,q,r,h,I){var C=jsfeat.EPSILON;var N=0,M=0,L=0,J=0,K=0,D=0,R=0,G=0;var u=0,v=I*I*30;var E=0,U=0,F=0,x=0,z=0,B=0,Q=0,T=0,w=0;var P=jsfeat.cache.get_buffer(I<<2);var S=jsfeat.cache.get_buffer(I<<2);var O=P.i32;var g=S.i32;if(r){for(;N<I;N++){L=N*h;for(M=0;M<I;M++){r[L+M]=0}r[L+N]=1}}for(L=0;L<I;L++){q[L]=H[(o+1)*L];if(L<I-1){for(J=L+1,E=Math.abs(H[o*L+J]),N=L+2;N<I;N++){U=Math.abs(H[o*L+N]);if(E<U){E=U,J=N}}O[L]=J}if(L>0){for(J=0,E=Math.abs(H[L]),N=1;N<L;N++){U=Math.abs(H[o*N+L]);if(E<U){E=U,J=N}}g[L]=J}}if(I>1){for(;u<v;u++){for(L=0,E=Math.abs(H[O[0]]),N=1;N<I-1;N++){U=Math.abs(H[o*N+O[N]]);if(E<U){E=U,L=N}}K=O[L];for(N=1;N<I;N++){U=Math.abs(H[o*g[N]+N]);if(E<U){E=U,L=g[N],K=N}}F=H[o*L+K];if(Math.abs(F)<=C){break}x=(q[K]-q[L])*0.5;z=Math.abs(x)+d(F,x);B=d(F,z);Q=z/B;B=F/B;z=(F/z)*F;if(x<0){B=-B,z=-z}H[o*L+K]=0;q[L]-=z;q[K]+=z;for(N=0;N<L;N++){R=(o*N+L);G=(o*N+K);T=H[R];w=H[G];H[R]=T*Q-w*B;H[G]=T*B+w*Q}for(N=(L+1);N<K;N++){R=(o*L+N);G=(o*N+K);T=H[R];w=H[G];H[R]=T*Q-w*B;H[G]=T*B+w*Q}N=K+1;R=(o*L+N);G=(o*K+N);for(;N<I;N++,R++,G++){T=H[R];w=H[G];H[R]=T*Q-w*B;H[G]=T*B+w*Q}if(r){R=h*L;G=h*K;for(N=0;N<I;N++,R++,G++){T=r[R];w=r[G];r[R]=T*Q-w*B;r[G]=T*B+w*Q}}for(M=0;M<2;M++){D=M==0?L:K;if(D<I-1){for(J=D+1,E=Math.abs(H[o*D+J]),N=D+2;N<I;N++){U=Math.abs(H[o*D+N]);if(E<U){E=U,J=N}}O[D]=J}if(D>0){for(J=0,E=Math.abs(H[D]),N=1;N<D;N++){U=Math.abs(H[o*N+D]);if(E<U){E=U,J=N}}g[D]=J}}}}for(L=0;L<I-1;L++){J=L;for(N=L+1;N<I;N++){if(q[J]<q[N]){J=N}}if(L!=J){f(q,J,L,E);if(r){for(N=0;N<I;N++){f(r,h*J+N,h*L+N,E)}}}}jsfeat.cache.put_buffer(P);jsfeat.cache.put_buffer(S)};var e=function(D,l,h,M,v,T,S,E){var C=jsfeat.EPSILON*10;var q=jsfeat.FLT_MIN;var X=0,V=0,U=0,A=0,u=Math.max(T,30);var K=0,J=0,R=0,Q=0,F=0;var Y=0,O=0,N=0;var H=0,G=0,x=0,I=0,w=0,L=0,aa=0,P=0,Z=0;var z=4660;var B=0,y=0,o=0;var r=jsfeat.cache.get_buffer(S<<3);var g=r.f64;for(;X<S;X++){for(U=0,x=0;U<T;U++){N=D[X*l+U];x+=N*N}g[X]=x;if(M){for(U=0;U<S;U++){M[X*v+U]=0}M[X*v+X]=1}}for(;A<u;A++){F=0;for(X=0;X<S-1;X++){for(V=X+1;V<S;V++){K=(X*l)|0,J=(V*l)|0;aa=g[X],P=0,Z=g[V];U=3;P+=D[K]*D[J];P+=D[K+1]*D[J+1];P+=D[K+2]*D[J+2];for(;U<T;U++){P+=D[K+U]*D[J+U]}if(Math.abs(P)<=C*Math.sqrt(aa*Z)){continue}P*=2;I=aa-Z,w=d(P,I);if(I<0){L=(w-I)*0.5;O=Math.sqrt(L/w);Y=(P/(w*O*2))}else{Y=Math.sqrt((w+I)/(w*2));O=(P/(w*Y*2));L=P*P*0.5/(w+I)}g[X]+=L;g[V]-=L;if((A&1)&&g[X]>0&&g[V]>0){U=3;H=Y*D[K]+O*D[J];G=-O*D[K]+Y*D[J];D[K]=H;D[J]=G;H=Y*D[K+1]+O*D[J+1];G=-O*D[K+1]+Y*D[J+1];D[K+1]=H;D[J+1]=G;H=Y*D[K+2]+O*D[J+2];G=-O*D[K+2]+Y*D[J+2];D[K+2]=H;D[J+2]=G;for(;U<T;U++){H=Y*D[K+U]+O*D[J+U];G=-O*D[K+U]+Y*D[J+U];D[K+U]=H;D[J+U]=G}}else{aa=Z=0;U=3;H=Y*D[K]+O*D[J];G=-O*D[K]+Y*D[J];D[K]=H;D[J]=G;aa+=H*H;Z+=G*G;H=Y*D[K+1]+O*D[J+1];G=-O*D[K+1]+Y*D[J+1];D[K+1]=H;D[J+1]=G;aa+=H*H;Z+=G*G;H=Y*D[K+2]+O*D[J+2];G=-O*D[K+2]+Y*D[J+2];D[K+2]=H;D[J+2]=G;aa+=H*H;Z+=G*G;for(;U<T;U++){H=Y*D[K+U]+O*D[J+U];G=-O*D[K+U]+Y*D[J+U];D[K+U]=H;D[J+U]=G;aa+=H*H;Z+=G*G}g[X]=aa;g[V]=Z}F=1;if(M){R=(X*v)|0,Q=(V*v)|0;U=3;H=Y*M[R]+O*M[Q];G=-O*M[R]+Y*M[Q];M[R]=H;M[Q]=G;H=Y*M[R+1]+O*M[Q+1];G=-O*M[R+1]+Y*M[Q+1];M[R+1]=H;M[Q+1]=G;H=Y*M[R+2]+O*M[Q+2];G=-O*M[R+2]+Y*M[Q+2];M[R+2]=H;M[Q+2]=G;for(;U<S;U++){H=Y*M[R+U]+O*M[Q+U];G=-O*M[R+U]+Y*M[Q+U];M[R+U]=H;M[Q+U]=G}}}}if(F==0){break}}for(X=0;X<S;X++){for(U=0,x=0;U<T;U++){N=D[X*l+U];x+=N*N}g[X]=Math.sqrt(x)}for(X=0;X<S-1;X++){V=X;for(U=X+1;U<S;U++){if(g[V]<g[U]){V=U}}if(X!=V){f(g,X,V,x);if(M){for(U=0;U<T;U++){f(D,X*l+U,V*l+U,N)}for(U=0;U<S;U++){f(M,X*v+U,V*v+U,N)}}}}for(X=0;X<S;X++){h[X]=g[X]}if(!M){jsfeat.cache.put_buffer(r);return}for(X=0;X<E;X++){x=X<S?g[X]:0;while(x<=q){y=(1/T);for(U=0;U<T;U++){z=(z*214013+2531011);B=(((z>>16)&32767)&256)!=0?y:-y;D[X*l+U]=B}for(A=0;A<2;A++){for(V=0;V<X;V++){x=0;for(U=0;U<T;U++){x+=D[X*l+U]*D[V*l+U]}o=0;for(U=0;U<T;U++){N=(D[X*l+U]-x*D[V*l+U]);D[X*l+U]=N;o+=Math.abs(N)}o=o?1/o:0;for(U=0;U<T;U++){D[X*l+U]*=o}}}x=0;for(U=0;U<T;U++){N=D[X*l+U];x+=N*N}x=Math.sqrt(x)}O=(1/x);for(U=0;U<T;U++){D[X*l+U]*=O}}jsfeat.cache.put_buffer(r)};return{lu_solve:function(l,g){var q=0,o=0,n=0,h=1,v=l.cols;var w=l.data,r=g.data;var x,m,u,y;for(q=0;q<v;q++){n=q;for(o=q+1;o<v;o++){if(Math.abs(w[o*v+q])>Math.abs(w[n*v+q])){n=o}}if(Math.abs(w[n*v+q])<jsfeat.EPSILON){return 0}if(n!=q){for(o=q;o<v;o++){f(w,q*v+o,n*v+o,x)}f(r,q,n,x);h=-h}u=-1/w[q*v+q];for(o=q+1;o<v;o++){m=w[o*v+q]*u;for(n=q+1;n<v;n++){w[o*v+n]+=m*w[q*v+n]}r[o]+=m*r[q]}w[q*v+q]=-u}for(q=v-1;q>=0;q--){y=r[q];for(n=q+1;n<v;n++){y-=w[q*v+n]*r[n]}r[q]=y*w[q*v+q]}return 1},cholesky_solve:function(h,g){var l=0,v=0,r=0,s=0,n=0,p=0,o=0;var u=h.cols;var t=h.data,q=g.data;var k,m;for(l=0;l<u;l++){m=1;s=(l*u);n=s;for(v=l;v<u;v++){k=t[(n+l)];for(r=0;r<l;r++){k-=t[(r*u+l)]*t[(n+r)]}if(v==l){t[(n+l)]=k;if(k==0){return 0}m=1/k}else{t[(s+v)]=k;t[(n+l)]=k*m}n=(n+u)}}s=0;for(p=0;p<u;p++){k=q[p];for(o=0;o<p;o++){k-=t[(s+o)]*q[o]}q[p]=k;s=(s+u)}s=0;for(p=0;p<u;p++){q[p]/=t[(s+p)];s=(s+u)}p=(u-1);for(;p>=0;p--){k=q[p];o=(p+1);s=(o*u);for(;o<u;o++){k-=t[(s+p)]*q[o];s=(s+u)}q[p]=k}return 1},svd_decompose:function(t,k,p,l,o){if(typeof o==="undefined"){o=0}var r=0,z=0,x=0,g=t.rows,D=t.cols,w=g,v=D;var s=t.type|jsfeat.C1_t;if(w<v){r=1;z=w;w=v;v=z}var q=jsfeat.cache.get_buffer((w*w)<<3);var h=jsfeat.cache.get_buffer(v<<3);var C=jsfeat.cache.get_buffer((v*v)<<3);var u=new jsfeat.matrix_t(w,w,s,q.data);var B=new jsfeat.matrix_t(1,v,s,h.data);var y=new jsfeat.matrix_t(v,v,s,C.data);if(r==0){jsfeat.matmath.transpose(u,t)}else{for(z=0;z<D*g;z++){u.data[z]=t.data[z]}for(;z<v*w;z++){u.data[z]=0}}e(u.data,w,B.data,y.data,v,w,v,w);if(k){for(z=0;z<v;z++){k.data[z]=B.data[z]}for(;z<D;z++){k.data[z]=0}}if(r==0){if(p&&(o&jsfeat.SVD_U_T)){z=w*w;while(--z>=0){p.data[z]=u.data[z]}}else{if(p){jsfeat.matmath.transpose(p,u)}}if(l&&(o&jsfeat.SVD_V_T)){z=v*v;while(--z>=0){l.data[z]=y.data[z]}}else{if(l){jsfeat.matmath.transpose(l,y)}}}else{if(p&&(o&jsfeat.SVD_U_T)){z=v*v;while(--z>=0){p.data[z]=y.data[z]}}else{if(p){jsfeat.matmath.transpose(p,y)}}if(l&&(o&jsfeat.SVD_V_T)){z=w*w;while(--z>=0){l.data[z]=u.data[z]}}else{if(l){jsfeat.matmath.transpose(l,u)}}}jsfeat.cache.put_buffer(q);jsfeat.cache.put_buffer(h);jsfeat.cache.put_buffer(C)},svd_solve:function(v,l,s){var E=0,C=0,z=0;var w=0,u=0;var o=v.rows,p=v.cols;var h=0,I=0,x=0;var r=v.type|jsfeat.C1_t;var F=jsfeat.cache.get_buffer((o*o)<<3);var m=jsfeat.cache.get_buffer(p<<3);var H=jsfeat.cache.get_buffer((p*p)<<3);var t=new jsfeat.matrix_t(o,o,r,F.data);var G=new jsfeat.matrix_t(1,p,r,m.data);var D=new jsfeat.matrix_t(p,p,r,H.data);var n=s.data,y=t.data,q=G.data,g=D.data;this.svd_decompose(v,G,t,D,0);x=jsfeat.EPSILON*q[0]*p;for(;E<p;E++,u+=p){I=0;for(C=0;C<p;C++){if(q[C]>x){for(z=0,h=0,w=0;z<o;z++,w+=p){h+=y[w+C]*n[z]}I+=h*g[u+C]/q[C]}}l.data[E]=I}jsfeat.cache.put_buffer(F);jsfeat.cache.put_buffer(m);jsfeat.cache.put_buffer(H)},svd_invert:function(E,t){var C=0,z=0,y=0;var v=0,s=0,h=0;var n=t.rows,o=t.cols;var l=0,w=0;var q=t.type|jsfeat.C1_t;var D=jsfeat.cache.get_buffer((n*n)<<3);var m=jsfeat.cache.get_buffer(o<<3);var G=jsfeat.cache.get_buffer((o*o)<<3);var u=new jsfeat.matrix_t(n,n,q,D.data);var F=new jsfeat.matrix_t(1,o,q,m.data);var B=new jsfeat.matrix_t(o,o,q,G.data);var r=E.data,x=u.data,p=F.data,g=B.data;this.svd_decompose(t,F,u,B,0);w=jsfeat.EPSILON*p[0]*o;for(;C<o;C++,s+=o){for(z=0,v=0;z<n;z++,h++){for(y=0,l=0;y<o;y++,v++){if(p[y]>w){l+=g[s+y]*x[v]/p[y]}}r[h]=l}}jsfeat.cache.put_buffer(D);jsfeat.cache.put_buffer(m);jsfeat.cache.put_buffer(G)},eigenVV:function(j,p,r){var k=j.cols,m=k*k;var g=j.type|jsfeat.C1_t;var o=jsfeat.cache.get_buffer((k*k)<<3);var h=jsfeat.cache.get_buffer(k<<3);var l=new jsfeat.matrix_t(k,k,g,o.data);var q=new jsfeat.matrix_t(1,k,g,h.data);while(--m>=0){l.data[m]=j.data[m]}c(l.data,k,q.data,p?p.data:null,k,k);if(r){while(--k>=0){r.data[k]=q.data[k]}}jsfeat.cache.put_buffer(o);jsfeat.cache.put_buffer(h)}}})();b.linalg=a})(jsfeat);(function(b){var a=(function(){return{affine_3point_transform:function(l,h,o,f,m,g,n,d,j,e,k,c,i){},perspective_4point_transform:function(B,w,ac,s,Z,v,ab,r,W,u,aa,p,U,t,Y,m,S){var J=w;var I=u;var H=ab;var G=J*I*H;var F=Y;var E=J*F;var D=I*E;var C=aa;var o=J*C;var l=v;var h=ac;var f=t;var d=h*f;var au=d*l;var T=f*l*C;var R=f*H;var O=f*C;var N=I*H;var M=F*I;var L=F*l;var K=C*l;var A=1/(R-O-N+M-L+K);var y=J*f;var x=h*l;var q=H*J;var n=F*q;var k=h*I;var g=d*C;var c=h*C*l;var V=H*F*I;var Q=F*h;var at=-(D-G+o*l-l*E-d*I+au-T+R*I)*A;var ar=(G-D-y*H+y*C+au-I*x+L*I-T)*A;var aq=J;var ap=(-C*E+n+k*H-d*H+g-c+L*C-V)*A;var ao=(-n+q*C-Q*I+g-c+Q*l+V-R*C)*A;var am=h;var ak=(-o+q+k-x+O-R-M+L)*A;var ai=(-E+o+d-k+L-K-R+N)*A;J=s;I=p;H=W;G=J*I*H;F=S;E=J*F;D=I*E;C=U;o=J*C;l=r;h=Z;f=m;d=h*f;au=d*l;T=f*l*C;R=f*H;O=f*C;N=I*H;M=F*I;L=F*l;K=C*l;A=1/(R-O-N+M-L+K);y=J*f;x=h*l;q=H*J;n=F*q;k=h*I;g=d*C;c=h*C*l;V=H*F*I;Q=F*h;var an=-(D-G+o*l-l*E-d*I+au-T+R*I)*A;var al=(G-D-y*H+y*C+au-I*x+L*I-T)*A;var aj=J;var ah=(-C*E+n+k*H-d*H+g-c+L*C-V)*A;var ag=(-n+q*C-Q*I+g-c+Q*l+V-R*C)*A;var af=h;var ae=(-o+q+k-x+O-R-M+L)*A;var ad=(-E+o+d-k+L-K-R+N)*A;I=ao-ai*am;H=at*ao;G=at*am;E=ap*ar;D=aq*ap;o=ar*ak;var j=aq*ak;f=1/(H-G*ai-E+D*ai+o*am-j*ao);au=-ap+am*ak;var P=-ap*ai+ao*ak;K=-ar+aq*ai;var z=at-j;x=at*ai-o;q=-ar*am+aq*ao;var i=G-D;var e=H-E;c=I*f;var av=K*f;var X=q*f;B[0]=an*c+al*(au*f)-aj*(P*f);B[1]=an*av+al*(z*f)-aj*(x*f);B[2]=-an*X-al*(i*f)+aj*(e*f);B[3]=ah*c+ag*(au*f)-af*(P*f);B[4]=ah*av+ag*(z*f)-af*(x*f);B[5]=-ah*X-ag*(i*f)+af*(e*f);B[6]=ae*c+ad*(au*f)-P*f;B[7]=ae*av+ad*(z*f)-x*f;B[8]=-ae*X-ad*(i*f)+e*f},invert_affine_transform:function(c,k){var i=c[0],h=c[1],g=c[2];var f=c[3],e=c[4],d=c[5];var j=1/(i*e-h*f);k[0]=j*e;k[1]=j*-h;k[2]=j*(h*d-g*e);k[3]=j*-f;k[4]=j*i;k[5]=j*(g*f-i*d)},invert_perspective_transform:function(c,k){var i=c[0],h=c[1],g=c[2];var f=c[3],e=c[4],d=c[5];var n=c[6],m=c[7],l=c[8];var j=1/(i*(e*l-d*m)-h*(f*l-d*n)+g*(f*m-e*n));k[0]=j*(e*l-d*m);k[1]=j*(g*m-h*l);k[2]=j*(h*d-g*e);k[3]=j*(d*n-f*l);k[4]=j*(i*l-g*n);k[5]=j*(g*f-i*d);k[6]=j*(f*m-e*n);k[7]=j*(h*n-i*m);k[8]=j*(i*e-h*f)}}})();b.transform=a})(jsfeat);(function(b){var a=(function(){var c=function(q,R,O,p){var z=[],r=0;var y=q.channel,v=q.cols,J=q.rows;var P=q.data,m=R.data;var I=v/O,H=J/p;var n=(I*H*65536)|0;var x=0,u=0,C=0,A=0,t=0,s=0,G=0,F=0,D=0,B=0;var Q=0,N=0,K=0,o=0,M=0,E=0;var l=jsfeat.cache.get_buffer((O*y)<<2);var g=jsfeat.cache.get_buffer((O*y)<<2);var L=l.i32;var j=g.i32;for(;x<O;x++){D=x*I,B=D+I;t=(D+1-0.000001)|0,s=B|0;t=Math.min(t,v-1);s=Math.min(s,v-1);if(t>D){z[r++]={si:((t-1)*y)|0,di:(x*y)|0,alpha:((t-D)*256)|0}}for(C=t;C<s;C++){z[r++]={si:(C*y)|0,di:(x*y)|0,alpha:256}}if(B-s>0.001){z[r++]={si:(s*y)|0,di:(x*y)|0,alpha:((B-s)*256)|0}}}for(x=0;x<O*y;x++){L[x]=j[x]=0}u=0;for(A=0;A<J;A++){Q=v*A;for(F=0;F<r;F++){K=z[F].di;o=z[F].alpha;t=z[F].si;for(G=0;G<y;G++){L[K+G]+=P[Q+t+G]*o}}if((u+1)*H<=A+1||A==J-1){M=(Math.max(A+1-(u+1)*H,0)*256)|0;E=256-M;N=O*u;if(M<=0){for(x=0;x<O*y;x++){m[N+x]=Math.min(Math.max((j[x]+L[x]*256)/n,0),255);j[x]=L[x]=0}}else{for(x=0;x<O*y;x++){m[N+x]=Math.min(Math.max((j[x]+L[x]*E)/n,0),255);j[x]=L[x]*M;L[x]=0}}u++}else{for(x=0;x<O*y;x++){j[x]+=L[x]*256;L[x]=0}}}jsfeat.cache.put_buffer(g);jsfeat.cache.put_buffer(l)};var f=function(p,R,N,o){var y=[],q=0;var x=p.channel,u=p.cols,I=p.rows;var O=p.data,m=R.data;var H=u/N,G=I/o;var Q=1/(H*G);var v=0,t=0,B=0,z=0,s=0,r=0,F=0,E=0,C=0,A=0;var P=0,M=0,J=0,n=0,L=0,D=0;var l=jsfeat.cache.get_buffer((N*x)<<2);var g=jsfeat.cache.get_buffer((N*x)<<2);var K=l.f32;var j=g.f32;for(;v<N;v++){C=v*H,A=C+H;s=(C+1-0.000001)|0,r=A|0;s=Math.min(s,u-1);r=Math.min(r,u-1);if(s>C){y[q++]={si:((s-1)*x)|0,di:(v*x)|0,alpha:(s-C)*Q}}for(B=s;B<r;B++){y[q++]={si:(B*x)|0,di:(v*x)|0,alpha:Q}}if(A-r>0.001){y[q++]={si:(r*x)|0,di:(v*x)|0,alpha:(A-r)*Q}}}for(v=0;v<N*x;v++){K[v]=j[v]=0}t=0;for(z=0;z<I;z++){P=u*z;for(E=0;E<q;E++){J=y[E].di;n=y[E].alpha;s=y[E].si;for(F=0;F<x;F++){K[J+F]+=O[P+s+F]*n}}if((t+1)*G<=z+1||z==I-1){L=Math.max(z+1-(t+1)*G,0);D=1-L;M=N*t;if(Math.abs(L)<0.001){for(v=0;v<N*x;v++){m[M+v]=j[v]+K[v];j[v]=K[v]=0}}else{for(v=0;v<N*x;v++){m[M+v]=j[v]+K[v]*D;j[v]=K[v]*L;K[v]=0}}t++}else{for(v=0;v<N*x;v++){j[v]+=K[v];K[v]=0}}}jsfeat.cache.put_buffer(g);jsfeat.cache.put_buffer(l)};var e=function(D,F,m,s,B,t,g,n){var z=0,y=0,x=0,A=0,u=0,l=0,G=0,E=0,C=0,v=t[0],r=0;var q=s<<1,p=s*3,o=s<<2;for(;z<B;++z){l=F[A];for(y=0;y<n;++y){D[y]=l}for(y=0;y<=s-2;y+=2){D[y+n]=F[A+y];D[y+n+1]=F[A+y+1]}for(;y<s;++y){D[y+n]=F[A+y]}l=F[A+s-1];for(y=s;y<n+s;++y){D[y+n]=l}for(y=0;y<=s-4;y+=4){l=D[y]*v,G=D[y+1]*v,E=D[y+2]*v,C=D[y+3]*v;for(x=1;x<g;++x){r=t[x];l+=D[x+y]*r;G+=D[x+y+1]*r;E+=D[x+y+2]*r;C+=D[x+y+3]*r}m[u+y]=l>>8;m[u+y+1]=G>>8;m[u+y+2]=E>>8;m[u+y+3]=C>>8}for(;y<s;++y){l=D[y]*v;for(x=1;x<g;++x){l+=D[x+y]*t[x]}m[u+y]=l>>8}A+=s;u+=s}for(z=0;z<s;++z){l=m[z];for(y=0;y<n;++y){D[y]=l}x=z;for(y=0;y<=B-2;y+=2,x+=q){D[y+n]=m[x];D[y+n+1]=m[x+s]}for(;y<B;++y,x+=s){D[y+n]=m[x]}l=m[(B-1)*s+z];for(y=B;y<n+B;++y){D[y+n]=l}u=z;for(y=0;y<=B-4;y+=4,u+=o){l=D[y]*v,G=D[y+1]*v,E=D[y+2]*v,C=D[y+3]*v;for(x=1;x<g;++x){r=t[x];l+=D[x+y]*r;G+=D[x+y+1]*r;E+=D[x+y+2]*r;C+=D[x+y+3]*r}m[u]=l>>8;m[u+s]=G>>8;m[u+q]=E>>8;m[u+p]=C>>8}for(;y<B;++y,u+=s){l=D[y]*v;for(x=1;x<g;++x){l+=D[x+y]*t[x]}m[u]=l>>8}}};var d=function(D,F,m,s,B,t,g,n){var z=0,y=0,x=0,A=0,u=0,l=0,G=0,E=0,C=0,v=t[0],r=0;var q=s<<1,p=s*3,o=s<<2;for(;z<B;++z){l=F[A];for(y=0;y<n;++y){D[y]=l}for(y=0;y<=s-2;y+=2){D[y+n]=F[A+y];D[y+n+1]=F[A+y+1]}for(;y<s;++y){D[y+n]=F[A+y]}l=F[A+s-1];for(y=s;y<n+s;++y){D[y+n]=l}for(y=0;y<=s-4;y+=4){l=D[y]*v,G=D[y+1]*v,E=D[y+2]*v,C=D[y+3]*v;for(x=1;x<g;++x){r=t[x];l+=D[x+y]*r;G+=D[x+y+1]*r;E+=D[x+y+2]*r;C+=D[x+y+3]*r}m[u+y]=l;m[u+y+1]=G;m[u+y+2]=E;m[u+y+3]=C}for(;y<s;++y){l=D[y]*v;for(x=1;x<g;++x){l+=D[x+y]*t[x]}m[u+y]=l}A+=s;u+=s}for(z=0;z<s;++z){l=m[z];for(y=0;y<n;++y){D[y]=l}x=z;for(y=0;y<=B-2;y+=2,x+=q){D[y+n]=m[x];D[y+n+1]=m[x+s]}for(;y<B;++y,x+=s){D[y+n]=m[x]}l=m[(B-1)*s+z];for(y=B;y<n+B;++y){D[y+n]=l}u=z;for(y=0;y<=B-4;y+=4,u+=o){l=D[y]*v,G=D[y+1]*v,E=D[y+2]*v,C=D[y+3]*v;for(x=1;x<g;++x){r=t[x];l+=D[x+y]*r;G+=D[x+y+1]*r;E+=D[x+y+2]*r;C+=D[x+y+3]*r}m[u]=l;m[u+s]=G;m[u+q]=E;m[u+p]=C}for(;y<B;++y,u+=s){l=D[y]*v;for(x=1;x<g;++x){l+=D[x+y]*t[x]}m[u]=l}}};return{grayscale:function(g,p){var k=g.length|0,q=(k-16)|0;var m=0;var o=4899,h=9617,l=1868;for(var n=0;n<=q;n+=16,m+=4){p[m]=(g[n]*o+g[n+1]*h+g[n+2]*l+8192)>>14;p[m+1]=(g[n+4]*o+g[n+5]*h+g[n+6]*l+8192)>>14;p[m+2]=(g[n+8]*o+g[n+9]*h+g[n+10]*l+8192)>>14;p[m+3]=(g[n+12]*o+g[n+13]*h+g[n+14]*l+8192)>>14}for(;n<k;n+=4,++m){p[m]=(g[n]*o+g[n+1]*h+g[n+2]*l+8192)>>14}},resample:function(l,m,i,k){var j=l.rows,g=l.cols;if(j>k&&g>i){if(l.type&jsfeat.U8_t&&m.type&jsfeat.U8_t&&j*g/(k*i)<256){c(l,m,i,k)}else{f(l,m,i,k)}}},box_blur_gray:function(s,K,n,l){if(typeof l==="undefined"){l=0}var A=s.cols,F=s.rows,t=F<<1,z=A<<1;var E=0,v=0,u=0,m=0;var C=((n<<1)+1)|0;var p=(n+1)|0,I=(p+1)|0;var q=8192;var J=l&jsfeat.BOX_BLUR_NOSCALE?1:(16384/(C*C)+0.5)|0;var D=jsfeat.cache.get_buffer((A*F)<<2);var j=0,H=0,o=0,r=0,k=0;var G=D.i32;var g=s.data;var B=0;for(u=0;u<F;++u){H=u;j=p*g[o];for(E=(o+1)|0,m=(o+n)|0;E<=m;++E){j+=g[E]}r=(o+p)|0;k=o;B=g[k];for(v=0;v<n;++v,H+=F){G[H]=j;j+=g[r]-B;r++}for(;v<A-I;v+=2,H+=t){G[H]=j;j+=g[r]-g[k];G[H+F]=j;j+=g[r+1]-g[k+1];r+=2;k+=2}for(;v<A-p;++v,H+=F){G[H]=j;j+=g[r]-g[k];r++;k++}B=g[r-1];for(;v<A;++v,H+=F){G[H]=j;j+=B-g[k];k++}o+=A}o=0;g=K.data;if(J==1){for(u=0;u<A;++u){H=u;j=p*G[o];for(E=(o+1)|0,m=(o+n)|0;E<=m;++E){j+=G[E]}r=o+p;k=o;B=G[k];for(v=0;v<n;++v,H+=A){g[H]=j;j+=G[r]-B;r++}for(;v<F-I;v+=2,H+=z){g[H]=j;j+=G[r]-G[k];g[H+A]=j;j+=G[r+1]-G[k+1];r+=2;k+=2}for(;v<F-p;++v,H+=A){g[H]=j;j+=G[r]-G[k];r++;k++}B=G[r-1];for(;v<F;++v,H+=A){g[H]=j;j+=B-G[k];k++}o+=F}}else{for(u=0;u<A;++u){H=u;j=p*G[o];for(E=(o+1)|0,m=(o+n)|0;E<=m;++E){j+=G[E]}r=o+p;k=o;B=G[k];for(v=0;v<n;++v,H+=A){g[H]=(j*J+q)>>14;j+=G[r]-B;r++}for(;v<F-I;v+=2,H+=z){g[H]=(j*J+q)>>14;j+=G[r]-G[k];g[H+A]=(j*J+q)>>14;j+=G[r+1]-G[k+1];r+=2;k+=2}for(;v<F-p;++v,H+=A){g[H]=(j*J+q)>>14;j+=G[r]-G[k];r++;k++}B=G[r-1];for(;v<F;++v,H+=A){g[H]=(j*J+q)>>14;j+=B-G[k];k++}o+=F}}jsfeat.cache.put_buffer(D)},gaussian_blur:function(g,s,r,v){if(typeof v==="undefined"){v=0}if(typeof r==="undefined"){r=0}r=r==0?(Math.max(1,(4*v+1-1e-8))*2+1)|0:r;var x=r>>1;var t=g.cols,p=g.rows;var u=g.type,n=u&jsfeat.U8_t;var m=g.data,j=s.data;var k,i,q=(r+Math.max(p,t))|0;var l=jsfeat.cache.get_buffer(q<<2);var o=jsfeat.cache.get_buffer(r<<2);if(n){k=l.u8;i=o.i32}else{if(u&jsfeat.S32_t){k=l.i32;i=o.f32}else{k=l.f32;i=o.f32}}jsfeat.math.get_gaussian_kernel(r,v,i,u);if(n){e(k,m,j,t,p,i,r,x)}else{d(k,m,j,t,p,i,r,x)}jsfeat.cache.put_buffer(l);jsfeat.cache.put_buffer(o)},pyrdown:function(k,A,s,r){if(typeof s==="undefined"){s=0}if(typeof r==="undefined"){r=0}var q=k.cols,t=k.rows;var p=q>>1,l=t>>1;var B=p-(s<<1),u=l-(r<<1);var o=0,n=0,g=s+r*q,m=0,v=0,i=0;var z=k.data,j=A.data;for(n=0;n<u;++n){m=g;i=v;for(o=0;o<=B-2;o+=2,i+=2,m+=4){j[i]=(z[m]+z[m+1]+z[m+q]+z[m+q+1]+2)>>2;j[i+1]=(z[m+2]+z[m+3]+z[m+q+2]+z[m+q+3]+2)>>2}for(;o<B;++o,++i,m+=2){j[i]=(z[m]+z[m+1]+z[m+q]+z[m+q+1]+2)>>2}g+=q<<1;v+=p}},scharr_derivatives:function(i,F){var o=i.cols,r=i.rows;var G=o<<1,n=0,l=0,t=0,D,C,B,A,z,v;var u=0,s=0,q=0,g=0;var m,k;var E=i.data;var j=jsfeat.cache.get_buffer((o+2)<<2);var p=jsfeat.cache.get_buffer((o+2)<<2);if(i.type&jsfeat.U8_t||i.type&jsfeat.S32_t){m=j.i32;k=p.i32}else{m=j.f32;k=p.f32}for(;l<r;++l,s+=o){u=((l>0?l-1:1)*o)|0;q=((l<r-1?l+1:r-2)*o)|0;g=(l*G)|0;for(n=0,t=1;n<=o-2;n+=2,t+=2){D=E[u+n],C=E[q+n];m[t]=((D+C)*3+(E[s+n])*10);k[t]=(C-D);D=E[u+n+1],C=E[q+n+1];m[t+1]=((D+C)*3+(E[s+n+1])*10);k[t+1]=(C-D)}for(;n<o;++n,++t){D=E[u+n],C=E[q+n];m[t]=((D+C)*3+(E[s+n])*10);k[t]=(C-D)}n=(o+1)|0;m[0]=m[1];m[n]=m[o];k[0]=k[1];k[n]=k[o];for(n=0;n<=o-4;n+=4){D=k[n+2],C=k[n+1],B=k[n+3],A=k[n+4],z=m[n+2],v=m[n+3];F[g++]=(z-m[n]);F[g++]=((D+k[n])*3+C*10);F[g++]=(v-m[n+1]);F[g++]=((B+C)*3+D*10);F[g++]=((m[n+4]-z));F[g++]=(((A+D)*3+B*10));F[g++]=((m[n+5]-v));F[g++]=(((k[n+5]+B)*3+A*10))}for(;n<o;++n){F[g++]=((m[n+2]-m[n]));F[g++]=(((k[n+2]+k[n])*3+k[n+1]*10))}}jsfeat.cache.put_buffer(j);jsfeat.cache.put_buffer(p)},sobel_derivatives:function(i,F){var o=i.cols,r=i.rows;var G=o<<1,n=0,l=0,t=0,D,C,B,A,z,v;var u=0,s=0,q=0,g=0;var m,k;var E=i.data;var j=jsfeat.cache.get_buffer((o+2)<<2);var p=jsfeat.cache.get_buffer((o+2)<<2);if(i.type&jsfeat.U8_t||i.type&jsfeat.S32_t){m=j.i32;k=p.i32}else{m=j.f32;k=p.f32}for(;l<r;++l,s+=o){u=((l>0?l-1:1)*o)|0;q=((l<r-1?l+1:r-2)*o)|0;g=(l*G)|0;for(n=0,t=1;n<=o-2;n+=2,t+=2){D=E[u+n],C=E[q+n];m[t]=((D+C)+(E[s+n]*2));k[t]=(C-D);D=E[u+n+1],C=E[q+n+1];m[t+1]=((D+C)+(E[s+n+1]*2));k[t+1]=(C-D)}for(;n<o;++n,++t){D=E[u+n],C=E[q+n];m[t]=((D+C)+(E[s+n]*2));k[t]=(C-D)}n=(o+1)|0;m[0]=m[1];m[n]=m[o];k[0]=k[1];k[n]=k[o];for(n=0;n<=o-4;n+=4){D=k[n+2],C=k[n+1],B=k[n+3],A=k[n+4],z=m[n+2],v=m[n+3];F[g++]=(z-m[n]);F[g++]=(D+k[n]+C*2);F[g++]=(v-m[n+1]);F[g++]=(B+C+D*2);F[g++]=(m[n+4]-z);F[g++]=(A+D+B*2);F[g++]=(m[n+5]-v);F[g++]=(k[n+5]+B+A*2)}for(;n<o;++n){F[g++]=(m[n+2]-m[n]);F[g++]=(k[n+2]+k[n]+k[n+1]*2)}}jsfeat.cache.put_buffer(j);jsfeat.cache.put_buffer(p)},compute_integral_image:function(g,l,y,u){var t=g.cols|0,w=g.rows|0,o=g.data;var r=(t+1)|0;var B=0,z=0,h=0,x=0,q=0,n=0,A=0,m=0;if(l&&y){for(;q<r;++q){l[q]=0,y[q]=0}h=(r+1)|0,x=1;for(q=0,m=0;q<w;++q,++h,++x){B=z=0;for(n=0;n<=t-2;n+=2,m+=2,h+=2,x+=2){A=o[m];B+=A,z+=A*A;l[h]=l[x]+B;y[h]=y[x]+z;A=o[m+1];B+=A,z+=A*A;l[h+1]=l[x+1]+B;y[h+1]=y[x+1]+z}for(;n<t;++n,++m,++h,++x){A=o[m];B+=A,z+=A*A;l[h]=l[x]+B;y[h]=y[x]+z}}}else{if(l){for(;q<r;++q){l[q]=0}h=(r+1)|0,x=1;for(q=0,m=0;q<w;++q,++h,++x){B=0;for(n=0;n<=t-2;n+=2,m+=2,h+=2,x+=2){B+=o[m];l[h]=l[x]+B;B+=o[m+1];l[h+1]=l[x+1]+B}for(;n<t;++n,++m,++h,++x){B+=o[m];l[h]=l[x]+B}}}else{if(y){for(;q<r;++q){y[q]=0}h=(r+1)|0,x=1;for(q=0,m=0;q<w;++q,++h,++x){z=0;for(n=0;n<=t-2;n+=2,m+=2,h+=2,x+=2){A=o[m];z+=A*A;y[h]=y[x]+z;A=o[m+1];z+=A*A;y[h+1]=y[x+1]+z}for(;n<t;++n,++m,++h,++x){A=o[m];z+=A*A;y[h]=y[x]+z}}}}}if(u){for(q=0;q<r;++q){u[q]=0}h=(r+1)|0,x=0;for(q=0,m=0;q<w;++q,++h,++x){for(n=0;n<=t-2;n+=2,m+=2,h+=2,x+=2){u[h]=o[m]+u[x];u[h+1]=o[m+1]+u[x+1]}for(;n<t;++n,++m,++h,++x){u[h]=o[m]+u[x]}}h=(r+t)|0,x=t;for(q=0;q<w;++q,h+=r,x+=r){u[h]+=u[x]}for(n=t-1;n>0;--n){h=n+w*r,x=h-r;for(q=w;q>0;--q,h-=r,x-=r){u[h]+=u[x]+u[x+1]}}}},equalize_histogram:function(j,r){var s=j.cols,q=j.rows,o=j.data,l=r.data,t=s*q;var p=0,n=0,k,g;var m=jsfeat.cache.get_buffer(256<<2);k=m.i32;for(;p<256;++p){k[p]=0}for(p=0;p<t;++p){++k[o[p]]}n=k[0];for(p=1;p<256;++p){n=k[p]+=n}g=255/t;for(p=0;p<t;++p){l[p]=(k[o[p]]*g+0.5)|0}jsfeat.cache.put_buffer(m)},canny:function(t,U,D,k){var B=t.cols,K=t.rows,R=t.data,n=U.data;var J=0,G=0,p=0,z=B<<1,Q=0,I=0,M=0,v=0,u=0,C=0;var g=0,T=0;var o=jsfeat.cache.get_buffer((K*z)<<2);var l=jsfeat.cache.get_buffer((3*(B+2))<<2);var m=jsfeat.cache.get_buffer(((K+2)*(B+2))<<2);var r=jsfeat.cache.get_buffer((K*B)<<2);var P=l.i32;var S=m.i32;var q=r.i32;var F=o.i32;var O=1,N=(B+2+1)|0,L=(2*(B+2)+1)|0,A=(B+2)|0,H=(A+1)|0,E=0;this.sobel_derivatives(t,F);if(D>k){J=D;D=k;k=J}J=(3*(B+2))|0;while(--J>=0){P[J]=0}J=((K+2)*(B+2))|0;while(--J>=0){S[J]=0}for(;G<B;++G,p+=2){v=F[p],u=F[p+1];P[N+G]=((v^(v>>31))-(v>>31))+((u^(u>>31))-(u>>31))}for(J=1;J<=K;++J,p+=z){if(J==K){G=L+B;while(--G>=L){P[G]=0}}else{for(G=0;G<B;G++){v=F[p+(G<<1)],u=F[p+(G<<1)+1];P[L+G]=((v^(v>>31))-(v>>31))+((u^(u>>31))-(u>>31))}}Q=(p-z)|0;S[H-1]=0;I=0;for(G=0;G<B;++G,Q+=2){M=P[N+G];if(M>D){v=F[Q];u=F[Q+1];C=v^u;v=((v^(v>>31))-(v>>31))|0;u=((u^(u>>31))-(u>>31))|0;g=v*13573;T=g+((v+v)<<15);u<<=15;if(u<g){if(M>P[N+G-1]&&M>=P[N+G+1]){if(M>k&&!I&&S[H+G-A]!=2){S[H+G]=2;I=1;q[E++]=H+G}else{S[H+G]=1}continue}}else{if(u>T){if(M>P[O+G]&&M>=P[L+G]){if(M>k&&!I&&S[H+G-A]!=2){S[H+G]=2;I=1;q[E++]=H+G}else{S[H+G]=1}continue}}else{C=C<0?-1:1;if(M>P[O+G-C]&&M>P[L+G+C]){if(M>k&&!I&&S[H+G-A]!=2){S[H+G]=2;I=1;q[E++]=H+G}else{S[H+G]=1}continue}}}}S[H+G]=0;I=0}S[H+B]=0;H+=A;G=O;O=N;N=L;L=G}G=H-A-1;for(J=0;J<A;++J,++G){S[G]=0}while(E>0){H=q[--E];H-=A+1;if(S[H]==1){S[H]=2,q[E++]=H}H+=1;if(S[H]==1){S[H]=2,q[E++]=H}H+=1;if(S[H]==1){S[H]=2,q[E++]=H}H+=A;if(S[H]==1){S[H]=2,q[E++]=H}H-=2;if(S[H]==1){S[H]=2,q[E++]=H}H+=A;if(S[H]==1){S[H]=2,q[E++]=H}H+=1;if(S[H]==1){S[H]=2,q[E++]=H}H+=1;if(S[H]==1){S[H]=2,q[E++]=H}}H=A+1;O=0;for(J=0;J<K;++J,H+=A){for(G=0;G<B;++G){n[O++]=(S[H+G]==2)*255}}jsfeat.cache.put_buffer(o);jsfeat.cache.put_buffer(l);jsfeat.cache.put_buffer(m);jsfeat.cache.put_buffer(r)},warp_perspective:function(q,Q,u,P){if(typeof P==="undefined"){P=0}var C=q.cols,F=q.rows,o=Q.cols,D=Q.rows;var K=q.data,l=Q.data;var t=0,s=0,O=0,v=0,G=0,r=0,E=0,w=0,i=0,h=0,g=0,M=0,J=0,k=0,j=0;var B=u[0],A=u[1],z=u[2],N=u[3],L=u[4],I=u[5],p=u[6],n=u[7],m=u[8];for(var H=0;s<D;++s){w=A*s+z,i=L*s+I,h=n*s+m;for(t=0;t<o;++t,++H,w+=B,i+=N,h+=p){g=1/h;r=w*g,E=i*g;v=r|0,G=E|0;if(r>0&&E>0&&v<(C-1)&&G<(F-1)){M=Math.max(r-v,0);J=Math.max(E-G,0);O=C*G+v;k=K[O]+M*(K[O+1]-K[O]);j=K[O+C]+M*(K[O+C+1]-K[O+C]);l[H]=k+J*(j-k)}else{l[H]=P}}}},warp_affine:function(k,J,o,I){if(typeof I==="undefined"){I=0}var t=k.cols,w=k.rows,j=J.cols,u=J.rows;var D=k.data,i=J.data;var n=0,m=0,H=0,p=0,z=0,l=0,v=0,F=0,C=0,h=0,g=0;var s=o[0],r=o[1],q=o[2],G=o[3],E=o[4],B=o[5];for(var A=0;m<u;++m){l=r*m+q;v=E*m+B;for(n=0;n<j;++n,++A,l+=s,v+=G){p=l|0;z=v|0;if(l>0&&v>0&&p<(t-1)&&z<(w-1)){F=Math.max(l-p,0);C=Math.max(v-z,0);H=t*z+p;h=D[H]+F*(D[H+1]-D[H]);g=D[H+t]+F*(D[H+t+1]-D[H+t]);i[A]=h+C*(g-h)}else{i[A]=I}}}}}})();b.imgproc=a})(jsfeat);(function(a){var b=(function(){var h=new Int32Array([0,3,1,3,2,2,3,1,3,0,3,-1,2,-2,1,-3,0,-3,-1,-3,-2,-2,-3,-1,-3,0,-3,1,-2,2,-1,3]);var f=new Uint8Array(512);var e=new Int32Array(25);var i=new Int32Array(25);var d=function(l,n,o){var j=0;var m=h;for(;j<o;++j){l[j]=m[j<<1]+m[(j<<1)+1]*n}for(;j<25;++j){l[j]=l[j-o]}},g=function(j,n,l,r,p){var q=25,o=0,w=j[n];var m=p,t=0,u=0,s=0;for(;o<q;++o){r[o]=w-j[n+l[o]]}for(o=0;o<16;o+=2){t=Math.min(r[o+1],r[o+2]);t=Math.min(t,r[o+3]);if(t<=m){continue}t=Math.min(t,r[o+4]);t=Math.min(t,r[o+5]);t=Math.min(t,r[o+6]);t=Math.min(t,r[o+7]);t=Math.min(t,r[o+8]);m=Math.max(m,Math.min(t,r[o]));m=Math.max(m,Math.min(t,r[o+9]))}u=-m;for(o=0;o<16;o+=2){s=Math.max(r[o+1],r[o+2]);s=Math.max(s,r[o+3]);s=Math.max(s,r[o+4]);s=Math.max(s,r[o+5]);if(s>=u){continue}s=Math.max(s,r[o+6]);s=Math.max(s,r[o+7]);s=Math.max(s,r[o+8]);u=Math.min(u,Math.max(s,r[o]));u=Math.min(u,Math.max(s,r[o+9]))}return -u-1};var c=20;return{set_threshold:function(j){c=Math.min(Math.max(j,0),255);for(var k=-255;k<=255;++k){f[(k+255)]=(k<-c?1:(k>c?2:0))}return c},detect:function(L,H,D){if(typeof D==="undefined"){D=3}var A=8,t=25;var u=L.data,X=L.cols,ar=L.rows;var ap=0,an=0,al=0,E=0,W=0,aq=0;var B=jsfeat.cache.get_buffer(3*X);var O=jsfeat.cache.get_buffer(((X+1)*3)<<2);var I=B.u8;var F=O.i32;var M=e;var J=i;var y=Math.max(3,D);var Z=Math.min((ar-2),(ar-D));var z=Math.max(3,D);var aa=Math.min((X-3),(X-D));var ah=0,P=0,C;var Q=g;var G=f;var p=c;var Y=0,ao=0,au=0,aw=0,U=0,V=0,av=0,R=0,at=0;var T=0,S=0,o=0;d(M,X,16);var am=M[0];var ak=M[1];var aj=M[2];var ai=M[3];var ag=M[4];var af=M[5];var ae=M[6];var ad=M[7];var ac=M[8];var ab=M[9];var s=M[10];var r=M[11];var q=M[12];var n=M[13];var m=M[14];var l=M[15];for(ap=0;ap<X*3;++ap){I[ap]=0}for(ap=y;ap<Z;++ap){av=((ap*X)+z)|0;aq=(ap-3)%3;V=(aq*X)|0;U=(aq*(X+1))|0;for(an=0;an<X;++an){I[V+an]=0}aw=0;if(ap<(Z-1)){an=z;for(;an<aa;++an,++av){Y=u[av];ao=(-Y+255);au=(G[ao+u[av+am]]|G[ao+u[av+ac]]);if(au==0){continue}au&=(G[ao+u[av+aj]]|G[ao+u[av+s]]);au&=(G[ao+u[av+ag]]|G[ao+u[av+q]]);au&=(G[ao+u[av+ae]]|G[ao+u[av+m]]);if(au==0){continue}au&=(G[ao+u[av+ak]]|G[ao+u[av+ab]]);au&=(G[ao+u[av+ai]]|G[ao+u[av+r]]);au&=(G[ao+u[av+af]]|G[ao+u[av+n]]);au&=(G[ao+u[av+ad]]|G[ao+u[av+l]]);if(au&1){E=(Y-p);ah=0;for(al=0;al<t;++al){W=u[(av+M[al])];if(W<E){++ah;if(ah>A){++aw;F[U+aw]=an;I[V+an]=Q(u,av,M,J,p);break}}else{ah=0}}}if(au&2){E=(Y+p);ah=0;for(al=0;al<t;++al){W=u[(av+M[al])];if(W>E){++ah;if(ah>A){++aw;F[U+aw]=an;I[V+an]=Q(u,av,M,J,p);break}}else{ah=0}}}}}F[U+X]=aw;if(ap==y){continue}aq=(ap-4+3)%3;R=(aq*X)|0;U=(aq*(X+1))|0;aq=(ap-5+3)%3;at=(aq*X)|0;aw=F[U+X];for(al=0;al<aw;++al){an=F[U+al];T=(an+1)|0;S=(an-1)|0;o=I[R+an];if((o>I[R+T]&&o>I[R+S]&&o>I[at+S]&&o>I[at+an]&&o>I[at+T]&&o>I[V+S]&&o>I[V+an]&&o>I[V+T])){C=H[P];C.x=an,C.y=(ap-1),C.score=o;P++}}}jsfeat.cache.put_buffer(B);jsfeat.cache.put_buffer(O);return P}}})();a.fast_corners=b;b.set_threshold(20)})(jsfeat);(function(b){var a=(function(){var d=function(e,j,m,i,n,g){var k=0,l=0,f=(n*m)|0,o=f;for(k=n;k<i-n;++k,f+=m,o=f){for(l=m-n;l>=n;--l){j[o]=-4*e[o]+e[o+n]+e[o-n]+e[o+g]+e[o-g];++o}}};var c=function(e,f,k,m,g,l,h){var o=-2*e[f]+e[f+m]+e[f-m];var i=-2*e[f]+e[f+g]+e[f-g];var n=e[f+l]+e[f-l]-e[f+h]-e[f-h];var j=(Math.sqrt(((o-i)*(o-i)+4*n*n)))|0;return Math.min(Math.abs(k-j),Math.abs(-(k+j)))};return{laplacian_threshold:30,min_eigen_value_threshold:25,detect:function(l,u){var o=0,n=0;var p=l.cols,v=l.rows,q=l.data;var C=5,f=(5*p)|0;var B=(3+3*p)|0,g=(3-3*p)|0;var e=jsfeat.cache.get_buffer((p*v)<<2);var j=e.i32;var i=0,k=0,m=0,r=0,t;var s=0;var A=this.laplacian_threshold;var z=this.min_eigen_value_threshold;o=p*v;while(--o>=0){j[o]=0}d(q,j,p,v,C,f);k=(p+1)|0;for(n=1;n<v-1;++n,k+=p){for(o=1,m=k;o<p-1;++o,++m){i=j[m];if((i<-A&&i<j[m-1]&&i<j[m+1]&&i<j[m-p]&&i<j[m+p]&&i<j[m-p-1]&&i<j[m+p-1]&&i<j[m-p+1]&&i<j[m+p+1])||(i>A&&i>j[m-1]&&i>j[m+1]&&i>j[m-p]&&i>j[m+p]&&i>j[m-p-1]&&i>j[m+p-1]&&i>j[m-p+1]&&i>j[m+p+1])){r=c(q,m,i,C,f,B,g);if(r>z){t=u[s];t.x=o,t.y=n,t.score=r;++s;++o,++m}}}}jsfeat.cache.put_buffer(e);return s}}})();b.yape06=a})(jsfeat);(function(a){var b=(function(){var d=function(l,m,k){var j=0;var h,n;h=k;for(n=0;n<h;n++,j++){h=(Math.sqrt((k*k-n*n))+0.5)|0;m[j]=(h+l*n)}for(h--;h<n&&h>=0;h--,j++){n=(Math.sqrt((k*k-h*h))+0.5)|0;m[j]=(h+l*n)}for(;-h<n;h--,j++){n=(Math.sqrt((k*k-h*h))+0.5)|0;m[j]=(h+l*n)}for(n--;n>=0;n--,j++){h=(-Math.sqrt((k*k-n*n))-0.5)|0;m[j]=(h+l*n)}for(;n>h;n--,j++){h=(-Math.sqrt((k*k-n*n))-0.5)|0;m[j]=(h+l*n)}for(h++;h<=0;h++,j++){n=(-Math.sqrt((k*k-h*h))-0.5)|0;m[j]=(h+l*n)}for(;h<-n;h++,j++){n=(-Math.sqrt((k*k-h*h))-0.5)|0;m[j]=(h+l*n)}for(n++;n<0;n++,j++){h=(Math.sqrt((k*k-n*n))+0.5)|0;m[j]=(h+l*n)}m[j]=m[0];m[j+1]=m[1];return j};var g=function(h,j,i){var k=0;if(h[j+1]!=0){k++}if(h[j-1]!=0){k++}if(h[j+i]!=0){k++}if(h[j+i+1]!=0){k++}if(h[j+i-1]!=0){k++}if(h[j-i]!=0){k++}if(h[j-i+1]!=0){k++}if(h[j-i-1]!=0){k++}return k};var c=function(l,m,i,k,j){var h,n;if(i>0){m-=k*j;for(n=-j;n<=j;++n){for(h=-j;h<=j;++h){if(l[m+h]>i){return false}}m+=k}}else{m-=k*j;for(n=-j;n<=j;++n){for(h=-j;h<=j;++h){if(l[m+h]<i){return false}}m+=k}}return true};var e=function(s,r,m,u,p,i,l,n){var k=0;var q=0,o=(l-1)|0;var j=0,w=0,v=0,t=0;var h=0;j=s[r+i[q]];if((j<=p)){if((j>=u)){w=s[r+i[o]];if((w<=p)){if((w>=u)){m[r]=0;return}else{o++;v=s[r+i[o]];if((v>p)){o++;t=s[r+i[o]];if((t>p)){h=3}else{if((t<u)){h=6}else{m[r]=0;return}}}else{o++;t=s[r+i[o]];if((t>p)){h=7}else{if((t<u)){h=2}else{m[r]=0;return}}}}}else{o++;v=s[r+i[o]];if((v>p)){o++;t=s[r+i[o]];if((t>p)){h=3}else{if((t<u)){h=6}else{m[r]=0;return}}}else{if((v<u)){o++;t=s[r+i[o]];if((t>p)){h=7}else{if((t<u)){h=2}else{m[r]=0;return}}}else{m[r]=0;return}}}}else{w=s[r+i[o]];if((w>p)){m[r]=0;return}o++;v=s[r+i[o]];if((v>p)){m[r]=0;return}o++;t=s[r+i[o]];if((t>p)){m[r]=0;return}h=1}}else{w=s[r+i[o]];if((w<u)){m[r]=0;return}o++;v=s[r+i[o]];if((v<u)){m[r]=0;return}o++;t=s[r+i[o]];if((t<u)){m[r]=0;return}h=0}for(q=1;q<=l;q++){j=s[r+i[q]];switch(h){case 0:if((j>p)){v=t;o++;t=s[r+i[o]];if((t<u)){m[r]=0;return}k-=j+v;h=0;break}if((j<u)){if((v>p)){m[r]=0;return}if((t>p)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t>p)){m[r]=0;return}k-=j+v;h=8;break}if((v<=p)){m[r]=0;return}if((t<=p)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t>p)){k-=j+v;h=3;break}if((t<u)){k-=j+v;h=6;break}m[r]=0;return;case 1:if((j<u)){v=t;o++;t=s[r+i[o]];if((t>p)){m[r]=0;return}k-=j+v;h=1;break}if((j>p)){if((v<u)){m[r]=0;return}if((t<u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t<u)){m[r]=0;return}k-=j+v;h=9;break}if((v>=u)){m[r]=0;return}if((t>=u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t<u)){k-=j+v;h=2;break}if((t>p)){k-=j+v;h=7;break}m[r]=0;return;case 2:if((j>p)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((j<u)){if((t>p)){m[r]=0;return}k-=j+v;h=4;break}if((t>p)){k-=j+v;h=7;break}if((t<u)){k-=j+v;h=2;break}m[r]=0;return;case 3:if((j<u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((j>p)){if((t<u)){m[r]=0;return}k-=j+v;h=5;break}if((t>p)){k-=j+v;h=3;break}if((t<u)){k-=j+v;h=6;break}m[r]=0;return;case 4:if((j>p)){m[r]=0;return}if((j<u)){v=t;o++;t=s[r+i[o]];if((t>p)){m[r]=0;return}k-=j+v;h=1;break}if((t>=u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t<u)){k-=j+v;h=2;break}if((t>p)){k-=j+v;h=7;break}m[r]=0;return;case 5:if((j<u)){m[r]=0;return}if((j>p)){v=t;o++;t=s[r+i[o]];if((t<u)){m[r]=0;return}k-=j+v;h=0;break}if((t<=p)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t>p)){k-=j+v;h=3;break}if((t<u)){k-=j+v;h=6;break}m[r]=0;return;case 7:if((j>p)){m[r]=0;return}if((j<u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t>p)){k-=j+v;h=3;break}if((t<u)){k-=j+v;h=6;break}m[r]=0;return;case 6:if((j>p)){m[r]=0;return}if((j<u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t<u)){k-=j+v;h=2;break}if((t>p)){k-=j+v;h=7;break}m[r]=0;return;case 8:if((j>p)){if((t<u)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t<u)){m[r]=0;return}k-=j+v;h=9;break}if((j<u)){v=t;o++;t=s[r+i[o]];if((t>p)){m[r]=0;return}k-=j+v;h=1;break}m[r]=0;return;case 9:if((j<u)){if((t>p)){m[r]=0;return}v=t;o++;t=s[r+i[o]];if((t>p)){m[r]=0;return}k-=j+v;h=8;break}if((j>p)){v=t;o++;t=s[r+i[o]];if((t<u)){m[r]=0;return}k-=j+v;h=0;break}m[r]=0;return;default:break}}m[r]=(k+n*s[r])};var f=(function(){function h(i,j,k){this.dirs=new Int32Array(1024);this.dirs_count=d(i,this.dirs,k)|0;this.scores=new Int32Array(i*j);this.radius=k|0}return h})();return{level_tables:[],tau:7,init:function(m,j,h,l){if(typeof l==="undefined"){l=1}var k;h=Math.min(h,7);h=Math.max(h,3);for(k=0;k<l;++k){this.level_tables[k]=new f(m>>k,j>>k,h)}},detect:function(k,J,G){if(typeof G==="undefined"){G=4}var A=this.level_tables[0];var i=A.radius|0,q=(i-1)|0;var m=A.dirs;var n=A.dirs_count|0;var v=n>>1;var O=k.data,u=k.cols|0,K=k.rows|0,N=u>>1;var H=A.scores;var s=0,r=0,j=0,l=0,o=0,p=0,z=0,I=0;var F=this.tau|0;var D=0,E;var C=Math.max(i+1,G)|0;var B=Math.max(i+1,G)|0;var M=Math.min(u-i-2,u-G)|0;var L=Math.min(K-i-2,K-G)|0;j=(B*u+C)|0;for(r=B;r<L;++r,j+=u){for(s=C,l=j;s<M;++s,++l){o=O[l]+F,p=O[l]-F;if(p<O[l+i]&&O[l+i]<o&&p<O[l-i]&&O[l-i]<o){H[l]=0}else{e(O,l,H,p,o,m,v,n)}}}j=(B*u+C)|0;for(r=B;r<L;++r,j+=u){for(s=C,l=j;s<M;++s,++l){I=H[l];z=Math.abs(I);if(z<5){++s,++l}else{if(g(H,l,u)>=3&&c(H,l,I,N,i)){E=J[D];E.x=s,E.y=r,E.score=z;++D;s+=q,l+=q}}}}return D}}})();a.yape=b})(jsfeat);(function(b){var a=(function(){var c=jsfeat.imgproc.scharr_derivatives;return{track:function(n,u,ao,aK,k,N,R,K,f,q){if(typeof R==="undefined"){R=30}if(typeof K==="undefined"){K=new Uint8Array(k)}if(typeof f==="undefined"){f=0.01}if(typeof q==="undefined"){q=0.0001}var e=(N-1)*0.5;var h=(N*N)|0;var Z=h<<1;var r=n.data,S=u.data;var g=r[0].data,F=S[0].data;var M=r[0].cols,aA=r[0].rows,ax=0,aG=0;var ay=jsfeat.cache.get_buffer(h<<2);var s=jsfeat.cache.get_buffer(Z<<2);var t=jsfeat.cache.get_buffer((aA*(M<<1))<<2);var w=ay.i32;var ab=s.i32;var az=t.i32;var aa=0,I=0,aL=0,ar=0,aH=0,at=0;var al=0,aE=0,aC=0,ae=0,ad=0;var E=0,z=0,X=0,V=0;var p=0,o=0,aD=0,aB=0;var Q=0,P=0,J=0,H=0,ah=0,aj=0,l=0;var d=0,A=0,O=0;var U=0,T=0,av=0,au=0;var ag=14;var C=14;var Y=C-5;var aw=(1<<((Y)-1));var ac=(1<<ag);var m=(1<<((C)-1));var W=1/(1<<20);var aJ=0,aI=0,aq=0,ap=0,ak=0,v=0,B=0;var an=0,am=0,af=0,ai=0,aF=0;var G=1.1920929e-7;f*=f;for(;Q<k;++Q){K[Q]=1}var L=(n.levels-1)|0;ah=L;for(;ah>=0;--ah){al=(1/(1<<ah));ax=M>>ah;aG=aA>>ah;aa=ax<<1;g=r[ah].data;F=S[ah].data;A=(ax-N)|0;O=(aG-N)|0;c(r[ah],az);for(aj=0;aj<k;++aj){Q=aj<<1;P=Q+1;aE=ao[Q]*al;aC=ao[P]*al;if(ah==L){ae=aE;ad=aC}else{ae=aK[Q]*2;ad=aK[P]*2}aK[Q]=ae;aK[P]=ad;aE-=e;aC-=e;p=aE|0;o=aC|0;J=(p<=d)|(p>=A)|(o<=d)|(o>=O);if(J!=0){if(ah==0){K[aj]=0}continue}U=aE-p;T=aC-o;aJ=(((1-U)*(1-T)*ac)+0.5)|0;aI=((U*(1-T)*ac)+0.5)|0;aq=(((1-U)*T*ac)+0.5)|0;ap=(ac-aJ-aI-aq);an=0,am=0,af=0;for(H=0;H<N;++H){I=((H+o)*ax+p)|0;aL=I<<1;ar=(H*N)|0;aH=ar<<1;for(J=0;J<N;++J,++I,++ar,aL+=2){ak=((g[I])*aJ+(g[I+1])*aI+(g[I+ax])*aq+(g[I+ax+1])*ap);ak=(((ak)+aw)>>(Y));v=(az[aL]*aJ+az[aL+2]*aI+az[aL+aa]*aq+az[aL+aa+2]*ap);v=(((v)+m)>>(C));B=(az[aL+1]*aJ+az[aL+3]*aI+az[aL+aa+1]*aq+az[aL+aa+3]*ap);B=(((B)+m)>>(C));w[ar]=ak;ab[aH++]=v;ab[aH++]=B;an+=v*v;am+=v*B;af+=B*B}}an*=W;am*=W;af*=W;ai=an*af-am*am;aF=(af+an-Math.sqrt((an-af)*(an-af)+4*am*am))/Z;if(aF<q||ai<G){if(ah==0){K[aj]=0}continue}ai=1/ai;ae-=e;ad-=e;E=0;z=0;for(l=0;l<R;++l){aD=ae|0;aB=ad|0;J=(aD<=d)|(aD>=A)|(aB<=d)|(aB>=O);if(J!=0){if(ah==0){K[aj]=0}break}U=ae-aD;T=ad-aB;aJ=(((1-U)*(1-T)*ac)+0.5)|0;aI=((U*(1-T)*ac)+0.5)|0;aq=(((1-U)*T*ac)+0.5)|0;ap=(ac-aJ-aI-aq);av=0,au=0;for(H=0;H<N;++H){at=((H+aB)*ax+aD)|0;ar=(H*N)|0;aH=ar<<1;for(J=0;J<N;++J,++at,++ar){ak=((F[at])*aJ+(F[at+1])*aI+(F[at+ax])*aq+(F[at+ax+1])*ap);ak=(((ak)+aw)>>(Y));ak=(ak-w[ar]);av+=ak*ab[aH++];au+=ak*ab[aH++]}}av*=W;au*=W;X=((am*au-af*av)*ai);V=((am*av-an*au)*ai);ae+=X;ad+=V;aK[Q]=ae+e;aK[P]=ad+e;if(X*X+V*V<=f){break}if(l>0&&Math.abs(X+E)<0.01&&Math.abs(V+z)<0.01){aK[Q]-=X*0.5;aK[P]-=V*0.5;break}E=X;z=V}}}jsfeat.cache.put_buffer(ay);jsfeat.cache.put_buffer(s);jsfeat.cache.put_buffer(t)}}})();b.optical_flow_lk=a})(jsfeat);(function(b){var a=(function(){var c=function(e,d){var f=(e.width*0.25+0.5)|0;return d.x<=e.x+f&&d.x>=e.x-f&&d.y<=e.y+f&&d.y>=e.y-f&&d.width<=(e.width*1.5+0.5)|0&&(d.width*1.5+0.5)|0>=e.width};return{edges_density:0.07,detect_single_scale:function(E,ad,af,q,d,f,D,B){var z=(B.size[0]*D)|0,N=(B.size[1]*D)|0,V=(0.5*D+1.5)|0,U=V;var Z,X,W,Q,O,T=(d-z)|0,R=(f-N)|0;var H=(d+1)|0,w,p,r,S;var e=1/(z*N);var t,o,l,u,s,ae,A,g=true,L,h,n,G,m;var M,K,J,I,v,C;var ac=0,ab=z,aa=N*H,Y=aa+z;var F=((z*N)*255*this.edges_density)|0;var P=[];for(O=0;O<R;O+=U){ac=O*H;for(Q=0;Q<T;Q+=V,ac+=V){p=E[ac]-E[ac+ab]-E[ac+aa]+E[ac+Y];if(q){w=(q[ac]-q[ac+ab]-q[ac+aa]+q[ac+Y]);if(w<F||p<20){Q+=V,ac+=V;continue}}p*=e;r=(ad[ac]-ad[ac+ab]-ad[ac+aa]+ad[ac+Y])*e-p*p;S=r>0?Math.sqrt(r):1;t=B.complexClassifiers;s=t.length;g=true;for(Z=0;Z<s;++Z){o=t[Z];L=o.threshold;l=o.simpleClassifiers;ae=l.length;h=0;for(X=0;X<ae;++X){u=l[X];n=0;m=u.features;A=m.length;if(u.tilted===1){for(W=0;W<A;++W){G=m[W];M=~~(Q+G[0]*D)+~~(O+G[1]*D)*H;v=~~(G[2]*D);C=~~(G[3]*D);K=v*H;J=C*H;n+=(af[M]-af[M+v+K]-af[M-C+J]+af[M+v-C+K+J])*G[4]}}else{for(W=0;W<A;++W){G=m[W];M=~~(Q+G[0]*D)+~~(O+G[1]*D)*H;v=~~(G[2]*D);C=~~(G[3]*D);J=C*H;n+=(E[M]-E[M+v]-E[M+J]+E[M+J+v])*G[4]}}h+=(n*e<u.threshold*S)?u.left_val:u.right_val}if(h<L){g=false;break}}if(g){P.push({x:Q,y:O,width:z,height:N,neighbor:1,confidence:h});Q+=V,ac+=V}}}return P},detect_multi_scale:function(e,m,f,h,d,n,i,g,k){if(typeof g==="undefined"){g=1.2}if(typeof k==="undefined"){k=1}var o=i.size[0];var j=i.size[1];var l=[];while(k*o<d&&k*j<n){l=l.concat(this.detect_single_scale(e,m,f,h,d,n,k,i));k*=g}return l},group_rectangles:function(g,l){if(typeof l==="undefined"){l=1}var y,v,q=g.length;var r=[];for(y=0;y<q;++y){r[y]={parent:-1,element:g[y],rank:0}}for(y=0;y<q;++y){if(!r[y].element){continue}var t=y;while(r[t].parent!=-1){t=r[t].parent}for(v=0;v<q;++v){if(y!=v&&r[v].element&&c(r[y].element,r[v].element)){var s=v;while(r[s].parent!=-1){s=r[s].parent}if(s!=t){if(r[t].rank>r[s].rank){r[s].parent=t}else{r[t].parent=s;if(r[t].rank==r[s].rank){r[s].rank++}t=s}var A,d=v;while(r[d].parent!=-1){A=d;d=r[d].parent;r[A].parent=t}d=y;while(r[d].parent!=-1){A=d;d=r[d].parent;r[A].parent=t}}}}}var w=[];var o=0;for(y=0;y<q;y++){v=-1;var e=y;if(r[e].element){while(r[e].parent!=-1){e=r[e].parent}if(r[e].rank>=0){r[e].rank=~o++}v=~r[e].rank}w[y]=v}var m=[];for(y=0;y<o+1;++y){m[y]={neighbors:0,x:0,y:0,width:0,height:0,confidence:0}}for(y=0;y<q;++y){var z=g[y];var k=w[y];if(m[k].neighbors==0){m[k].confidence=z.confidence}++m[k].neighbors;m[k].x+=z.x;m[k].y+=z.y;m[k].width+=z.width;m[k].height+=z.height;m[k].confidence=Math.max(m[k].confidence,z.confidence)}var h=[];for(y=0;y<o;++y){q=m[y].neighbors;if(q>=l){h.push({x:(m[y].x*2+q)/(2*q),y:(m[y].y*2+q)/(2*q),width:(m[y].width*2+q)/(2*q),height:(m[y].height*2+q)/(2*q),neighbors:m[y].neighbors,confidence:m[y].confidence})}}var p=[];q=h.length;for(y=0;y<q;++y){var z=h[y];var x=true;for(v=0;v<q;++v){var u=h[v];var f=(u.width*0.25+0.5)|0;if(y!=v&&z.x>=u.x-f&&z.y>=u.y-f&&z.x+z.width<=u.x+u.width+f&&z.y+z.height<=u.y+u.height+f&&(u.neighbors>Math.max(3,z.neighbors)||z.neighbors<3)){x=false;break}}if(x){p.push(z)}}return p}}})();b.haar=a})(jsfeat);(function(a){var b=(function(){var c=function(f,e){var g=(f.width*0.25+0.5)|0;return e.x<=f.x+g&&e.x>=f.x-g&&e.y<=f.y+g&&e.y>=f.y-g&&e.width<=(f.width*1.5+0.5)|0&&(e.width*1.5+0.5)|0>=f.width};var d=new jsfeat.pyramid_t(1);return{interval:4,scale:1.1486,next:5,scale_to:1,prepare_cascade:function(g){var m=g.stage_classifier.length;for(var h=0;h<m;h++){var l=g.stage_classifier[h].feature;var e=g.stage_classifier[h].count;var i=g.stage_classifier[h]._feature=new Array(e);for(var f=0;f<e;f++){i[f]={size:l[f].size,px:new Array(l[f].size),pz:new Array(l[f].size),nx:new Array(l[f].size),nz:new Array(l[f].size)}}}},build_pyramid:function(e,k,s,f){if(typeof f==="undefined"){f=4}var q=e.cols,m=e.rows;var l=0,n=0,h=0;var p=false;var j=e,g=e;var r=jsfeat.U8_t|jsfeat.C1_t;this.interval=f;this.scale=Math.pow(2,1/(this.interval+1));this.next=(this.interval+1)|0;this.scale_to=(Math.log(Math.min(q/k,m/s))/Math.log(this.scale))|0;var o=((this.scale_to+this.next*2)*4)|0;if(d.levels!=o){d.levels=o;d.data=new Array(o);p=true;d.data[0]=e}for(l=1;l<=this.interval;++l){n=(q/Math.pow(this.scale,l))|0;h=(m/Math.pow(this.scale,l))|0;j=d.data[l<<2];if(p||n!=j.cols||h!=j.rows){d.data[l<<2]=new jsfeat.matrix_t(n,h,r);j=d.data[l<<2]}jsfeat.imgproc.resample(e,j,n,h)}for(l=this.next;l<this.scale_to+this.next*2;++l){g=d.data[(l<<2)-(this.next<<2)];j=d.data[l<<2];n=g.cols>>1;h=g.rows>>1;if(p||n!=j.cols||h!=j.rows){d.data[l<<2]=new jsfeat.matrix_t(n,h,r);j=d.data[l<<2]}jsfeat.imgproc.pyrdown(g,j)}for(l=this.next*2;l<this.scale_to+this.next*2;++l){g=d.data[(l<<2)-(this.next<<2)];n=g.cols>>1;h=g.rows>>1;j=d.data[(l<<2)+1];if(p||n!=j.cols||h!=j.rows){d.data[(l<<2)+1]=new jsfeat.matrix_t(n,h,r);j=d.data[(l<<2)+1]}jsfeat.imgproc.pyrdown(g,j,1,0);j=d.data[(l<<2)+2];if(p||n!=j.cols||h!=j.rows){d.data[(l<<2)+2]=new jsfeat.matrix_t(n,h,r);j=d.data[(l<<2)+2]}jsfeat.imgproc.pyrdown(g,j,0,1);j=d.data[(l<<2)+3];if(p||n!=j.cols||h!=j.rows){d.data[(l<<2)+3]=new jsfeat.matrix_t(n,h,r);j=d.data[(l<<2)+3]}jsfeat.imgproc.pyrdown(g,j,1,1)}return d},detect:function(G,L){var h=this.interval;var N=this.scale;var m=this.next;var l=this.scale_to;var ab=0,aa=0,Z=0,W=0,S=0,R=0,U=0,B=0,J=0,I=0,V=0,ae=0,M=0,ad=0,w=0,Y=0,g=0;var E=0,X,Q,D,H,F,O=true,o=true;var z=1,v=1;var s=[0,1,0,1];var r=[0,0,1,1];var K=[];var C=G.data,ac=1,u=2,t=4;var A=[],e=[0,0,0];var P=[0,0,0];var T=[0,0,0];for(ab=0;ab<l;ab++){w=(ab<<2);Y=C[w+(m<<3)].cols-(L.width>>2);g=C[w+(m<<3)].rows-(L.height>>2);P[0]=C[w].cols*ac;P[1]=C[w+(m<<2)].cols*ac;P[2]=C[w+(m<<3)].cols*ac;T[0]=(C[w].cols*t)-(Y*t);T[1]=(C[w+(m<<2)].cols*u)-(Y*u);T[2]=(C[w+(m<<3)].cols*ac)-(Y*ac);B=L.stage_classifier.length;for(aa=0;aa<B;aa++){D=L.stage_classifier[aa].feature;Q=L.stage_classifier[aa]._feature;J=L.stage_classifier[aa].count;for(Z=0;Z<J;Z++){H=Q[Z];F=D[Z];I=F.size|0;for(U=0;U<I;U++){H.px[U]=(F.px[U]*ac)+F.py[U]*P[F.pz[U]];H.pz[U]=F.pz[U];H.nx[U]=(F.nx[U]*ac)+F.ny[U]*P[F.nz[U]];H.nz[U]=F.nz[U]}}}A[0]=C[w].data;A[1]=C[w+(m<<2)].data;for(U=0;U<4;U++){A[2]=C[w+(m<<3)+U].data;e[0]=(s[U]*u)+r[U]*(C[w].cols*u);e[1]=(s[U]*ac)+r[U]*(C[w+(m<<2)].cols*ac);e[2]=0;for(R=0;R<g;R++){for(S=0;S<Y;S++){E=0;O=true;B=L.stage_classifier.length;for(aa=0;aa<B;aa++){E=0;X=L.stage_classifier[aa].alpha;Q=L.stage_classifier[aa]._feature;J=L.stage_classifier[aa].count;for(Z=0;Z<J;Z++){H=Q[Z];ae=A[H.pz[0]][e[H.pz[0]]+H.px[0]];M=A[H.nz[0]][e[H.nz[0]]+H.nx[0]];if(ae<=M){E+=X[Z<<1]}else{o=true;I=H.size;for(ad=0;ad<I;ad++){if(H.pz[ad]>=0){V=A[H.pz[ad]][e[H.pz[ad]]+H.px[ad]];if(V<ae){if(V<=M){o=false;break}ae=V}}if(H.nz[ad]>=0){W=A[H.nz[ad]][e[H.nz[ad]]+H.nx[ad]];if(W>M){if(ae<=W){o=false;break}M=W}}}E+=(o)?X[(Z<<1)+1]:X[Z<<1]}}if(E<L.stage_classifier[aa].threshold){O=false;break}}if(O){K.push({x:(S*4+s[U]*2)*z,y:(R*4+r[U]*2)*v,width:L.width*z,height:L.height*v,neighbor:1,confidence:E});++S;e[0]+=t;e[1]+=u;e[2]+=ac}e[0]+=t;e[1]+=u;e[2]+=ac}e[0]+=T[0];e[1]+=T[1];e[2]+=T[2]}}z*=N;v*=N}return K},group_rectangles:function(h,m){if(typeof m==="undefined"){m=1}var z,w,r=h.length;var s=[];for(z=0;z<r;++z){s[z]={parent:-1,element:h[z],rank:0}}for(z=0;z<r;++z){if(!s[z].element){continue}var u=z;while(s[u].parent!=-1){u=s[u].parent}for(w=0;w<r;++w){if(z!=w&&s[w].element&&c(s[z].element,s[w].element)){var t=w;while(s[t].parent!=-1){t=s[t].parent}if(t!=u){if(s[u].rank>s[t].rank){s[t].parent=u}else{s[u].parent=t;if(s[u].rank==s[t].rank){s[t].rank++}u=t}var B,e=w;while(s[e].parent!=-1){B=e;e=s[e].parent;s[B].parent=u}e=z;while(s[e].parent!=-1){B=e;e=s[e].parent;s[B].parent=u}}}}}var x=[];var p=0;for(z=0;z<r;z++){w=-1;var f=z;if(s[f].element){while(s[f].parent!=-1){f=s[f].parent}if(s[f].rank>=0){s[f].rank=~p++}w=~s[f].rank}x[z]=w}var o=[];for(z=0;z<p+1;++z){o[z]={neighbors:0,x:0,y:0,width:0,height:0,confidence:0}}for(z=0;z<r;++z){var A=h[z];var l=x[z];if(o[l].neighbors==0){o[l].confidence=A.confidence}++o[l].neighbors;o[l].x+=A.x;o[l].y+=A.y;o[l].width+=A.width;o[l].height+=A.height;o[l].confidence=Math.max(o[l].confidence,A.confidence)}var k=[];for(z=0;z<p;++z){r=o[z].neighbors;if(r>=m){k.push({x:(o[z].x*2+r)/(2*r),y:(o[z].y*2+r)/(2*r),width:(o[z].width*2+r)/(2*r),height:(o[z].height*2+r)/(2*r),neighbors:o[z].neighbors,confidence:o[z].confidence})}}var q=[];r=k.length;for(z=0;z<r;++z){var A=k[z];var y=true;for(w=0;w<r;++w){var v=k[w];var g=(v.width*0.25+0.5)|0;if(z!=w&&A.x>=v.x-g&&A.y>=v.y-g&&A.x+A.width<=v.x+v.width+g&&A.y+A.height<=v.y+v.height+g&&(v.neighbors>Math.max(3,A.neighbors)||A.neighbors<3)){y=false;break}}if(y){q.push(A)}}return q}}})();a.bbf=b})(jsfeat);(function(a){if(typeof module==="undefined"||typeof module.exports==="undefined"){window.jsfeat=a}else{module.exports=a}})(jsfeat);
{
"name" : "jsfeat",
"version" : "0.0.2",
"version" : "0.0.4",
"description" : "JavaScript Computer Vision library",

@@ -5,0 +5,0 @@ "author" : "Eugene Zatepyakin (http://www.inspirit.ru/)",

@@ -28,2 +28,4 @@ /**

var img_pyr = new jsfeat.pyramid_t(1);
return {

@@ -55,26 +57,10 @@

build_pyramid: function(canvas, min_width, min_height, interval, do_grayscale) {
build_pyramid: function(src, min_width, min_height, interval) {
if (typeof interval === "undefined") { interval = 4; }
if (typeof do_grayscale === "undefined") { do_grayscale = true; }
// need to convert to grayscale
if(do_grayscale) {
var ctx_input = canvas.getContext('2d');
var in_size = canvas.width * canvas.height;
var img_data_input = ctx_input.getImageData(0, 0, canvas.width, canvas.height);
var data_input = img_data_input.data;
var data_u32 = new Uint32Array(data_input.buffer);
var gray_n = jsfeat.cache.get_buffer(in_size);
var gray_data = gray_n.u8;
jsfeat.imgproc.grayscale(data_input, gray_data);
var alpha = (0xff << 24);
var i = in_size,pix=0;
while (--i >= 0) {
pix = gray_data[i];
data_u32[i] = alpha | (pix << 16) | (pix << 8) | pix;
}
ctx_input.putImageData(img_data_input, 0, 0);
jsfeat.cache.put_buffer(gray_n);
}
//
var sw=src.cols,sh=src.rows;
var i=0,nw=0,nh=0;
var new_pyr=false;
var src0=src,src1=src;
var data_type = jsfeat.U8_t | jsfeat.C1_t;

@@ -84,57 +70,62 @@ this.interval = interval;

this.next = (this.interval + 1)|0;
this.scale_to = (Math.log(Math.min(canvas.width / min_width, canvas.height / min_height)) / Math.log(this.scale))|0;
this.scale_to = (Math.log(Math.min(sw / min_width, sh / min_height)) / Math.log(this.scale))|0;
var _canvas = document.createElement('canvas');
_canvas.width = canvas.width;
_canvas.height = canvas.height;
var _ctx = _canvas.getContext('2d');
var pyr_l = ((this.scale_to + this.next * 2) * 4) | 0;
if(img_pyr.levels != pyr_l) {
img_pyr.levels = pyr_l;
img_pyr.data = new Array(pyr_l);
new_pyr = true;
img_pyr.data[0] = src; // first is src
}
var ret = new Array((this.scale_to + this.next * 2) * 4);
ret[0] = { "width" : canvas.width,
"height" : canvas.height,
"data" : canvas.getContext("2d").getImageData(0, 0, canvas.width, canvas.height).data };
var nw, nh;
for (i = 1; i <= this.interval; ++i) {
nw = (canvas.width / Math.pow(this.scale, i))|0;
nh = (canvas.height / Math.pow(this.scale, i))|0;
_ctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, nw, nh);
ret[i * 4] = { "width" : nw,
"height" : nh,
"data" : _ctx.getImageData(0, 0, nw, nh).data };
nw = (sw / Math.pow(this.scale, i))|0;
nh = (sh / Math.pow(this.scale, i))|0;
src0 = img_pyr.data[i<<2];
if(new_pyr || nw != src0.cols || nh != src0.rows) {
img_pyr.data[i<<2] = new jsfeat.matrix_t(nw, nh, data_type);
src0 = img_pyr.data[i<<2];
}
jsfeat.imgproc.resample(src, src0, nw, nh);
}
for (i = this.next; i < this.scale_to + this.next * 2; ++i) {
nw = ret[i * 4 - this.next * 4].width >> 1;
nh = ret[i * 4 - this.next * 4].height >> 1;
_ctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, nw, nh);
ret[i * 4] = { "width" : nw,
"height" : nh,
"data" : _ctx.getImageData(0, 0, nw, nh).data };
src1 = img_pyr.data[(i << 2) - (this.next << 2)];
src0 = img_pyr.data[i<<2];
nw = src1.cols >> 1;
nh = src1.rows >> 1;
if(new_pyr || nw != src0.cols || nh != src0.rows) {
img_pyr.data[i<<2] = new jsfeat.matrix_t(nw, nh, data_type);
src0 = img_pyr.data[i<<2];
}
jsfeat.imgproc.pyrdown(src1, src0);
}
for (i = this.next * 2; i < this.scale_to + this.next * 2; ++i) {
nw = ret[i * 4 - this.next * 4].width >> 1;
nh = ret[i * 4 - this.next * 4].height >> 1;
_ctx.drawImage(canvas, 1, 0, canvas.width-1, canvas.height, 0, 0, nw-2, nh);
ret[i * 4 + 1] = { "width" : nw,
"height" : nh,
"data" : _ctx.getImageData(0, 0, nw, nh).data };
_ctx.drawImage(canvas, 0, 1, canvas.width, canvas.height-1, 0, 0, nw, nh-2);
ret[i * 4 + 2] = { "width" : nw,
"height" : nh,
"data" : _ctx.getImageData(0, 0, nw, nh).data };
_ctx.drawImage(canvas, 1, 1, canvas.width-1, canvas.height-1, 0, 0, nw-2, nh-2);
ret[i * 4 + 3] = { "width" : nw,
"height" : nh,
"data" : _ctx.getImageData(0, 0, nw, nh).data };
src1 = img_pyr.data[(i << 2) - (this.next << 2)];
nw = src1.cols >> 1;
nh = src1.rows >> 1;
src0 = img_pyr.data[(i<<2)+1];
if(new_pyr || nw != src0.cols || nh != src0.rows) {
img_pyr.data[(i<<2)+1] = new jsfeat.matrix_t(nw, nh, data_type);
src0 = img_pyr.data[(i<<2)+1];
}
jsfeat.imgproc.pyrdown(src1, src0, 1, 0);
//
src0 = img_pyr.data[(i<<2)+2];
if(new_pyr || nw != src0.cols || nh != src0.rows) {
img_pyr.data[(i<<2)+2] = new jsfeat.matrix_t(nw, nh, data_type);
src0 = img_pyr.data[(i<<2)+2];
}
jsfeat.imgproc.pyrdown(src1, src0, 0, 1);
//
src0 = img_pyr.data[(i<<2)+3];
if(new_pyr || nw != src0.cols || nh != src0.rows) {
img_pyr.data[(i<<2)+3] = new jsfeat.matrix_t(nw, nh, data_type);
src0 = img_pyr.data[(i<<2)+3];
}
jsfeat.imgproc.pyrdown(src1, src0, 1, 1);
}
return ret;
return img_pyr;
},
detect: function(pyr, cascade) {
detect: function(pyramid, cascade) {
var interval = this.interval;

@@ -150,2 +141,3 @@ var scale = this.scale;

var seq = [];
var pyr=pyramid.data, bpp = 1, bpp2 = 2, bpp4 = 4;

@@ -158,8 +150,10 @@ var u8 = [], u8o = [0,0,0];

i4 = (i<<2);
qw = pyr[i4 + (next << 3)].width - (cascade.width >> 2);
qh = pyr[i4 + (next << 3)].height - (cascade.height >> 2);
step[0] = pyr[i4].width << 2; step[1] = pyr[i4 + (next << 2)].width << 2; step[2] = pyr[i4 + (next << 3)].width << 2;
paddings[0] = (pyr[i4].width << 4) - (qw << 4);
paddings[1] = (pyr[i4 + (next << 2)].width << 3) - (qw << 3);
paddings[2] = (pyr[i4 + (next << 3)].width << 2) - (qw << 2);
qw = pyr[i4 + (next << 3)].cols - (cascade.width >> 2);
qh = pyr[i4 + (next << 3)].rows - (cascade.height >> 2);
step[0] = pyr[i4].cols * bpp;
step[1] = pyr[i4 + (next << 2)].cols * bpp;
step[2] = pyr[i4 + (next << 3)].cols * bpp;
paddings[0] = (pyr[i4].cols * bpp4) - (qw * bpp4);
paddings[1] = (pyr[i4 + (next << 2)].cols * bpp2) - (qw * bpp2);
paddings[2] = (pyr[i4 + (next << 3)].cols * bpp) - (qw * bpp);
sn = cascade.stage_classifier.length;

@@ -175,5 +169,5 @@ for (j = 0; j < sn; j++) {

for (q = 0; q < q_cnt; q++) {
feature_k.px[q] = (feature_o.px[q] << 2) + feature_o.py[q] * step[feature_o.pz[q]];
feature_k.px[q] = (feature_o.px[q] * bpp) + feature_o.py[q] * step[feature_o.pz[q]];
feature_k.pz[q] = feature_o.pz[q];
feature_k.nx[q] = (feature_o.nx[q] << 2) + feature_o.ny[q] * step[feature_o.nz[q]];
feature_k.nx[q] = (feature_o.nx[q] * bpp) + feature_o.ny[q] * step[feature_o.nz[q]];
feature_k.nz[q] = feature_o.nz[q];

@@ -186,3 +180,5 @@ }

u8[2] = pyr[i4 + (next<<3) + q].data;
u8o[0] = (dx[q]<<3) + dy[q] * (pyr[i4].width<<3); u8o[1] = (dx[q]<<2) + dy[q] * (pyr[i4 + (next<<2)].width<<2); u8o[2]=0;
u8o[0] = (dx[q]*bpp2) + dy[q] * (pyr[i4].cols*bpp2);
u8o[1] = (dx[q]*bpp) + dy[q] * (pyr[i4 + (next<<2)].cols*bpp);
u8o[2] = 0;
for (y = 0; y < qh; y++) {

@@ -244,6 +240,10 @@ for (x = 0; x < qw; x++) {

"confidence" : sum});
++x;
u8o[0] += bpp4;
u8o[1] += bpp2;
u8o[2] += bpp;
}
u8o[0] += 16;
u8o[1] += 8;
u8o[2] += 4;
u8o[0] += bpp4;
u8o[1] += bpp2;
u8o[2] += bpp;
}

@@ -250,0 +250,0 @@ u8o[0] += paddings[0];

@@ -8,9 +8,9 @@ /**

if (typeof(module) === 'undefined' || !module.exports) {
if (typeof module === "undefined" || typeof module.exports === "undefined") {
// in a browser, define its namespaces in global
window.jsfeat = lib;
} else {
// in commonjs, or when AMD wrapping has been applied, define its namespaces in exports
// in commonjs, or when AMD wrapping has been applied, define its namespaces as exports
module.exports = lib;
}
})(jsfeat);

@@ -593,21 +593,28 @@ /**

// assume we always need it for u8 image
pyrdown: function(src, dst) {
pyrdown: function(src, dst, sx, sy) {
// this is needed for bbf
if (typeof sx === "undefined") { sx = 0; }
if (typeof sy === "undefined") { sy = 0; }
var w = src.cols, h = src.rows;
var w2 = w >> 1, h2 = h >> 1;
var x=0,y=0,sptr=0,sline=0,dptr=0;
var _w2 = w2 - (sx << 1), _h2 = h2 - (sy << 1);
var x=0,y=0,sptr=sx+sy*w,sline=0,dptr=0,dline=0;
var src_d = src.data, dst_d = dst.data;
for(y = 0; y < h2; ++y) {
for(y = 0; y < _h2; ++y) {
sline = sptr;
for(x = 0; x <= w2-2; x+=2, dptr+=2, sline += 4) {
dst_d[dptr] = (src_d[sline] + src_d[sline+1] +
dline = dptr;
for(x = 0; x <= _w2-2; x+=2, dline+=2, sline += 4) {
dst_d[dline] = (src_d[sline] + src_d[sline+1] +
src_d[sline+w] + src_d[sline+w+1] + 2) >> 2;
dst_d[dptr+1] = (src_d[sline+2] + src_d[sline+3] +
dst_d[dline+1] = (src_d[sline+2] + src_d[sline+3] +
src_d[sline+w+2] + src_d[sline+w+3] + 2) >> 2;
}
for(; x < w2; ++x, ++dptr, sline += 2) {
dst_d[dptr] = (src_d[sline] + src_d[sline+1] +
for(; x < _w2; ++x, ++dline, sline += 2) {
dst_d[dline] = (src_d[sline] + src_d[sline+1] +
src_d[sline+w] + src_d[sline+w+1] + 2) >> 2;
}
sptr += w << 1;
dptr += w2;
}

@@ -614,0 +621,0 @@ },

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc