UNPKG

@webarkit/jsfeat-next

Version:

Typescript version of jsfeat for WebARKit

1 lines 61.7 kB
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.jsfeatNext=e():t.jsfeatNext=e()}(this,(()=>(()=>{"use strict";var t={d:(e,r)=>{for(var a in r)t.o(r,a)&&!t.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:r[a]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function a(t){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},a(t)}function i(t,e){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},i(t,e)}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&i(t,e)}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t){var e=function(t){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var a=e.call(t,"string");if("object"!=r(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}function s(t,e){for(var r=0;r<e.length;r++){var a=e[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,n(a.key),a)}}function h(t,e,r){return e&&s(t.prototype,e),r&&s(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function u(t,e,r){return(e=n(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}t.d(e,{default:()=>V});var c=function(){return h((function t(){f(this,t),u(this,"_data_type_size",void 0),this._data_type_size=new Int32Array([-1,1,4,-1,4,-1,-1,-1,8,-1,-1,-1,-1,-1,-1,-1,8])}),[{key:"_get_data_type",value:function(t){return 65280&t}},{key:"_get_channel",value:function(t){return 255&t}},{key:"_get_data_type_size",value:function(t){return this._data_type_size[(65280&t)>>8]}}])}(),d=h((function t(e,r){f(this,t),u(this,"size",void 0),u(this,"buffer",void 0),u(this,"u8",void 0),u(this,"i32",void 0),u(this,"f32",void 0),u(this,"f64",void 0),this.size=e+7&-8,void 0===r?this.buffer=new ArrayBuffer(this.size):(this.buffer=r,this.size=r.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)})),_=function(){return h((function t(e){f(this,t),u(this,"next",void 0),u(this,"data",void 0),u(this,"size",void 0),u(this,"buffer",void 0),u(this,"u8",void 0),u(this,"i32",void 0),u(this,"f32",void 0),u(this,"f64",void 0),this.next=null,this.data=new d(e),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}),[{key:"resize",value:function(t){delete this.data,this.data=new d(t),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}}])}(),v=function(){return h((function t(){f(this,t),u(this,"_pool_head",void 0),u(this,"_pool_tail",void 0),u(this,"_pool_size",void 0),this._pool_head,this._pool_tail,this._pool_size=0}),[{key:"allocate",value:function(t,e){this._pool_head=this._pool_tail=new _(e);for(var r=0;r<t;++r){var a=new _(e);this._pool_tail=this._pool_tail.next=a,this._pool_size++}}},{key:"get_buffer",value:function(t){var e=this._pool_head;return this._pool_head=this._pool_head.next,this._pool_size--,t>e.size&&e.resize(t),e}},{key:"put_buffer",value:function(t){this._pool_tail=this._pool_tail.next=t,this._pool_size++}}])}();function l(t,e,r,a){a=t[e],t[e]=t[r],t[r]=a}function b(t,e){return(t=Math.abs(t))>(e=Math.abs(e))?(e/=t,t*Math.sqrt(1+e*e)):e>0?(t/=e,e*Math.sqrt(1+t*t)):0}function p(t,e,r,a,i){for(var o=0,f=t[e],n=i,s=0,h=0,u=0;o<25;++o)a[o]=f-t[e+r[o]];for(o=0;o<16;o+=2)s=Math.min(a[o+1],a[o+2]),(s=Math.min(s,a[o+3]))<=n||(s=Math.min(s,a[o+4]),s=Math.min(s,a[o+5]),s=Math.min(s,a[o+6]),s=Math.min(s,a[o+7]),s=Math.min(s,a[o+8]),n=Math.max(n,Math.min(s,a[o])),n=Math.max(n,Math.min(s,a[o+9])));for(h=-n,o=0;o<16;o+=2)u=Math.max(a[o+1],a[o+2]),u=Math.max(u,a[o+3]),u=Math.max(u,a[o+4]),(u=Math.max(u,a[o+5]))>=h||(u=Math.max(u,a[o+6]),u=Math.max(u,a[o+7]),u=Math.max(u,a[o+8]),h=Math.min(h,Math.max(u,a[o])),h=Math.min(h,Math.max(u,a[o+9])));return-h-1}var y=function(){return h((function t(){f(this,t)}),[{key:"identity",value:function(t,e){void 0===e&&(e=1);for(var r=t.data,a=t.rows,i=t.cols,o=i+1|0,f=a*i,n=f;--f>=0;)r[f]=0;for(f=n,n=0;n<f;)r[n]=e,n+=o}},{key:"transpose",value:function(t,e){for(var r=0,a=0,i=e.rows,o=e.cols,f=0,n=0,s=0,h=e.data,u=t.data;r<i;n+=1,f+=o,r++)for(s=n,a=0;a<o;s+=i,a++)u[s]=h[f+a]}},{key:"multiply",value:function(t,e,r){for(var a=0,i=0,o=0,f=0,n=0,s=0,h=0,u=0,c=e.cols,d=e.rows,_=r.cols,v=e.data,l=r.data,b=t.data,p=0;a<d;f+=c,a++)for(h=0,i=0;i<_;u++,h++,i++){for(s=h,n=f,p=0,o=0;o<c;n++,s+=_,o++)p+=v[n]*l[s];b[u]=p}}},{key:"multiply_ABt",value:function(t,e,r){for(var a=0,i=0,o=0,f=0,n=0,s=0,h=0,u=e.cols,c=e.rows,d=r.rows,_=e.data,v=r.data,l=t.data,b=0;a<c;f+=u,a++)for(s=0,i=0;i<d;h++,i++){for(n=f,b=0,o=0;o<u;n++,s++,o++)b+=_[n]*v[s];l[h]=b}}},{key:"multiply_AtB",value:function(t,e,r){for(var a=0,i=0,o=0,f=0,n=0,s=0,h=0,u=0,c=e.cols,d=e.rows,_=r.cols,v=e.data,l=r.data,b=t.data,p=0;a<c;f++,a++)for(h=0,i=0;i<_;u++,h++,i++){for(s=h,n=f,p=0,o=0;o<d;n+=c,s+=_,o++)p+=v[n]*l[s];b[u]=p}}},{key:"multiply_AAt",value:function(t,e){for(var r=0,a=0,i=0,o=0,f=0,n=0,s=0,h=0,u=0,c=e.cols,d=e.rows,_=e.data,v=t.data,l=0;r<d;o+=d+1,f=n,r++)for(h=o,u=o,s=f,a=r;a<d;h++,u+=d,a++){for(n=f,l=0,i=0;i<c;i++)l+=_[n++]*_[s++];v[h]=l,v[u]=l}}},{key:"multiply_AtA",value:function(t,e){for(var r=0,a=0,i=0,o=0,f=0,n=0,s=0,h=0,u=0,c=e.cols,d=e.rows,_=e.data,v=t.data,l=0;r<c;s+=c,r++)for(o=r,h=u=s+r,a=r;a<c;h++,u+=c,a++){for(f=o,n=a,l=0,i=0;i<d;f+=c,n+=c,i++)l+=_[f]*_[n];v[h]=l,v[u]=l}}},{key:"identity_3x3",value:function(t,e){void 0===e&&(e=1);var r=t.data;r[0]=r[4]=r[8]=e,r[1]=r[2]=r[3]=0,r[5]=r[6]=r[7]=0}},{key:"invert_3x3",value:function(t,e){var r=t.data,a=e.data,i=r[4],o=r[8],f=r[5],n=r[7],s=r[0],h=s*i,u=s*f,c=r[3],d=r[1],_=c*d,v=r[2],l=c*v,b=r[6],p=b*d,y=b*v,m=1/(h*o-u*n-_*o+l*n+p*f-y*i);a[0]=(i*o-f*n)*m,a[1]=-(d*o-v*n)*m,a[2]=-(-d*f+v*i)*m,a[3]=-(c*o-f*b)*m,a[4]=(s*o-y)*m,a[5]=-(u-l)*m,a[6]=-(-c*n+i*b)*m,a[7]=-(s*n-p)*m,a[8]=(h-_)*m}},{key:"multiply_3x3",value:function(t,e,r){var a=t.data,i=e.data,o=r.data,f=i[0],n=i[1],s=i[2],h=i[3],u=i[4],c=i[5],d=i[6],_=i[7],v=i[8],l=o[0],b=o[1],p=o[2],y=o[3],m=o[4],M=o[5],w=o[6],k=o[7],g=o[8];a[0]=f*l+n*y+s*w,a[1]=f*b+n*m+s*k,a[2]=f*p+n*M+s*g,a[3]=h*l+u*y+c*w,a[4]=h*b+u*m+c*k,a[5]=h*p+u*M+c*g,a[6]=d*l+_*y+v*w,a[7]=d*b+_*m+v*k,a[8]=d*p+_*M+v*g}},{key:"mat3x3_determinant",value:function(t){var e=t.data;return e[0]*e[4]*e[8]-e[0]*e[5]*e[7]-e[3]*e[1]*e[8]+e[3]*e[2]*e[7]+e[6]*e[1]*e[5]-e[6]*e[2]*e[4]}},{key:"determinant_3x3",value:function(t,e,r,a,i,o,f,n,s){return t*i*s-t*o*n-a*e*s+a*r*n+f*e*o-f*r*i}}])}(),m=1.192092896e-7,M=256,w=512,k=1024,g=function(){return h((function t(e,r,a,i){f(this,t),u(this,"dt",void 0),u(this,"type",void 0),u(this,"channel",void 0),u(this,"cols",void 0),u(this,"rows",void 0),u(this,"data",void 0),u(this,"buffer",void 0),this.dt=new c,this.type=0|this.dt._get_data_type(a),this.channel=0|this.dt._get_channel(a),this.cols=0|e,this.rows=0|r,void 0===i?this.allocate():(this.buffer=i,this.data=this.type&M?this.buffer.u8:this.type&w?this.buffer.i32:this.type&k?this.buffer.f32:this.buffer.f64)}),[{key:"allocate",value:function(){delete this.data,delete this.buffer,this.buffer=new d(this.cols*this.dt._get_data_type_size(this.type)*this.channel*this.rows),this.data=this.type&M?this.buffer.u8:this.type&w?this.buffer.i32:this.type&k?this.buffer.f32:this.buffer.f64}},{key:"copy_to",value:function(t){for(var e=t.data,r=this.data,a=0,i=this.cols*this.rows*this.channel|0;a<i-4;a+=4)e[a]=r[a],e[a+1]=r[a+1],e[a+2]=r[a+2],e[a+3]=r[a+3];for(;a<i;++a)e[a]=r[a]}},{key:"resize",value:function(t,e,r){void 0===r&&(r=this.channel),t*this.dt._get_data_type_size(this.type)*r*e>this.buffer.size?(this.cols=t,this.rows=e,this.channel=r,this.allocate()):(this.cols=t,this.rows=e,this.channel=r)}}])}(),x=function(){return h((function t(){f(this,t)}),[{key:"perspective_4point_transform",value:function(t,e,r,a,i,o,f,n,s,h,u,c,d,_,v,l,b){var p=e,y=h,m=f,M=p*y*m,w=v,k=p*w,g=y*k,x=u,A=p*x,z=o,O=r,q=_,C=O*q,T=C*z,S=q*z*x,j=q*m,B=q*x,R=y*m,I=w*y,L=w*z,P=x*z,E=1/(j-B-R+I-L+P),U=p*q,F=O*z,V=m*p,G=w*V,N=O*y,D=C*x,J=O*x*z,Y=m*w*y,H=w*O,Q=-(g-M+A*z-z*k-C*y+T-S+j*y)*E,X=(M-g-U*m+U*x+T-y*F+L*y-S)*E,K=p,W=(-x*k+G+N*m-C*m+D-J+L*x-Y)*E,Z=(V*x-G-H*y+D-J+H*z+Y-j*x)*E,$=O,tt=(-A+V+N-F+B-j-I+L)*E,et=(-k+A+C-N+L-P-j+R)*E,rt=-((g=(y=c)*(k=(p=a)*(w=b)))-(M=p*y*(m=s))+(A=p*(x=d))*(z=n)-z*k-(C=(O=i)*(q=l))*y+(T=C*z)-(S=q*z*x)+(j=q*m)*y)*(E=1/(j-(B=q*x)-(R=y*m)+(I=w*y)-(L=w*z)+(P=x*z))),at=(M-g-(U=p*q)*m+U*x+T-y*(F=O*z)+L*y-S)*E,it=p,ot=(-x*k+(G=w*(V=m*p))+(N=O*y)*m-C*m+(D=C*x)-(J=O*x*z)+L*x-(Y=m*w*y))*E,ft=(V*x-G-(H=w*O)*y+D-J+H*z+Y-j*x)*E,nt=O,st=(-A+V+N-F+B-j-I+L)*E,ht=(-k+A+C-N+L-P-j+R)*E,ut=K*tt;T=$*tt-W;var ct=-W*et+Z*tt,dt=Q-ut;F=Q*et-(A=X*tt);var _t=(M=Q*$)-(g=K*W),vt=(m=Q*Z)-(k=W*X);J=(y=Z-et*$)*(q=1/(m-M*et-k+g*et+A*$-ut*Z));var lt=(P=K*et-X)*q,bt=(V=-X*$+K*Z)*q,pt=t.data;pt[0]=rt*J+at*(T*q)-it*(ct*q),pt[1]=rt*lt+at*(dt*q)-it*(F*q),pt[2]=-rt*bt-at*(_t*q)+it*(vt*q),pt[3]=ot*J+ft*(T*q)-nt*(ct*q),pt[4]=ot*lt+ft*(dt*q)-nt*(F*q),pt[5]=-ot*bt-ft*(_t*q)+nt*(vt*q),pt[6]=st*J+ht*(T*q)-ct*q,pt[7]=st*lt+ht*(dt*q)-F*q,pt[8]=-st*bt-ht*(_t*q)+vt*q}},{key:"invert_affine_transform",value:function(t,e){var r=t.data,a=e.data,i=r[0],o=r[1],f=r[2],n=r[3],s=r[4],h=r[5],u=1/(i*s-o*n);a[0]=u*s,a[1]=u*-o,a[2]=u*(o*h-f*s),a[3]=u*-n,a[4]=u*i,a[5]=u*(f*n-i*h)}},{key:"invert_perspective_transform",value:function(t,e){var r=t.data,a=e.data,i=r[0],o=r[1],f=r[2],n=r[3],s=r[4],h=r[5],u=r[6],c=r[7],d=r[8],_=1/(i*(s*d-h*c)-o*(n*d-h*u)+f*(n*c-s*u));a[0]=_*(s*d-h*c),a[1]=_*(f*c-o*d),a[2]=_*(o*h-f*s),a[3]=_*(h*u-n*d),a[4]=_*(i*d-f*u),a[5]=_*(f*n-i*h),a[6]=_*(n*c-s*u),a[7]=_*(o*u-i*c),a[8]=_*(i*s-o*n)}}])}(),A=h((function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;f(this,t),u(this,"x",void 0),u(this,"y",void 0),u(this,"score",void 0),u(this,"level",void 0),u(this,"angle",void 0),this.x=e,this.y=r,this.score=a,this.level=i,this.angle=o})),z=[8,-3,9,5,4,2,7,-12,-11,9,-8,2,7,-12,12,-13,2,-13,2,12,1,-7,1,6,-2,-10,-2,-4,-13,-13,-11,-8,-13,-3,-12,-9,10,4,11,9,-13,-8,-8,-9,-11,7,-9,12,7,7,12,6,-4,-5,-3,0,-13,2,-12,-3,-9,0,-7,5,12,-6,12,-1,-3,6,-2,12,-6,-13,-4,-8,11,-13,12,-8,4,7,5,1,5,-3,10,-3,3,-7,6,12,-8,-7,-6,-2,-2,11,-1,-10,-13,12,-8,10,-7,3,-5,-3,-4,2,-3,7,-10,-12,-6,11,5,-12,6,-7,5,-6,7,-1,1,0,4,-5,9,11,11,-13,4,7,4,12,2,-1,4,4,-4,-12,-2,7,-8,-5,-7,-10,4,11,9,12,0,-8,1,-13,-13,-2,-8,2,-3,-2,-2,3,-6,9,-4,-9,8,12,10,7,0,9,1,3,7,-5,11,-10,-13,-6,-11,0,10,7,12,1,-6,-3,-6,12,10,-9,12,-4,-13,8,-8,-12,-13,0,-8,-4,3,3,7,8,5,7,10,-7,-1,7,1,-12,3,-10,5,6,2,-4,3,-10,-13,0,-13,5,-13,-7,-12,12,-13,3,-11,8,-7,12,-4,7,6,-10,12,8,-9,-1,-7,-6,-2,-5,0,12,-12,5,-7,5,3,-10,8,-13,-7,-7,-4,5,-3,-2,-1,-7,2,9,5,-11,-11,-13,-5,-13,-1,6,0,-1,5,-3,5,2,-4,-13,-4,12,-9,-6,-9,6,-12,-10,-8,-4,10,2,12,-3,7,12,12,12,-7,-13,-6,5,-4,9,-3,4,7,-1,12,2,-7,6,-5,1,-13,11,-12,5,-3,7,-2,-6,7,-8,12,-7,-13,-7,-11,-12,1,-3,12,12,2,-6,3,0,-4,3,-2,-13,-1,-13,1,9,7,1,8,-6,1,-1,3,12,9,1,12,6,-1,-9,-1,3,-13,-13,-10,5,7,7,10,12,12,-5,12,9,6,3,7,11,5,-13,6,10,2,-12,2,3,3,8,4,-6,2,6,12,-13,9,-12,10,3,-8,4,-7,9,-11,12,-4,-6,1,12,2,-8,6,-9,7,-4,2,3,3,-2,6,3,11,0,3,-3,8,-8,7,8,9,3,-11,-5,-6,-4,-10,11,-5,10,-5,-8,-3,12,-10,5,-9,0,8,-1,12,-6,4,-6,6,-11,-10,12,-8,7,4,-2,6,7,-2,0,-2,12,-5,-8,-5,2,7,-6,10,12,-9,-13,-8,-8,-5,-13,-5,-2,8,-8,9,-13,-9,-11,-9,0,1,-8,1,-2,7,-4,9,1,-2,1,-1,-4,11,-6,12,-11,-12,-9,-6,4,3,7,7,12,5,5,10,8,0,-4,2,8,-9,12,-5,-13,0,7,2,12,-1,2,1,7,5,11,7,-9,3,5,6,-8,-13,-4,-8,9,-5,9,-3,-3,-4,-7,-3,-12,6,5,8,0,-7,6,-6,12,-13,6,-5,-2,1,-10,3,10,4,1,8,-4,-2,-2,2,-13,2,-12,12,12,-2,-13,0,-6,4,1,9,3,-6,-10,-3,-5,-3,-13,-1,1,7,5,12,-11,4,-2,5,-7,-13,9,-9,-5,7,1,8,6,7,-8,7,6,-7,-4,-7,1,-8,11,-7,-8,-13,6,-12,-8,2,4,3,9,10,-5,12,3,-6,-5,-6,7,8,-3,9,-8,2,-12,2,8,-11,-2,-10,3,-12,-13,-7,-9,-11,0,-10,-5,5,-3,11,8,-2,-13,-1,12,-1,-8,0,9,-13,-11,-12,-5,-10,-2,-10,11,-3,9,-2,-13,2,-3,3,2,-9,-13,-4,0,-4,6,-3,-10,-4,12,-2,-7,-6,-11,-4,9,6,-3,6,11,-13,11,-5,5,11,11,12,6,7,-5,12,-2,-1,12,0,7,-4,-8,-3,-2,-7,1,-6,7,-13,-12,-8,-13,-7,-2,-6,-8,-8,5,-6,-9,-5,-1,-4,5,-13,7,-8,10,1,5,5,-13,1,0,10,-13,9,12,10,-1,5,-8,10,-9,-1,11,1,-13,-9,-3,-6,2,-1,-10,1,12,-13,1,-8,-10,8,-11,10,-6,2,-13,3,-6,7,-13,12,-9,-10,-10,-5,-7,-10,-8,-8,-13,4,-6,8,5,3,12,8,-13,-4,2,-3,-3,5,-13,10,-12,4,-13,5,-1,-9,9,-4,3,0,3,3,-9,-12,1,-6,1,3,2,4,-8,-10,-10,-10,9,8,-13,12,12,-8,-12,-6,-5,2,2,3,7,10,6,11,-8,6,8,8,-12,-7,10,-6,5,-3,-9,-3,9,-1,-13,-1,5,-3,-7,-3,4,-8,-2,-8,3,4,2,12,12,2,-5,3,11,6,-9,11,-13,3,-1,7,12,11,-1,12,4,-3,0,-3,6,4,-11,4,12,2,-4,2,1,-10,-6,-8,1,-13,7,-11,1,-13,12,-11,-13,6,0,11,-13,0,-1,1,4,-13,3,-9,-2,-9,8,-6,-3,-13,-6,-8,-2,5,-9,8,10,2,7,3,-9,-1,-6,-1,-1,9,5,11,-2,11,-3,12,-8,3,0,3,5,-1,4,0,10,3,-6,4,5,-13,0,-10,5,5,8,12,11,8,9,9,-6,7,-4,8,-12,-10,4,-10,9,7,3,12,4,9,-7,10,-2,7,0,12,-2,-1,-6,0,-11];function O(t,e,r,a,i,o,f,n){var s=Math.cos(r),h=Math.sin(r);f.data[0]=s,f.data[1]=-h,f.data[2]=(-s+h)*o*.5+a,f.data[3]=h,f.data[4]=s,f.data[5]=(-h-s)*o*.5+i,n.warp_affine(t,e,f,128)}function q(t,e,r,a,i){var o,f;if(r>0)for(e-=a*i,f=-i;f<=i;++f){for(o=-i;o<=i;++o)if(t[e+o]>r)return!1;e+=a}else for(e-=a*i,f=-i;f<=i;++f){for(o=-i;o<=i;++o)if(t[e+o]<r)return!1;e+=a}return!0}function C(t,e,r,a,i,o,f,n){var s=0,h=0,u=f-1|0,c=0,d=0,_=0,v=0,l=0;if((c=t[e+o[h]])<=i)if(c>=a)if((d=t[e+o[u]])<=i){if(d>=a)return void(r[e]=0);if((_=t[e+o[++u]])>i)if((v=t[e+o[++u]])>i)l=3;else{if(!(v<a))return void(r[e]=0);l=6}else if((v=t[e+o[++u]])>i)l=7;else{if(!(v<a))return void(r[e]=0);l=2}}else if((_=t[e+o[++u]])>i)if((v=t[e+o[++u]])>i)l=3;else{if(!(v<a))return void(r[e]=0);l=6}else{if(!(_<a))return void(r[e]=0);if((v=t[e+o[++u]])>i)l=7;else{if(!(v<a))return void(r[e]=0);l=2}}else{if((d=t[e+o[u]])>i)return void(r[e]=0);if((_=t[e+o[++u]])>i)return void(r[e]=0);if((v=t[e+o[++u]])>i)return void(r[e]=0);l=1}else{if((d=t[e+o[u]])<a)return void(r[e]=0);if((_=t[e+o[++u]])<a)return void(r[e]=0);if((v=t[e+o[++u]])<a)return void(r[e]=0);l=0}for(h=1;h<=f;h++)switch(c=t[e+o[h]],l){case 0:if(c>i){if(_=v,(v=t[e+o[++u]])<a)return void(r[e]=0);s-=c+_,l=0;break}if(c<a){if(_>i)return void(r[e]=0);if(v>i)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])>i)return void(r[e]=0);s-=c+_,l=8;break}if(_<=i)return void(r[e]=0);if(v<=i)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])>i){s-=c+_,l=3;break}if(v<a){s-=c+_,l=6;break}return void(r[e]=0);case 1:if(c<a){if(_=v,(v=t[e+o[++u]])>i)return void(r[e]=0);s-=c+_,l=1;break}if(c>i){if(_<a)return void(r[e]=0);if(v<a)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])<a)return void(r[e]=0);s-=c+_,l=9;break}if(_>=a)return void(r[e]=0);if(v>=a)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])<a){s-=c+_,l=2;break}if(v>i){s-=c+_,l=7;break}return void(r[e]=0);case 2:if(c>i)return void(r[e]=0);if(_=v,v=t[e+o[++u]],c<a){if(v>i)return void(r[e]=0);s-=c+_,l=4;break}if(v>i){s-=c+_,l=7;break}if(v<a){s-=c+_,l=2;break}return void(r[e]=0);case 3:if(c<a)return void(r[e]=0);if(_=v,v=t[e+o[++u]],c>i){if(v<a)return void(r[e]=0);s-=c+_,l=5;break}if(v>i){s-=c+_,l=3;break}if(v<a){s-=c+_,l=6;break}return void(r[e]=0);case 4:if(c>i)return void(r[e]=0);if(c<a){if(_=v,(v=t[e+o[++u]])>i)return void(r[e]=0);s-=c+_,l=1;break}if(v>=a)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])<a){s-=c+_,l=2;break}if(v>i){s-=c+_,l=7;break}return void(r[e]=0);case 5:if(c<a)return void(r[e]=0);if(c>i){if(_=v,(v=t[e+o[++u]])<a)return void(r[e]=0);s-=c+_,l=0;break}if(v<=i)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])>i){s-=c+_,l=3;break}if(v<a){s-=c+_,l=6;break}return void(r[e]=0);case 7:if(c>i)return void(r[e]=0);if(c<a)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])>i){s-=c+_,l=3;break}if(v<a){s-=c+_,l=6;break}return void(r[e]=0);case 6:if(c>i)return void(r[e]=0);if(c<a)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])<a){s-=c+_,l=2;break}if(v>i){s-=c+_,l=7;break}return void(r[e]=0);case 8:if(c>i){if(v<a)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])<a)return void(r[e]=0);s-=c+_,l=9;break}if(c<a){if(_=v,(v=t[e+o[++u]])>i)return void(r[e]=0);s-=c+_,l=1;break}return void(r[e]=0);case 9:if(c<a){if(v>i)return void(r[e]=0);if(_=v,(v=t[e+o[++u]])>i)return void(r[e]=0);s-=c+_,l=8;break}if(c>i){if(_=v,(v=t[e+o[++u]])<a)return void(r[e]=0);s-=c+_,l=0;break}return void(r[e]=0)}r[e]=s+n*t[e]}var T=h((function t(e,r,a){f(this,t),u(this,"dirs",void 0),u(this,"dirs_count",void 0),u(this,"scores",void 0),u(this,"radius",void 0),this.dirs=new Int32Array(1024),this.dirs_count=0|function(t,e,r){var a,i,o=0;for(a=r,i=0;i<a;i++,o++)a=Math.sqrt(r*r-i*i)+.5|0,e[o]=a+t*i;for(a--;a<i&&a>=0;a--,o++)i=Math.sqrt(r*r-a*a)+.5|0,e[o]=a+t*i;for(;-a<i;a--,o++)i=Math.sqrt(r*r-a*a)+.5|0,e[o]=a+t*i;for(i--;i>=0;i--,o++)a=-Math.sqrt(r*r-i*i)-.5|0,e[o]=a+t*i;for(;i>a;i--,o++)a=-Math.sqrt(r*r-i*i)-.5|0,e[o]=a+t*i;for(a++;a<=0;a++,o++)i=-Math.sqrt(r*r-a*a)-.5|0,e[o]=a+t*i;for(;a<-i;a++,o++)i=-Math.sqrt(r*r-a*a)-.5|0,e[o]=a+t*i;for(i++;i<0;i++,o++)a=Math.sqrt(r*r-i*i)+.5|0,e[o]=a+t*i;return e[o]=e[0],e[o+1]=e[1],o}(e,this.dirs,a),this.scores=new Int32Array(e*r),this.radius=0|a})),S=function(){return h((function t(){f(this,t),u(this,"level_tables",void 0),u(this,"tau",void 0),this.level_tables=[],this.tau=7}),[{key:"init",value:function(t,e,r){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;r=Math.min(r,7),r=Math.max(r,3);for(var i=0;i<a;++i)this.level_tables[i]=new T(t>>i,e>>i,r)}},{key:"detect",value:function(t,e){var r,a,i,o,f,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:4,s=this.level_tables[0],h=0|s.radius,u=h-1|0,c=s.dirs,d=0|s.dirs_count,_=d>>1,v=t.data,l=0|t.cols,b=0|t.rows,p=l>>1,y=s.scores,m=0,M=0,w=0,k=0,g=0,x=0,A=0,z=0,O=0|this.tau,T=0,S=0|Math.max(h+1,n),j=0|Math.max(h+1,n),B=0|Math.min(l-h-2,l-n),R=0|Math.min(b-h-2,b-n);for(w=j*l+S|0,M=j;M<R;++M,w+=l)for(m=S,k=w;m<B;++m,++k)g=v[k]+O,(x=v[k]-O)<v[k+h]&&v[k+h]<g&&x<v[k-h]&&v[k-h]<g?y[k]=0:C(v,k,y,x,g,c,_,d);for(w=j*l+S|0,M=j;M<R;++M,w+=l)for(m=S,k=w;m<B;++m,++k)z=y[k],(A=Math.abs(z))<5?(++m,++k):(o=l,f=void 0,f=0,0!=(a=y)[(i=k)+1]&&f++,0!=a[i-1]&&f++,0!=a[i+o]&&f++,0!=a[i+o+1]&&f++,0!=a[i+o-1]&&f++,0!=a[i-o]&&f++,0!=a[i-o+1]&&f++,0!=a[i-o-1]&&f++,f>=3&&q(y,k,z,p,h)&&((r=e[T]).x=m,r.y=M,r.score=A,++T,m+=u,k+=u));return T}}])}();function j(t,e,r,a,i,o,f){var n=-2*t[e]+t[e+a]+t[e-a],s=-2*t[e]+t[e+i]+t[e-i],h=t[e+o]+t[e-o]-t[e+f]-t[e-f],u=0|Math.sqrt((n-s)*(n-s)+4*h*h);return Math.min(Math.abs(r-u),Math.abs(-(r+u)))}var B,R=function(){return h((function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.5,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.5,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.99;f(this,t),u(this,"size",void 0),u(this,"thresh",void 0),u(this,"eps",void 0),u(this,"prob",void 0),this.size=e,this.thresh=r,this.eps=a,this.prob=i}),[{key:"update_iters",value:function(t,e){var r=Math.log(1-this.prob),a=Math.log(1-Math.pow(1-t,this.size));return 0|(a>=0||-r>=e*-a?e:Math.round(r/a))}}])}();function I(t,e,i){return e=a(e),function(t,e){if(e&&("object"==r(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,L()?Reflect.construct(e,i||[],a(t).constructor):e.apply(t,i))}function L(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(L=function(){return!!t})()}var P=function(){return h((function t(){f(this,t),u(this,"dt",void 0),u(this,"cache",void 0),this.dt=new c,this.cache=new v,this.cache.allocate(30,2560)}),[{key:"get_data_type",value:function(t){return this.dt._get_data_type(t)}},{key:"get_channel",value:function(t){return this.dt._get_channel(t)}},{key:"get_data_type_size",value:function(t){return this.dt._get_data_type_size(t)}}])}();B=P,u(P,"cache",void 0),u(P,"fast_corners",void 0),u(P,"imgproc",void 0),u(P,"linalg",void 0),u(P,"math",void 0),u(P,"matmath",void 0),u(P,"matrix_t",void 0),u(P,"pyramid_t",void 0),u(P,"transform",void 0),u(P,"keypoint_t",void 0),u(P,"yape",void 0),u(P,"yape06",void 0),u(P,"ransac_params_t",void 0),u(P,"affine2d",void 0),u(P,"homography2d",void 0),u(P,"motion_estimator",void 0),u(P,"optical_flow_lk",void 0),u(P,"orb",void 0),u(P,"VERSION","0.7.5"),u(P,"EPSILON",m),u(P,"FLT_MIN",1e-37),u(P,"U8_t",M),u(P,"S32_t",w),u(P,"F32_t",k),u(P,"S64_t",2048),u(P,"F64_t",4096),u(P,"C1_t",1),u(P,"C2_t",2),u(P,"C3_t",3),u(P,"C4_t",4),u(P,"COLOR_RGBA2GRAY",0),u(P,"COLOR_RGB2GRAY",1),u(P,"COLOR_BGRA2GRAY",2),u(P,"COLOR_BGR2GRAY",3),u(P,"BOX_BLUR_NOSCALE",1),u(P,"SVD_U_T",1),u(P,"SVD_V_T",2),u(P,"U8C1_t",B.U8_t|B.C1_t),u(P,"U8C3_t",B.U8_t|B.C3_t),u(P,"U8C4_t",B.U8_t|B.C4_t),u(P,"F32C1_t",B.F32_t|B.C1_t),u(P,"F32C2_t",B.F32_t|B.C2_t),u(P,"S32C1_t",B.S32_t|B.C1_t),u(P,"S32C2_t",B.S32_t|B.C2_t);var E=function(t){function e(){var t;return f(this,e),u(t=I(this,e),"T0",void 0),u(t,"T1",void 0),u(t,"AtA",void 0),u(t,"AtB",void 0),t.T0=new g(3,3,1025),t.T1=new g(3,3,1025),t.AtA=new g(6,6,1025),t.AtB=new g(6,1,1025),t}return o(e,t),h(e,[{key:"sqr",value:function(t){return t*t}},{key:"iso_normalize_points",value:function(t,e,r,a,i){for(var o,f,n=0,s=0,h=0,u=0,c=0,d=0,_=0,v=0,l=0;n<i;++n)s+=t[n].x,h+=t[n].y,c+=e[n].x,d+=e[n].y;for(s/=i,h/=i,c/=i,d/=i,n=0;n<i;++n)v=t[n].x-s,l=t[n].y-h,u+=Math.sqrt(v*v+l*l),v=e[n].x-c,l=e[n].y-d,_+=Math.sqrt(v*v+l*l);u/=i,_/=i,o=Math.SQRT2/u,f=Math.SQRT2/_,r[0]=r[4]=o,r[2]=-s*o,r[5]=-h*o,r[1]=r[3]=r[6]=r[7]=0,r[8]=1,a[0]=a[4]=f,a[2]=-c*f,a[5]=-d*f,a[1]=a[3]=a[6]=a[7]=0,a[8]=1}},{key:"have_collinear_points",value:function(t,e){for(var r=0,a=0,i=e-1|0,o=0,f=0,n=0,s=0;r<i;++r)for(o=t[r].x-t[i].x,f=t[r].y-t[i].y,a=0;a<r;++a)if(n=t[a].x-t[i].x,s=t[a].y-t[i].y,Math.abs(n*f-s*o)<=m*(Math.abs(o)+Math.abs(f)+Math.abs(n)+Math.abs(s)))return!0;return!1}}])}(P),U=function(t){function e(){return f(this,e),I(this,e)}return o(e,t),h(e,[{key:"run",value:function(t,e,r,a){var i,o,f=0,n=0,s=1|r.type,h=r.data,u=this.T0.data,c=this.T1.data,d=0,_=0,v=new y,l=new P.linalg;this.iso_normalize_points(t,e,u,c,a);for(var b=this.cache.get_buffer(2*a*6<<3),p=this.cache.get_buffer(2*a<<3),m=new g(6,2*a,s,b.data),M=new g(1,2*a,s,p.data),w=m.data,k=M.data;f<a;++f)i=t[f],o=e[f],d=u[0]*i.x+u[1]*i.y+u[2],_=u[3]*i.x+u[4]*i.y+u[5],w[n=2*f*6]=d,w[n+1]=_,w[n+2]=1,w[n+3]=0,w[n+4]=0,w[n+5]=0,w[n+=6]=0,w[n+1]=0,w[n+2]=0,w[n+3]=d,w[n+4]=_,w[n+5]=1,k[f<<1]=c[0]*o.x+c[1]*o.y+c[2],k[1+(f<<1)]=c[3]*o.x+c[4]*o.y+c[5];return v.multiply_AtA(this.AtA,m),v.multiply_AtB(this.AtB,m,M),l.lu_solve(this.AtA,this.AtB),h[0]=this.AtB.data[0],h[1]=this.AtB.data[1],h[2]=this.AtB.data[2],h[3]=this.AtB.data[3],h[4]=this.AtB.data[4],h[5]=this.AtB.data[5],h[6]=0,h[7]=0,h[8]=1,v.invert_3x3(this.T1,this.T1),v.multiply_3x3(r,this.T1,r),v.multiply_3x3(r,r,this.T0),this.cache.put_buffer(b),this.cache.put_buffer(p),1}}])}(E),F=function(t){function e(){var t;return f(this,e),u(t=I(this,e),"mLtL",void 0),u(t,"Evec",void 0),t.mLtL=new g(9,9,1025),t.Evec=new g(9,9,1025),t}return o(e,t),h(e,[{key:"run",value:function(t,e,r,a){for(var i=0,o=0,f=r.data,n=this.T0.data,s=this.T1.data,h=this.mLtL.data,u=this.Evec.data,c=0,d=0,_=0,v=0,l=new P.linalg,b=new y,p=0,M=0,w=0,k=0,g=0,x=0,A=0,z=0;i<a;++i)w+=e[i].x,k+=e[i].y,A+=t[i].x,z+=t[i].y;for(w/=a,k/=a,A/=a,z/=a,i=0;i<a;++i)p+=Math.abs(e[i].x-w),M+=Math.abs(e[i].y-k),g+=Math.abs(t[i].x-A),x+=Math.abs(t[i].y-z);if(Math.abs(p)<m||Math.abs(M)<m||Math.abs(g)<m||Math.abs(x)<m)return 0;for(p=a/p,M=a/M,g=a/g,x=a/x,n[0]=g,n[1]=0,n[2]=-A*g,n[3]=0,n[4]=x,n[5]=-z*x,n[6]=0,n[7]=0,n[8]=1,s[0]=1/p,s[1]=0,s[2]=w,s[3]=0,s[4]=1/M,s[5]=k,s[6]=0,s[7]=0,s[8]=1,i=81;--i>=0;)h[i]=0;for(i=0;i<a;++i)c=(e[i].x-w)*p,d=(e[i].y-k)*M,_=(t[i].x-A)*g,v=(t[i].y-z)*x,h[0]+=_*_,h[1]+=_*v,h[2]+=_,h[6]+=_*-c*_,h[7]+=_*-c*v,h[8]+=_*-c,h[10]+=v*v,h[11]+=v,h[15]+=v*-c*_,h[16]+=v*-c*v,h[17]+=v*-c,h[20]+=1,h[24]+=-c*_,h[25]+=-c*v,h[26]+=-c,h[30]+=_*_,h[31]+=_*v,h[32]+=_,h[33]+=_*-d*_,h[34]+=_*-d*v,h[35]+=_*-d,h[40]+=v*v,h[41]+=v,h[42]+=v*-d*_,h[43]+=v*-d*v,h[44]+=v*-d,h[50]+=1,h[51]+=-d*_,h[52]+=-d*v,h[53]+=-d,h[60]+=-c*_*-c*_+-d*_*-d*_,h[61]+=-c*_*-c*v+-d*_*-d*v,h[62]+=-c*_*-c+-d*_*-d,h[70]+=-c*v*-c*v+-d*v*-d*v,h[71]+=-c*v*-c+-d*v*-d,h[80]+=-c*-c+-d*-d;for(i=0;i<9;++i)for(o=0;o<i;++o)h[9*i+o]=h[9*o+i];return l.eigenVV(this.mLtL,this.Evec),f[0]=u[72],f[1]=u[73],f[2]=u[74],f[3]=u[75],f[4]=u[76],f[5]=u[77],f[6]=u[78],f[7]=u[79],f[8]=u[80],b.multiply_3x3(r,this.T1,r),b.multiply_3x3(r,r,this.T0),c=1/f[8],f[0]*=c,f[1]*=c,f[2]*=c,f[3]*=c,f[4]*=c,f[5]*=c,f[6]*=c,f[7]*=c,f[8]=1,1}},{key:"error",value:function(t,e,r,a,i){for(var o,f,n=0,s=0,h=0,u=0,c=r.data;n<i;++n)o=t[n],f=e[n],s=1/(c[6]*o.x+c[7]*o.y+1),h=(c[0]*o.x+c[1]*o.y+c[2])*s-f.x,u=(c[3]*o.x+c[4]*o.y+c[5])*s-f.y,a[n]=h*h+u*u}},{key:"check_subset",value:function(t,e,r){var a=new y;if(4==r){var i=0,o=t[0],f=t[1],n=t[2],s=t[3],h=e[0],u=e[1],c=e[2],d=e[3],_=o.x,v=o.y,l=f.x,b=f.y,p=n.x,m=n.y,M=h.x,w=h.y,k=u.x,g=u.y,x=c.x,A=c.y,z=a.determinant_3x3(_,v,1,l,b,1,p,m,1),O=a.determinant_3x3(M,w,1,k,g,1,x,A,1);if(z*O<0&&i++,_=f.x,v=f.y,l=n.x,b=n.y,p=s.x,m=s.y,M=u.x,w=u.y,k=c.x,g=c.y,x=d.x,A=d.y,(z=a.determinant_3x3(_,v,1,l,b,1,p,m,1))*(O=a.determinant_3x3(M,w,1,k,g,1,x,A,1))<0&&i++,_=o.x,v=o.y,l=n.x,b=n.y,p=s.x,m=s.y,M=h.x,w=h.y,k=c.x,g=c.y,x=d.x,A=d.y,(z=a.determinant_3x3(_,v,1,l,b,1,p,m,1))*(O=a.determinant_3x3(M,w,1,k,g,1,x,A,1))<0&&i++,_=o.x,v=o.y,l=f.x,b=f.y,p=s.x,m=s.y,M=h.x,w=h.y,k=u.x,g=u.y,x=d.x,A=d.y,(z=a.determinant_3x3(_,v,1,l,b,1,p,m,1))*(O=a.determinant_3x3(M,w,1,k,g,1,x,A,1))<0&&i++,0!=i&&4!=i)return!1}return!0}}])}(E);P.cache=v,P.pyramid_t=function(t){function e(t){var r;f(this,e),u(r=I(this,e),"levels",void 0),u(r,"data",void 0),u(r,"pyrdown",void 0),r.levels=0|t,r.data=new Array(t);var a=new P.imgproc;return r.pyrdown=a.pyrdown,r}return o(e,t),h(e,[{key:"allocate",value:function(t,e,r){for(var a=this.levels;--a>=0;)this.data[a]=new g(t>>a,e>>a,r)}},{key:"build",value:function(t,e){void 0===e&&(e=!0);var r=2,a=t,i=this.data[0];if(!e)for(var o=t.cols*t.rows;--o>=0;)i.data[o]=t.data[o];for(i=this.data[1],this.pyrdown(a,i);r<this.levels;++r)a=i,i=this.data[r],this.pyrdown(a,i)}}])}(P),P.transform=x,P.matrix_t=g,P.keypoint_t=A,P.fast_corners=function(t){function e(){var t;return f(this,e),u(t=I(this,e),"offsets16",void 0),u(t,"_threshold",void 0),u(t,"threshold_tab",void 0),u(t,"pixel_off",void 0),u(t,"score_diff",void 0),t.offsets16=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]),t.threshold_tab=new Uint8Array(512),t._threshold=20,t.pixel_off=new Int32Array(25),t.score_diff=new Int32Array(25),t}return o(e,t),h(e,[{key:"set_threshold",value:function(t){this._threshold=Math.min(Math.max(t,0),255);for(var e=-255;e<=255;++e)this.threshold_tab[e+255]=e<-this._threshold?1:e>this._threshold?2:0;return this._threshold}},{key:"detect",value:function(t,e,r){void 0===r&&(r=3);var a,i=t.data,o=t.cols,f=t.rows,n=0,s=0,h=0,u=0,c=0,d=this.cache.get_buffer(3*o),_=this.cache.get_buffer(3*(o+1)<<2),v=d.u8,l=_.i32,b=this.pixel_off,y=this.score_diff,m=Math.max(3,r),M=Math.min(f-2,f-r),w=Math.max(3,r),k=Math.min(o-3,o-r),g=0,x=0,A=p,z=this.threshold_tab,O=this._threshold,q=0,C=0,T=0,S=0,j=0,B=0,R=0,I=0,L=0,P=0,E=0,U=0;this._cmp_offsets(b,o,16);var F=b[0],V=b[1],G=b[2],N=b[3],D=b[4],J=b[5],Y=b[6],H=b[7],Q=b[8],X=b[9],K=b[10],W=b[11],Z=b[12],$=b[13],tt=b[14],et=b[15];for(n=0;n<3*o;++n)v[n]=0;for(n=m;n<M;++n){for(R=n*o+w|0,B=(c=(n-3)%3)*o|0,j=c*(o+1)|0,s=0;s<o;++s)v[B+s]=0;if(S=0,n<M-1)for(s=w;s<k;++s,++R)if(0!=(T=z[(C=255-(q=i[R]))+i[R+F]]|z[C+i[R+Q]])&&(T&=z[C+i[R+G]]|z[C+i[R+K]],T&=z[C+i[R+D]]|z[C+i[R+Z]],0!=(T&=z[C+i[R+Y]]|z[C+i[R+tt]]))){if(T&=z[C+i[R+V]]|z[C+i[R+X]],T&=z[C+i[R+N]]|z[C+i[R+W]],T&=z[C+i[R+J]]|z[C+i[R+$]],1&(T&=z[C+i[R+H]]|z[C+i[R+et]]))for(u=q-O,g=0,h=0;h<25;++h)if(i[R+b[h]]<u){if(++g>8){l[j+ ++S]=s,v[B+s]=A(i,R,b,y,O);break}}else g=0;if(2&T)for(u=q+O,g=0,h=0;h<25;++h)if(i[R+b[h]]>u){if(++g>8){l[j+ ++S]=s,v[B+s]=A(i,R,b,y,O);break}}else g=0}if(l[j+o]=S,n!=m)for(I=(c=(n-4+3)%3)*o|0,j=c*(o+1)|0,L=(c=(n-5+3)%3)*o|0,S=l[j+o],h=0;h<S;++h)P=(s=l[j+h])+1|0,E=s-1|0,(U=v[I+s])>v[I+P]&&U>v[I+E]&&U>v[L+E]&&U>v[L+s]&&U>v[L+P]&&U>v[B+E]&&U>v[B+s]&&U>v[B+P]&&((a=e[x]).x=s,a.y=n-1,a.score=U,x++)}return this.cache.put_buffer(d),this.cache.put_buffer(_),x}},{key:"_cmp_offsets",value:function(t,e,r){for(var a=0,i=this.offsets16;a<r;++a)t[a]=i[a<<1]+i[1+(a<<1)]*e;for(;a<25;++a)t[a]=t[a-r]}}])}(P),P.imgproc=function(t){function e(){return f(this,e),I(this,e)}return o(e,t),h(e,[{key:"grayscale",value:function(t,e,r,a,i){void 0===i&&(i=0);var o=0,f=0,n=0,s=0,h=0,u=0,c=4899,d=9617,_=1868,v=4;2!=i&&3!=i||(c=1868,_=4899),1!=i&&3!=i||(v=3);var l=v<<1,b=3*v|0;a.resize(e,r,1);var p=a.data;for(f=0;f<r;++f,s+=e,n+=e*v){for(o=0,h=n,u=s;o<=e-4;o+=4,h+=v<<2,u+=4)p[u]=t[h]*c+t[h+1]*d+t[h+2]*_+8192>>14,p[u+1]=t[h+v]*c+t[h+v+1]*d+t[h+v+2]*_+8192>>14,p[u+2]=t[h+l]*c+t[h+l+1]*d+t[h+l+2]*_+8192>>14,p[u+3]=t[h+b]*c+t[h+b+1]*d+t[h+b+2]*_+8192>>14;for(;o<e;++o,++u,h+=v)p[u]=t[h]*c+t[h+1]*d+t[h+2]*_+8192>>14}}},{key:"resample",value:function(t,e,r,a){var i=t.rows,o=t.cols;i>a&&o>r&&(e.resize(r,a,t.channel),t.type&M&&e.type&M&&i*o/(a*r)<256?function(t,e,r,a,i){for(var o=0,f=t.channel,n=t.cols,s=t.rows,h=t.data,u=e.data,c=n/a,d=s/i,_=c*d*65536|0,v=0,l=0,b=0,p=0,y=0,m=0,M=0,w=0,k=0,g=0,x=0,A=0,z=0,O=0,q=0,C=0,T=r.get_buffer(a*f<<2),S=r.get_buffer(a*f<<2),j=r.get_buffer(2*n*3<<2),B=T.i32,R=S.i32,I=j.i32;v<a;v++){for(y=1+(k=v*c)-1e-6|0,m=0|(g=k+c),y=Math.min(y,n-1),m=Math.min(m,n-1),y>k&&(I[w++]=v*f|0,I[w++]=(y-1)*f|0,I[w++]=256*(y-k)|0,o++),b=y;b<m;b++)o++,I[w++]=v*f|0,I[w++]=b*f|0,I[w++]=256;g-m>.001&&(o++,I[w++]=v*f|0,I[w++]=m*f|0,I[w++]=256*(g-m)|0)}for(v=0;v<a*f;v++)B[v]=R[v]=0;for(l=0,p=0;p<s;p++){for(x=n*p,w=0;w<o;w++)for(z=I[3*w],y=I[3*w+1],O=I[3*w+2],M=0;M<f;M++)B[z+M]+=h[x+y+M]*O;if((l+1)*d<=p+1||p==s-1){if(C=256-(q=256*Math.max(p+1-(l+1)*d,0)|0),A=a*l,q<=0)for(v=0;v<a*f;v++)u[A+v]=Math.min(Math.max((R[v]+256*B[v])/_,0),255),R[v]=B[v]=0;else for(v=0;v<a*f;v++)u[A+v]=Math.min(Math.max((R[v]+B[v]*C)/_,0),255),R[v]=B[v]*q,B[v]=0;l++}else for(v=0;v<a*f;v++)R[v]+=256*B[v],B[v]=0}r.put_buffer(S),r.put_buffer(T),r.put_buffer(j)}(t,e,this.cache,r,a):function(t,e,r,a,i){for(var o=0,f=t.channel,n=t.cols,s=t.rows,h=t.data,u=e.data,c=n/a,d=s/i,_=1/(c*d),v=0,l=0,b=0,p=0,y=0,m=0,M=0,w=0,k=0,g=0,x=0,A=0,z=0,O=0,q=0,C=0,T=r.get_buffer(a*f<<2),S=r.get_buffer(a*f<<2),j=r.get_buffer(2*n*3<<2),B=T.f32,R=S.f32,I=j.f32;v<a;v++){for(y=1+(k=v*c)-1e-6|0,m=0|(g=k+c),y=Math.min(y,n-1),m=Math.min(m,n-1),y>k&&(o++,I[w++]=(y-1)*f|0,I[w++]=v*f|0,I[w++]=(y-k)*_),b=y;b<m;b++)o++,I[w++]=b*f|0,I[w++]=v*f|0,I[w++]=_;g-m>.001&&(o++,I[w++]=m*f|0,I[w++]=v*f|0,I[w++]=(g-m)*_)}for(v=0;v<a*f;v++)B[v]=R[v]=0;for(l=0,p=0;p<s;p++){for(x=n*p,w=0;w<o;w++)for(y=0|I[3*w],z=0|I[3*w+1],O=I[3*w+2],M=0;M<f;M++)B[z+M]+=h[x+y+M]*O;if((l+1)*d<=p+1||p==s-1){if(C=1-(q=Math.max(p+1-(l+1)*d,0)),A=a*l,Math.abs(q)<.001)for(v=0;v<a*f;v++)u[A+v]=R[v]+B[v],R[v]=B[v]=0;else for(v=0;v<a*f;v++)u[A+v]=R[v]+B[v]*C,R[v]=B[v]*q,B[v]=0;l++}else for(v=0;v<a*f;v++)R[v]+=B[v],B[v]=0}r.put_buffer(S),r.put_buffer(T),r.put_buffer(j)}(t,e,this.cache,r,a))}},{key:"box_blur_gray",value:function(t,e,r,a){void 0===a&&(a=0);var i=t.cols,o=t.rows,f=o<<1,n=i<<1,s=0,h=0,u=0,c=0,d=1+(r<<1)|0,_=r+1|0,v=_+1|0,l=1&a?1:1/(d*d),b=this.cache.get_buffer(i*o<<2),p=0,y=0,m=0,M=0,w=0,k=b.i32,g=t.data,x=0;for(e.resize(i,o,t.channel),u=0;u<o;++u){for(y=u,p=_*g[m],s=m+1|0,c=m+r|0;s<=c;++s)p+=g[s];for(M=m+_|0,x=g[w=m],h=0;h<r;++h,y+=o)k[y]=p,p+=g[M]-x,M++;for(;h<i-v;h+=2,y+=f)k[y]=p,p+=g[M]-g[w],k[y+o]=p,p+=g[M+1]-g[w+1],M+=2,w+=2;for(;h<i-_;++h,y+=o)k[y]=p,p+=g[M]-g[w],M++,w++;for(x=g[M-1];h<i;++h,y+=o)k[y]=p,p+=x-g[w],w++;m+=i}if(m=0,g=e.data,1==l)for(u=0;u<i;++u){for(y=u,p=_*k[m],s=m+1|0,c=m+r|0;s<=c;++s)p+=k[s];for(M=m+_,x=k[w=m],h=0;h<r;++h,y+=i)g[y]=p,p+=k[M]-x,M++;for(;h<o-v;h+=2,y+=n)g[y]=p,p+=k[M]-k[w],g[y+i]=p,p+=k[M+1]-k[w+1],M+=2,w+=2;for(;h<o-_;++h,y+=i)g[y]=p,p+=k[M]-k[w],M++,w++;for(x=k[M-1];h<o;++h,y+=i)g[y]=p,p+=x-k[w],w++;m+=o}else for(u=0;u<i;++u){for(y=u,p=_*k[m],s=m+1|0,c=m+r|0;s<=c;++s)p+=k[s];for(M=m+_,x=k[w=m],h=0;h<r;++h,y+=i)g[y]=p*l,p+=k[M]-x,M++;for(;h<o-v;h+=2,y+=n)g[y]=p*l,p+=k[M]-k[w],g[y+i]=p*l,p+=k[M+1]-k[w+1],M+=2,w+=2;for(;h<o-_;++h,y+=i)g[y]=p*l,p+=k[M]-k[w],M++,w++;for(x=k[M-1];h<o;++h,y+=i)g[y]=p*l,p+=x-k[w],w++;m+=o}this.cache.put_buffer(b)}},{key:"gaussian_blur",value:function(t,e,r,a){var i=new P.math;void 0===a&&(a=0),void 0===r&&(r=0);var o=(r=0==r?2*Math.max(1,4*a+1-1e-8)+1|0:r)>>1,f=t.cols,n=t.rows,s=t.type,h=s&M;e.resize(f,n,t.channel);var u,c,d=t.data,_=e.data,v=r+Math.max(n,f)|0,l=this.cache.get_buffer(v<<2),b=this.cache.get_buffer(r<<2);h?(u=l.i32,c=b.i32):s&w?(u=l.i32,c=b.f32):(u=l.f32,c=b.f32),i.get_gaussian_kernel(r,a,c,s),h?function(t,e,r,a,i,o,f,n){for(var s=0,h=0,u=0,c=0,d=0,_=0,v=0,l=0,b=0,p=o[0],y=0,m=a<<1,M=3*a,w=a<<2;s<i;++s){for(_=e[c],h=0;h<n;++h)t[h]=_;for(h=0;h<=a-2;h+=2)t[h+n]=e[c+h],t[h+n+1]=e[c+h+1];for(;h<a;++h)t[h+n]=e[c+h];for(_=e[c+a-1],h=a;h<n+a;++h)t[h+n]=_;for(h=0;h<=a-4;h+=4){for(_=t[h]*p,v=t[h+1]*p,l=t[h+2]*p,b=t[h+3]*p,u=1;u<f;++u)y=o[u],_+=t[u+h]*y,v+=t[u+h+1]*y,l+=t[u+h+2]*y,b+=t[u+h+3]*y;r[d+h]=Math.min(_>>8,255),r[d+h+1]=Math.min(v>>8,255),r[d+h+2]=Math.min(l>>8,255),r[d+h+3]=Math.min(b>>8,255)}for(;h<a;++h){for(_=t[h]*p,u=1;u<f;++u)_+=t[u+h]*o[u];r[d+h]=Math.min(_>>8,255)}c+=a,d+=a}for(s=0;s<a;++s){for(_=r[s],h=0;h<n;++h)t[h]=_;for(u=s,h=0;h<=i-2;h+=2,u+=m)t[h+n]=r[u],t[h+n+1]=r[u+a];for(;h<i;++h,u+=a)t[h+n]=r[u];for(_=r[(i-1)*a+s],h=i;h<n+i;++h)t[h+n]=_;for(d=s,h=0;h<=i-4;h+=4,d+=w){for(_=t[h]*p,v=t[h+1]*p,l=t[h+2]*p,b=t[h+3]*p,u=1;u<f;++u)y=o[u],_+=t[u+h]*y,v+=t[u+h+1]*y,l+=t[u+h+2]*y,b+=t[u+h+3]*y;r[d]=Math.min(_>>8,255),r[d+a]=Math.min(v>>8,255),r[d+m]=Math.min(l>>8,255),r[d+M]=Math.min(b>>8,255)}for(;h<i;++h,d+=a){for(_=t[h]*p,u=1;u<f;++u)_+=t[u+h]*o[u];r[d]=Math.min(_>>8,255)}}}(u,d,_,f,n,c,r,o):function(t,e,r,a,i,o,f,n){for(var s=0,h=0,u=0,c=0,d=0,_=0,v=0,l=0,b=0,p=o[0],y=0,m=a<<1,M=3*a,w=a<<2;s<i;++s){for(_=e[c],h=0;h<n;++h)t[h]=_;for(h=0;h<=a-2;h+=2)t[h+n]=e[c+h],t[h+n+1]=e[c+h+1];for(;h<a;++h)t[h+n]=e[c+h];for(_=e[c+a-1],h=a;h<n+a;++h)t[h+n]=_;for(h=0;h<=a-4;h+=4){for(_=t[h]*p,v=t[h+1]*p,l=t[h+2]*p,b=t[h+3]*p,u=1;u<f;++u)y=o[u],_+=t[u+h]*y,v+=t[u+h+1]*y,l+=t[u+h+2]*y,b+=t[u+h+3]*y;r[d+h]=_,r[d+h+1]=v,r[d+h+2]=l,r[d+h+3]=b}for(;h<a;++h){for(_=t[h]*p,u=1;u<f;++u)_+=t[u+h]*o[u];r[d+h]=_}c+=a,d+=a}for(s=0;s<a;++s){for(_=r[s],h=0;h<n;++h)t[h]=_;for(u=s,h=0;h<=i-2;h+=2,u+=m)t[h+n]=r[u],t[h+n+1]=r[u+a];for(;h<i;++h,u+=a)t[h+n]=r[u];for(_=r[(i-1)*a+s],h=i;h<n+i;++h)t[h+n]=_;for(d=s,h=0;h<=i-4;h+=4,d+=w){for(_=t[h]*p,v=t[h+1]*p,l=t[h+2]*p,b=t[h+3]*p,u=1;u<f;++u)y=o[u],_+=t[u+h]*y,v+=t[u+h+1]*y,l+=t[u+h+2]*y,b+=t[u+h+3]*y;r[d]=_,r[d+a]=v,r[d+m]=l,r[d+M]=b}for(;h<i;++h,d+=a){for(_=t[h]*p,u=1;u<f;++u)_+=t[u+h]*o[u];r[d]=_}}}(u,d,_,f,n,c,r,o),this.cache.put_buffer(l),this.cache.put_buffer(b)}},{key:"hough_transform",value:function(t,e,r,a){for(var i,o,f=t.data,n=t.cols,s=t.rows,h=n,u=Math.PI,c=Math.round((u-0)/r),d=Math.round((2*(n+s)+1)/e),_=1/e,v=new Int32Array((c+2)*(d+2)),l=new Float32Array(c),b=new Float32Array(c),p=0,y=0;p<c;p++)l[p]=Math.sin(y)*_,b[p]=Math.cos(y)*_,y+=r;for(o=0;o<s;o++)for(var m=0;m<n;m++)if(0!=f[o*h+m])for(p=0;p<c;p++)i=Math.round(m*b[p]+o*l[p]),v[(p+1)*(d+2)+(i+=(d-1)/2)+1]+=1;var M=[];for(i=0;i<d;i++)for(p=0;p<c;p++){var w=(p+1)*(d+2)+i+1;v[w]>a&&v[w]>v[w-1]&&v[w]>=v[w+1]&&v[w]>v[w-d-2]&&v[w]>=v[w+d+2]&&M.push(w)}M.sort((function(t,e){return v[t]>v[e]||v[t]==v[e]&&t<e}));var k=Math.min(c*d,M.length),g=1/(d+2),x=new Array;for(o=0;o<k;o++){var A=M[o],z=((i=A-(1+(p=Math.floor(A*g)-1))*(d+2)-1)-.5*(d-1))*e,O=p*r;x.push([z,O])}return x}},{key:"pyrdown",value:function(t,e,r,a){void 0===r&&(r=0),void 0===a&&(a=0);var i=t.cols,o=i>>1,f=t.rows>>1,n=o-(r<<1),s=f-(a<<1),h=0,u=0,c=r+a*i,d=0,_=0,v=0;e.resize(o,f,t.channel);var l=t.data,b=e.data;for(u=0;u<s;++u){for(d=c,v=_,h=0;h<=n-2;h+=2,v+=2,d+=4)b[v]=l[d]+l[d+1]+l[d+i]+l[d+i+1]+2>>2,b[v+1]=l[d+2]+l[d+3]+l[d+i+2]+l[d+i+3]+2>>2;for(;h<n;++h,++v,d+=2)b[v]=l[d]+l[d+1]+l[d+i]+l[d+i+1]+2>>2;c+=i<<1,_+=o}}},{key:"scharr_derivatives",value:function(t,e){var r,a,i,o,f,n,s,h,u=t.cols,c=t.rows,d=u<<1,_=0,v=0,l=0,b=0,p=0,y=0,m=0;e.resize(u,c,2);var k=t.data,g=e.data,x=this.cache.get_buffer(u+2<<2),A=this.cache.get_buffer(u+2<<2);for(t.type&M||t.type&w?(s=x.i32,h=A.i32):(s=x.f32,h=A.f32);v<c;++v,p+=u){for(b=(v>0?v-1:1)*u|0,y=(v<c-1?v+1:c-2)*u|0,m=v*d|0,_=0,l=1;_<=u-2;_+=2,l+=2)r=k[b+_],a=k[y+_],s[l]=3*(r+a)+10*k[p+_],h[l]=a-r,r=k[b+_+1],a=k[y+_+1],s[l+1]=3*(r+a)+10*k[p+_+1],h[l+1]=a-r;for(;_<u;++_,++l)r=k[b+_],a=k[y+_],s[l]=3*(r+a)+10*k[p+_],h[l]=a-r;for(_=u+1|0,s[0]=s[1],s[_]=s[u],h[0]=h[1],h[_]=h[u],_=0;_<=u-4;_+=4)r=h[_+2],a=h[_+1],i=h[_+3],o=h[_+4],f=s[_+2],n=s[_+3],g[m++]=f-s[_],g[m++]=3*(r+h[_])+10*a,g[m++]=n-s[_+1],g[m++]=3*(i+a)+10*r,g[m++]=s[_+4]-f,g[m++]=3*(o+r)+10*i,g[m++]=s[_+5]-n,g[m++]=3*(h[_+5]+i)+10*o;for(;_<u;++_)g[m++]=s[_+2]-s[_],g[m++]=3*(h[_+2]+h[_])+10*h[_+1]}this.cache.put_buffer(x),this.cache.put_buffer(A)}},{key:"sobel_derivatives",value:function(t,e){var r,a,i,o,f,n,s,h,u=t.cols,c=t.rows,d=u<<1,_=0,v=0,l=0,b=0,p=0,y=0,m=0;e.resize(u,c,2);var k=t.data,g=e.data,x=this.cache.get_buffer(u+2<<2),A=this.cache.get_buffer(u+2<<2);for(t.type&M||t.type&w?(s=x.i32,h=A.i32):(s=x.f32,h=A.f32);v<c;++v,p+=u){for(b=(v>0?v-1:1)*u|0,y=(v<c-1?v+1:c-2)*u|0,m=v*d|0,_=0,l=1;_<=u-2;_+=2,l+=2)r=k[b+_],a=k[y+_],s[l]=r+a+2*k[p+_],h[l]=a-r,r=k[b+_+1],a=k[y+_+1],s[l+1]=r+a+2*k[p+_+1],h[l+1]=a-r;for(;_<u;++_,++l)r=k[b+_],a=k[y+_],s[l]=r+a+2*k[p+_],h[l]=a-r;for(_=u+1|0,s[0]=s[1],s[_]=s[u],h[0]=h[1],h[_]=h[u],_=0;_<=u-4;_+=4)r=h[_+2],a=h[_+1],i=h[_+3],o=h[_+4],f=s[_+2],n=s[_+3],g[m++]=f-s[_],g[m++]=r+h[_]+2*a,g[m++]=n-s[_+1],g[m++]=i+a+2*r,g[m++]=s[_+4]-f,g[m++]=o+r+2*i,g[m++]=s[_+5]-n,g[m++]=h[_+5]+i+2*o;for(;_<u;++_)g[m++]=s[_+2]-s[_],g[m++]=h[_+2]+h[_]+2*h[_+1]}this.cache.put_buffer(x),this.cache.put_buffer(A)}},{key:"compute_integral_image",value:function(t,e,r,a){var i=0|t.cols,o=0|t.rows,f=t.data,n=i+1|0,s=0,h=0,u=0,c=0,d=0,_=0,v=0,l=0;if(e&&r){for(;d<n;++d)e[d]=0,r[d]=0;for(u=n+1|0,c=1,d=0,l=0;d<o;++d,++u,++c){for(s=h=0,_=0;_<=i-2;_+=2,l+=2,u+=2,c+=2)s+=v=f[l],h+=v*v,e[u]=e[c]+s,r[u]=r[c]+h,s+=v=f[l+1],h+=v*v,e[u+1]=e[c+1]+s,r[u+1]=r[c+1]+h;for(;_<i;++_,++l,++u,++c)s+=v=f[l],h+=v*v,e[u]=e[c]+s,r[u]=r[c]+h}}else if(e){for(;d<n;++d)e[d]=0;for(u=n+1|0,c=1,d=0,l=0;d<o;++d,++u,++c){for(s=0,_=0;_<=i-2;_+=2,l+=2,u+=2,c+=2)s+=f[l],e[u]=e[c]+s,s+=f[l+1],e[u+1]=e[c+1]+s;for(;_<i;++_,++l,++u,++c)s+=f[l],e[u]=e[c]+s}}else if(r){for(;d<n;++d)r[d]=0;for(u=n+1|0,c=1,d=0,l=0;d<o;++d,++u,++c){for(h=0,_=0;_<=i-2;_+=2,l+=2,u+=2,c+=2)h+=(v=f[l])*v,r[u]=r[c]+h,h+=(v=f[l+1])*v,r[u+1]=r[c+1]+h;for(;_<i;++_,++l,++u,++c)h+=(v=f[l])*v,r[u]=r[c]+h}}if(a){for(d=0;d<n;++d)a[d]=0;for(u=n+1|0,c=0,d=0,l=0;d<o;++d,++u,++c){for(_=0;_<=i-2;_+=2,l+=2,u+=2,c+=2)a[u]=f[l]+a[c],a[u+1]=f[l+1]+a[c+1];for(;_<i;++_,++l,++u,++c)a[u]=f[l]+a[c]}for(u=n+i|0,c=i,d=0;d<o;++d,u+=n,c+=n)a[u]+=a[c];for(_=i-1;_>0;--_)for(c=(u=_+o*n)-n,d=o;d>0;--d,u-=n,c-=n)a[u]+=a[c]+a[c+1]}}},{key:"equalize_histogram",value:function(t,e){var r=t.cols,a=t.rows,i=t.data;e.resize(r,a,t.channel);var o,f,n=e.data,s=r*a,h=0,u=0,c=this.cache.get_buffer(1024);for(o=c.i32;h<256;++h)o[h]=0;for(h=0;h<s;++h)++o[i[h]];for(u=o[0],h=1;h<256;++h)u=o[h]+=u;for(f=255/s,h=0;h<s;++h)n[h]=o[i[h]]*f+.5|0;this.cache.put_buffer(c)}},{key:"canny",value:function(t,e,r,a){var i=t.cols,o=t.rows;t.data,e.resize(i,o,t.channel);var f=e.data,n=0,s=0,h=0,u=i<<1,c=0,d=0,_=0,v=0,l=0,b=0,p=0,y=0,m=this.cache.get_buffer(o*u<<2),M=this.cache.get_buffer(3*(i+2)<<2),w=this.cache.get_buffer((o+2)*(i+2)<<2),k=this.cache.get_buffer(o*i<<2),x=M.i32,A=w.i32,z=k.i32,O=m.i32,q=new g(i,o,514,m.data),C=1,T=i+2+1|0,S=2*(i+2)+1|0,j=i+2|0,B=j+1|0,R=0;for(this.sobel_derivatives(t,q),r>a&&(n=r,r=a,a=n),n=3*(i+2)|0;--n>=0;)x[n]=0;for(n=(o+2)*(i+2)|0;--n>=0;)A[n]=0;for(;s<i;++s,h+=2)v=O[h],l=O[h+1],x[T+s]=(v^v>>31)-(v>>31)+((l^l>>31)-(l>>31));for(n=1;n<=o;++n,h+=u){if(n==o)for(s=S+i;--s>=S;)x[s]=0;else for(s=0;s<i;s++)v=O[h+(s<<1)],l=O[h+(s<<1)+1],x[S+s]=(v^v>>31)-(v>>31)+((l^l>>31)-(l>>31));for(c=h-u|0,A[B-1]=0,d=0,s=0;s<i;++s,c+=2){if((_=x[T+s])>r)if(b=(v=O[c])^(l=O[c+1]),l=(l^l>>31)-(l>>31)|0,y=(p=13573*(v=(v^v>>31)-(v>>31)|0))+(v+v<<15),(l<<=15)<p){if(_>x[T+s-1]&&_>=x[T+s+1]){_>a&&!d&&2!=A[B+s-j]?(A[B+s]=2,d=1,z[R++]=B+s):A[B+s]=1;continue}}else if(l>y){if(_>x[C+s]&&_>=x[S+s]){_>a&&!d&&2!=A[B+s-j]?(A[B+s]=2,d=1,z[R++]=B+s):A[B+s]=1;continue}}else if(_>x[C+s-(b=b<0?-1:1)]&&_>x[S+s+b]){_>a&&!d&&2!=A[B+s-j]?(A[B+s]=2,d=1,z[R++]=B+s):A[B+s]=1;continue}A[B+s]=0,d=0}A[B+i]=0,B+=j,s=C,C=T,T=S,S=s}for(s=B-j-1,n=0;n<j;++n,++s)A[s]=0;for(;R>0;)B=z[--R],1==A[B-=j+1]&&(A[B]=2,z[R++]=B),1==A[B+=1]&&(A[B]=2,z[R++]=B),1==A[B+=1]&&(A[B]=2,z[R++]=B),1==A[B+=j]&&(A[B]=2,z[R++]=B),1==A[B-=2]&&(A[B]=2,z[R++]=B),1==A[B+=j]&&(A[B]=2,z[R++]=B),1==A[B+=1]&&(A[B]=2,z[R++]=B),1==A[B+=1]&&(A[B]=2,z[R++]=B);for(B=j+1,C=0,n=0;n<o;++n,B+=j)for(s=0;s<i;++s)f[C++]=255*Number(2==A[B+s]);this.cache.put_buffer(m),this.cache.put_buffer(M),this.cache.put_buffer(w),this.cache.put_buffer(k)}},{key:"warp_perspective",value:function(t,e,r,a){void 0===a&&(a=0);for(var i=0|t.cols,o=0|t.rows,f=0|e.cols,n=0|e.rows,s=t.data,h=e.data,u=0,c=0,d=0,_=0,v=0,l=0,b=0,p=0,y=0,m=0,M=0,w=0,k=0,g=0,x=0,A=r.data,z=A[0],O=A[1],q=A[2],C=A[3],T=A[4],S=A[5],j=A[6],B=A[7],R=A[8],I=0;c<n;++c)for(p=O*c+q,y=T*c+S,m=B*c+R,u=0;u<f;++u,++I,p+=z,y+=C,m+=j)_=0|(l=p*(M=1/m)),v=0|(b=y*M),l>0&&b>0&&_<i-1&&v<o-1?(w=Math.max(l-_,0),k=Math.max(b-v,0),g=s[d=i*v+_|0]+w*(s[d+1]-s[d]),x=s[d+i]+w*(s[d+i+1]-s[d+i]),h[I]=g+k*(x-g)):h[I]=a}},{key:"warp_affine",value:function(t,e,r,a){void 0===a&&(a=0);for(var i=t.cols,o=t.rows,f=e.cols,n=e.rows,s=t.data,h=e.data,u=0,c=0,d=0,_=0,v=0,l=0,b=0,p=0,y=0,m=0,M=0,w=r.data,k=w[0],g=w[1],x=w[2],A=w[3],z=w[4],O=w[5],q=0;c<n;++c)for(l=g*c+x,b=z*c+O,u=0;u<f;++u,++q,l+=k,b+=A)v=0|b,(_=0|l)>=0&&v>=0&&_<i-1&&v<o-1?(p=l-_,y=b-v,m=s[d=i*v+_]+p*(s[d+1]-s[d]),M=s[d+i]+p*(s[d+i+1]-s[d+i]),h[q]=m+y*(M-m)):h[q]=a}},{key:"skindetector",value:function(t,e){for(var r,a,i,o,f=t.width*t.height;f--;)o=4*f,r=t.data[o],a=t.data[o+1],i=t.data[o+2],r>95&&a>40&&i>20&&r>a&&r>i&&r-Math.min(a,i)>15&&Math.abs(r-a)>15?e[f]=255:e[f]=0}}])}(P),P.math=function(t){function e(){var t;return f(this,e),u(t=I(this,e),"qsort_stack",void 0),t.qsort_stack=new Int32Array(96),t}return o(e,t),h(e,[{key:"get_gaussian_kernel",value:function(t,e,r,a){var i=0,o=0,f=0,n=0,s=0,h=0,u=this.cache.get_buffer(t<<2),c=u.f32;if(!(1&~t)&&t<=7&&e<=0)switch(t>>1){case 0:c[0]=1,h=1;break;case 1:c[0]=.25,c[1]=.5,c[2]=.25,h=1;break;case 2:c[0]=.0625,c[1]=.25,c[2]=.375,c[3]=.25,c[4]=.0625,h=1;break;case 3:c[0]=.03125,c[1]=.109375,c[2]=.21875,c[3]=.28125,c[4]=.21875,c[5]=.109375,c[6]=.03125,h=1}else for(s=-.5/((n=e>0?e:.3*(.5*(t-1)-1)+.8)*n);i<t;++i)o=i-.5*(t-1),f=Math.exp(s*o*o),c[i]=f,h+=f;if(a&M)for(h=256/h,i=0;i<t;++i)r[i]=c[i]*h+.5|0;else for(h=1/h,i=0;i<t;++i)r[i]=c[i]*h;this.cache.put_buffer(u)}},{key:"perspective_4point_transform",value:function(t,e,r,a,i,o,f,n,s,h,u,c,d,_,v,l,b){console.warn("⚠️⚠️⚠️ This method is deprecated ad will be removed in the next releases, use transform.perspective_4point_transform() instead. ⚠️⚠️⚠️");var p=e,y=h,m=f,M=p*y*m,w=v,k=p*w,g=y*k,x=u,A=p*x,z=o,O=r,q=_,C=O*q,T=C*z,S=q*z*x,j=q*m,B=q*x,R=y*m,I=w*y,L=w*z,P=x*z,E=1/(j-B-R+I-L+P),U=p*q,F=O*z,V=m*p,G=w*V,N=O*y,D=C*x,J=O*x*z,Y=m*w*y,H=w*O,Q=-(g-M+A*z-z*k-C*y+T-S+j*y)*E,X=(M-g-U*m+U*x+T-y*F+L*y-S)*E,K=p,W=(-x*k+G+N*m-C*m+D-J+L*x-Y)*E,Z=(V*x-G-H*y+D-J+H*z+Y-j*x)*E,$=O,tt=(-A+V+N-F+B-j-I+L)*E,et=(-k+A+C-N+L-P-j+R)*E,rt=-((g=(y=c)*(k=(p=a)*(w=b)))-(M=p*y*(m=s))+(A=p*(x=d))*(z=n)-z*k-(C=(O=i)*(q=l))*y+(T=C*z)-(S=q*z*x)+(j=q*m)*y)*(E=1/(j-(B=q*x)-(R=y*m)+(I=w*y)-(L=w*z)+(P=x*z))),at=(M-g-(U=p*q)*m+U*x+T-y*(F=O*z)+L*y-S)*E,it=p,ot=(-x*k+(G=w*(V=m*p))+(N=O*y)*m-C*m+(D=C*x)-(J=O*x*z)+L*x-(Y=m*w*y))*E,ft=(V*x-G-(H=w*O)*y+D-J+H*z+Y-j*x)*E,nt=O,st=(-A+V+N-F+B-j-I+L)*E,ht=(-k+A+C-N+L-P-j+R)*E,ut=K*tt;T=$*tt-W;var ct=-W*et+Z*tt,dt=Q-ut;F=Q*et-(A=X*tt);var _t=(M=Q*$)-(g=K*W),vt=(m=Q*Z)-(k=W*X);J=(y=Z-et*$)*(q=1/(m-M*et-k+g*et+A*$-ut*Z));var lt=(P=K*et-X)*q,bt=(V=-X*$+K*Z)*q,pt=t.data;pt[0]=rt*J+at*(T*q)-it*(ct*q),pt[1]=rt*lt+at*(dt*q)-it*(F*q),pt[2]=-rt*bt-at*(_t*q)+it*(vt*q),pt[3]=ot*J+ft*(T*q)-nt*(ct*q),pt[4]=ot*lt+ft*(dt*q)-nt*(F*q),pt[5]=-ot*bt-ft*(_t*q)+nt*(vt*q),pt[6]=st*J+ht*(T*q)-ct*q,pt[7]=st*lt+ht*(dt*q)-F*q,pt[8]=-st*bt-ht*(_t*q)+vt*q}},{key:"qsort",value:function(t,e,r,a){var i,o,f,n,s=0,h=0,u=0,c=0,d=0,_=0,v=0,l=0,b=0,p=0,y=0,m=0,M=0,w=0,k=0,g=0,x=0,A=0,z=this.qsort_stack;if(!(r-e+1<=1))for(z[0]=e,z[1]=r;s>=0;)for(h=z[s<<1],u=z[1+(s<<1)],s--;;){if((d=u-h+1)<=7){for(v=h+1;v<=u;v++)for(l=v;l>h&&a(t[l],t[l-1]);l--)i=t[l],t[l]=t[l-1],t[l-1]=i;break}for(A=0,p=h,m=u,w=h+(d>>1),d>40&&(g=h+(b=d>>3),x=h+(b<<1),o=t[k=h],f=t[g],n=t[x],h=a(o,f)?a(f,n)?g:a(o,n)?x:k:a(n,f)?g:a(o,n)?k:x,g=w,x=w+b,o=t[k=w-b],f=t[g],n=t[x],w=a(o,f)?a(f,n)?g:a(o,n)?x:k:a(n,f)?g:a(o,n)?k:x,g=u-b,x=u,o=t[k=u-(b<<1)],f=t[g],n=t[x],u=a(o,f)?a(f,n)?g:a(o,n)?x:k:a(n,f)?g:a(o,n)?k:x),g=w,x=u,o=t[k=h],f=t[g],n=t[x],(w=a(o,f)?a(f,n)?g:a(o,n)?x:k:a(n,f)?g:a(o,n)?k:x)!=p&&(i=t[w],t[w]=t[p],t[p]=i,w=p),h=y=p+1,u=M=m,o=t[w];;){for(;h<=u&&!a(o,t[h]);)a(t[h],o)||(h>y&&(i=t[y],t[y]=t[h],t[h]=i),A=1,y++),h++;for(;h<=u&&!a(t[u],o);)a(o,t[u])||(u<M&&(i=t[M],t[M]=t[u],t[u]=i),A=1,M--),u--;if(h>u)break;i=t[h],t[h]=t[u],t[u]=i,A=1,h++,u--}if(0==A){for(u=m,v=(h=p)+1;v<=u;v++)for(l=v;l>h&&a(t[l],t[l-1]);l--)i=t[l],t[l]=t[l-1],t[l-1]=i;break}for(_=h-(d=Math.min(y-p,h-y))|0,c=0;c<d;++c,++_)i=t[p+c],t[p+c]=t[_],t[_]=i;for(_=m-(d=Math.min(m-M,M-u))+1|0,c=0;c<d;++c,++_)i=t[h+c],t[h+c]=t[_],t[_]=i;if(_=M-u,(d=h-y)>1)_>1?d>_?(z[++s<<1]=p,z[1+(s<<1)]=p+d-1,h=m-_+1,u=m):(z[++s<<1]=m-_+1,z[1+(s<<1)]=m,h=p,u=p+d-1):(h=p,u=p+d-1);else{if(!(_>1))break;h=m-_+1,u=m}}}},{key:"median",value:function(t,e,r){for(var a,i=0,o=0,f=0,n=e+r>>1;;){if(r<=e)return t[n];if(r==e+1)return t[e]>t[r]&&(a=t[e],t[e]=t[r],t[r]=a),t[n];for(t[i=e+r>>1]>t[r]&&(a=t[i],t[i]=t[r],t[r]=a),t[e]>t[r]&&(a=t[e],t[e]=t[r],t[r]=a),t[i]>t[e]&&(a=t[i],t[i]=t[e],t[e]=a),o=e+1,a=t[i],t[i]=t[o],t[o]=a,f=r;;){do{++o}while(t[e]>t[o]);do{--f}while(t[f]>t[e]);if(f<o)break;a=t[o],t[o]=t[f],t[f]=a}a=t[e],t[e]=t[f],t[f]=a,f<=n?e=o:f>=n&&(r=f-1)}return 0}}])}(P),P.matmath=y,P.linalg=function(t){function e(){var t;return f(this,e),u(t=I(this,e),"matmath",void 0),t.matmath=new y,t}return o(e,t),h(e,[{key:"JacobiImpl",value:function(t,e,r,a,i,o){var f=m,n=0,s=0,h=0,u=0,c=0,d=0,_=0,v=0,p=0,y=o*o*30,M=0,w=0,k=0,g=0,x=0,A=0,z=0,O=0,q=0,C=this.cache.get_buffer(o<<2),T=this.cache.get_buffer(o<<2),S=C.i32,j=T.i32;if(a)for(;n<o;n++){for(h=n*i,s=0;s<o;s++)a[h+s]=0;a[h+n]=1}for(h=0;h<o;h++){if(r[h]=t[(e+1)*h],h<o-1){for(u=h+1,M=Math.abs(t[e*h+u]),n=h+2;n<o;n++)M<(w=Math.abs(t[e*h+n]))&&(M=w,u=n);S[h]=u}if(h>0){for(u=0,M=Math.abs(t[h]),n=1;n<h;n++)M<(w=Math.abs(t[e*n+h]))&&(M=w,u=n);j[h]=u}}if(o>1)for(;p<y;p++){for(h=0,M=Math.abs(t[S[0]]),n=1;n<o-1;n++)M<(w=Math.abs(t[e*n+S[n]]))&&(M=w,h=n);for(c=S[h],n=1;n<o;n++)M<(w=Math.abs(t[e*j[n]+n]))&&(M=w,h=j[n],c=n);if(k=t[e*h+c],Math.abs(k)<=f)break;for(g=.5*(r[c]-r[h]),z=(x=Math.abs(g)+b(k,g))/(A=b(k,x)),A=k/A,x=k/x*k,g<0&&(A=-A,x=-x),t[e*h+c]=0,r[h]-=x,r[c]+=x,n=0;n<h;n++)v=e*n+c,O=t[_=e*n+h],q=t[v],t[_]=O*z-q*A,t[v]=O*A+q*z;for(n=h+1;n<c;n++)v=e*n+c,O=t[_=e*h+n],q=t[v],t[_]=O*z-q*A,t[v]=O*A+q*z;for(_=e*h+(n=c+1),v=e*c+n;n<o;n++,_++,v++)O=t[_],q=t[v],t[_]=O*z-q*A,t[v]=O*A+q*z;if(a)for(_=i*h,v=i*c,n=0;n<o;n++,_++,v++)O=a[_],q=a[v],a[_]=O*z-q*A,a[v]=O*A+q*z;for(s=0;s<2;s++){if((d=0==s?h:c)<o-1){for(u=d+1,M=Math.abs(t[e*d+u]),n=d+2;n<o;n++)M<(w=Math.abs(t[e*d+n]))&&(M=w,u=n);S[d]=u}if(d>0){for(u=0,M=Math.abs(t[d]),n=1;n<d;n++)M<(w=Math.abs(t[e*n+d]))&&(M=w,u=n);j[d]=u}}}for(h=0;h<o-1;h++){for(u=h,n=h+1;n<o;n++)r[u]<r[n]&&(u=n);if(h!=u&&(l(r,u,h,M),a))for(n=0;n<o;n++)l(a,i*u+n,i*h+n,M)}this.cache.put_buffer(C),this.cache.put_buffer(T)}},{key:"JacobiSVDImpl",value:function(t,e,r,a,i,o,f,n){for(var s=0,h=0,u=0,c=0,d=Math.max(o,30),_=0,v=0,p=0,y=0,m=0,M=0,w=0,k=0,g=0,x=0,A=0,z=0,O=0,q=0,C=0,T=0,S=0,j=4660,B=0,R=0,I=0,L=this.cache.get_buffer(f<<3),P=L.f64;s<f;s++){for(u=0,A=0;u<o;u++)A+=(k=t[s*e+u])*k;if(P[s]=A,a){for(u=0;u<f;u++)a[s*i+u]=0;a[s*i+s]=1}}for(;c<d;c++){for(m=0,s=0;s<f-1;s++)for(h=s+1;h<f;h++){for(_=s*e|0,v=h*e|0,C=P[s],T=0,S=P[h],u=2,T+=t[_]*t[v],T+=t[_+1]*t[v+1];u<o;u++)T+=t[_+u]*t[v+u];if(!(Math.abs(T)<=2.384185792e-7*Math.sqrt(C*S))){for(O=b(T*=2,z=C-S),z<0?(q=.5*(O-z),M=T/(O*(w=Math.sqrt(q/O))*2)):w=T/(O*(M=Math.sqrt((O+z)/(2*O)))*2),C=0,S=0,u=2,g=M*t[_]+w*t[v],x=-w*t[_]+M*t[v],t[_]=g,t[v]=x,C+=g*g,S+=x*x,g=M*t[_+1]+w*t[v+1],x=-w*t[_+1]+M*t[v+1],t[_+1]=g,t[v+1]=x,C+=g*g,S+=x*x;u<o;u++)g=M*t[_+u]+w*t[v+u],x=-w*t[_+u]+M*t[v+u],t[_+u]=g,t[v+u]=x,C+=g*g,S+=x*x;if(P[s]=C,P[h]=S,m=1,a)for(y=h*i|0,u=2,g=M*a[p=s*i|0]+w*a[y],x=-w*a[p]+M*a[y],a[p]=g,a[y]=x,g=M*a[p+1]+w*a[y+1],x=-w*a[p+1]+M*a[y+1],a[p+1]=g,a[y+1]=x;u<f;u++)g=M*a[p+u]+w*a[y+u],x=-w*a[p+u]+M*a[y+u],a[p+u]=g,a[y+u]=x}}if(0==m)break}for(s=0;s<f;s++){for(u=0,A=0;u<o;u++)A+=(k=t[s*e+u])*k;P[s]=Math.sqrt(A)}for(s=0;s