diff --git a/CHANGELOG.md b/CHANGELOG.md index 11de8e9..0aec596 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,67 @@ +## 0.11.0 - 2026-08-03 + +### 🐛 Bug Fixes + +- Reject non-square input in svd_invert instead of returning garbage (refs #102) (ff07687) + +- Restore closing brace and apply the n*n fix to both SVD tests (9fad73e) + + +### 📚 Documentation + +- Link the newly filed issues from the implementation notes (refs #87) (093fcca) + +- Record what the reference approach cannot answer (refs #87) (2a88d36) + + +### 🧪 Testing + +- Add linalg and matmath invariant tests (refs #87) (4c66488) + +- Check the full SVD reconstruction, not just the first row (e525b06) + +- Drop unused rng import from the matmath tests (84ecd4d) + +- Add imgproc invariant tests (refs #87) (1e75a31) + +- Close a monotonicity gap in the equalize_histogram test (refs #87) (71982da) + +- Add math, detector and optical-flow invariants (refs #87) (23da8a7) + +- Correct the ORB margin and LK scope rationale (refs #87) (0f1741d) + +- Link the ORB edge-fill characterization to issue #110 (940e75e) + +- Use the yape singleton and stop overclaiming LK seed behaviour (refs #87) (bf3cbe9) + +- Drop the stale yape API-divergence note (refs #41) (79455f4) + +- Add boundary-input tests, finding a box_blur bug (refs #87, #114) (58efb77) + +- Cover data structures, node_utils and the buffer pool (refs #87) (d0e1414) + +- Cover the three pool users the balance test missed (refs #87) (9bd10f9) + +- Sweep the box_blur positive test instead of sampling it (refs #87, #114) (7ce000f) + +- Check buffer-pool balance after every test (refs #87) (e3f6431) + +- Add ground-truth tests and implementation notes (refs #87) (7c268d9) + +- Pin gaussian_blur and warp_affine against references (refs #87) (a7bc07d) + +- Pin resample against an exact area average (refs #87) (50db39d) + +- Cover the float convolution path (refs #87, #123) (382aebf) + + +### 🧹 Miscellaneous + +- Add LGPL license headers to every source file and bundle (closes #112) (90b90bd) + + + ## 0.10.1 - 2026-07-26 ### ♻️ Refactoring diff --git a/dist/jsfeatNext.js b/dist/jsfeatNext.js index b7199e2..80e7c97 100644 --- a/dist/jsfeatNext.js +++ b/dist/jsfeatNext.js @@ -1,5 +1,5 @@ /*! - * jsfeatNext v0.10.1 — https://github.com/webarkit/jsfeatNext + * jsfeatNext v0.11.0 — https://github.com/webarkit/jsfeatNext * * SPDX-License-Identifier: LGPL-3.0-or-later * Copyright 2026 WebARKit. Author(s): Walter Perdan @kalwalt @@ -11,4 +11,4 @@ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for details: http://www.gnu.org/licenses/ */ -(function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t():typeof define==`function`&&define.amd?define([],t):(e=typeof globalThis<`u`?globalThis:e||self,e.jsfeatNext=t())})(this,function(){var e=class{constructor(){this._data_type_size=new Int32Array([-1,1,4,-1,4,-1,-1,-1,8,-1,-1,-1,-1,-1,-1,-1,8])}_get_data_type(e){return e&65280}_get_channel(e){return e&255}_get_data_type_size(e){return this._data_type_size[(e&65280)>>8]}},t=class{constructor(e,t){this.size=(e+7|0)&-8,t===void 0?this.buffer=new ArrayBuffer(this.size):(this.buffer=t,this.size=t.byteLength),this.u8=new Uint8Array(this.buffer),this.i32=new Int32Array(this.buffer),this.f32=new Float32Array(this.buffer),this.f64=new Float64Array(this.buffer)}},n=class{constructor(e){this.next=null,this.data=new t(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}resize(e){delete this.data,this.data=new t(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}},r=class{constructor(){this._pool_head,this._pool_tail,this._pool_size=0}allocate(e,t){this._pool_head=this._pool_tail=new n(t);for(let r=0;rt.size&&t.resize(e),t}put_buffer(e){this._pool_tail=this._pool_tail.next=e,this._pool_size++}},i={EPSILON:1.192092896e-7,FLT_MIN:1e-37,U8_t:256,S32_t:512,F32_t:1024,S64_t:2048,F64_t:4096,C1_t:1,C2_t:2,C3_t:3,C4_t:4,COLOR_RGBA2GRAY:0,COLOR_RGB2GRAY:1,COLOR_BGRA2GRAY:2,COLOR_BGR2GRAY:3,BOX_BLUR_NOSCALE:1,SVD_U_T:1,SVD_V_T:2,U8C1_t:257,U8C3_t:259,U8C4_t:260,F32C1_t:1025,F32C2_t:1026,S32C1_t:513,S32C2_t:514},a={name:`@webarkit/jsfeat-next`,version:`0.10.1`,description:`Typescript version of jsfeat for WebARKit`,main:`dist/jsfeatNext.js`,module:`dist/jsfeatNext.mjs`,types:`types/src/index.d.ts`,unpkg:`dist/jsfeatNext.js`,jsdelivr:`dist/jsfeatNext.js`,exports:{".":{types:`./types/src/index.d.ts`,import:`./dist/jsfeatNext.mjs`,require:`./dist/jsfeatNext.js`},"./package.json":`./package.json`},files:[`dist`,`types`],scripts:{"build-ts":`vite build`,"dev-ts":`vite build --watch`,"format-check":`prettier --check .`,format:`prettier --write .`,test:`vitest run`,"test:watch":`vitest`,docs:`typedoc`},repository:{type:`git`,url:`git+https://github.com/webarkit/jsfeatNext.git`},keywords:[`jsfeat`,`jsfeatNext`,`WebAR`,`WebARKit`,`AugmentedReality`,`computer`,`vision`],author:`Walter Perdan @kalwalt`,license:`LGPL-3.0-or-later`,bugs:{url:`https://github.com/webarkit/jsfeatNext/issues`},homepage:`https://github.com/webarkit/jsfeatNext#readme`,devDependencies:{prettier:`~3.9.4`,typedoc:`^0.28.20`,typescript:`^6.0.3`,vite:`^8.1.4`,"vite-plugin-dts":`^5.0.3`,vitest:`^4.1.10`}},o,s=new r;s.allocate(30,640*4);var c=class{constructor(){this.dt=new e,this.cache=s}get_data_type(e){return this.dt._get_data_type(e)}get_channel(e){return this.dt._get_channel(e)}get_data_type_size(e){return this.dt._get_data_type_size(e)}};o=c,o.VERSION=a.version,o.EPSILON=i.EPSILON,o.FLT_MIN=i.FLT_MIN,o.U8_t=i.U8_t,o.S32_t=i.S32_t,o.F32_t=i.F32_t,o.S64_t=i.S64_t,o.F64_t=i.F64_t,o.C1_t=i.C1_t,o.C2_t=i.C2_t,o.C3_t=i.C3_t,o.C4_t=i.C4_t,o.COLOR_RGBA2GRAY=i.COLOR_RGBA2GRAY,o.COLOR_RGB2GRAY=i.COLOR_RGB2GRAY,o.COLOR_BGRA2GRAY=i.COLOR_BGRA2GRAY,o.COLOR_BGR2GRAY=i.COLOR_BGR2GRAY,o.BOX_BLUR_NOSCALE=i.BOX_BLUR_NOSCALE,o.SVD_U_T=i.SVD_U_T,o.SVD_V_T=i.SVD_V_T,o.U8C1_t=o.U8_t|o.C1_t,o.U8C3_t=o.U8_t|o.C3_t,o.U8C4_t=o.U8_t|o.C4_t,o.F32C1_t=o.F32_t|o.C1_t,o.F32C2_t=o.F32_t|o.C2_t,o.S32C1_t=o.S32_t|o.C1_t,o.S32C2_t=o.S32_t|o.C2_t;var l=class{constructor(t,n,r,a){this.dt=new e,this.type=this.dt._get_data_type(r)|0,this.channel=this.dt._get_channel(r)|0,this.cols=t|0,this.rows=n|0,a===void 0?this.allocate():(this.buffer=a,this.data=this.type&i.U8_t?this.buffer.u8:this.type&i.S32_t?this.buffer.i32:this.type&i.F32_t?this.buffer.f32:this.buffer.f64)}allocate(){delete this.data,delete this.buffer,this.buffer=new t(this.cols*this.dt._get_data_type_size(this.type)*this.channel*this.rows),this.data=this.type&i.U8_t?this.buffer.u8:this.type&i.S32_t?this.buffer.i32:this.type&i.F32_t?this.buffer.f32:this.buffer.f64}copy_to(e){let t=e.data,n=this.data,r=0,i=this.cols*this.rows*this.channel|0;for(;rthis.buffer.size?(this.cols=e,this.rows=t,this.channel=n,this.allocate()):(this.cols=e,this.rows=t,this.channel=n)}};function u(e,t,n,r,i){let a=0,o=e.channel,s=e.cols,c=e.rows,l=e.data,u=t.data,d=s/r,f=c/i,p=d*f*65536|0,m=0,h=0,g=0,_=0,v=0,y=0,b=0,x=0,S=0,C=0,w=0,T=0,E=0,D=0,O=0,k=0,A=n.get_buffer(r*o<<2),j=n.get_buffer(r*o<<2),M=n.get_buffer(s*2*3<<2),N=A.i32,P=j.i32,F=M.i32;for(;mS&&(F[x++]=m*o|0,F[x++]=(v-1)*o|0,F[x++]=(v-S)*256|0,a++),g=v;g.001&&(a++,F[x++]=m*o|0,F[x++]=y*o|0,F[x++]=(C-y)*256|0)}for(m=0;mS&&(a++,F[x++]=(v-1)*o|0,F[x++]=m*o|0,F[x++]=(v-S)*p),g=v;g.001&&(a++,F[x++]=y*o|0,F[x++]=m*o|0,F[x++]=(C-y)*p)}for(m=0;m>8,255),n[f+l+1]=Math.min(m>>8,255),n[f+l+2]=Math.min(h>>8,255),n[f+l+3]=Math.min(g>>8,255)}for(;l>8,255)}d+=r,f+=r}for(c=0;c>8,255),n[f+r]=Math.min(m>>8,255),n[f+y]=Math.min(h>>8,255),n[f+b]=Math.min(g>>8,255)}for(;l>8,255)}}}function p(e,t,n,r,i,a,o,s){let c=0,l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=a[0],v=0,y=r<<1,b=r*3,x=r<<2;for(;c>1){case 0:f[0]=1,u=1;break;case 1:f[0]=.25,f[1]=.5,f[2]=.25,u=1;break;case 2:f[0]=.0625,f[1]=.25,f[2]=.375,f[3]=.25,f[4]=.0625,u=1;break;case 3:f[0]=.03125,f[1]=.109375,f[2]=.21875,f[3]=.28125,f[4]=.21875,f[5]=.109375,f[6]=.03125,u=1;break}else for(c=t>0?t:((e-1)*.5-1)*.3+.8,l=-.5/(c*c);a=0;)for(l=E[c<<1],u=E[(c<<1)+1],c--;;)if(f=u-l+1,f<=7){for(m=l+1;m<=u;m++)for(h=m;h>l&&r(e[h],e[h-1]);h--)i=e[h],e[h]=e[h-1],e[h-1]=i;break}else{for(T=0,_=l,y=u,x=l+(f>>1),f>40&&(g=f>>3,S=l,C=l+g,w=l+(g<<1),a=e[S],o=e[C],s=e[w],l=r(a,o)?r(o,s)?C:r(a,s)?w:S:r(s,o)?C:r(a,s)?S:w,S=x-g,C=x,w=x+g,a=e[S],o=e[C],s=e[w],x=r(a,o)?r(o,s)?C:r(a,s)?w:S:r(s,o)?C:r(a,s)?S:w,S=u-(g<<1),C=u-g,w=u,a=e[S],o=e[C],s=e[w],u=r(a,o)?r(o,s)?C:r(a,s)?w:S:r(s,o)?C:r(a,s)?S:w),S=l,C=x,w=u,a=e[S],o=e[C],s=e[w],x=r(a,o)?r(o,s)?C:r(a,s)?w:S:r(s,o)?C:r(a,s)?S:w,x!=_&&(i=e[x],e[x]=e[_],e[_]=i,x=_),l=v=_+1,u=b=y,a=e[x];;){for(;l<=u&&!r(a,e[l]);)r(e[l],a)||(l>v&&(i=e[v],e[v]=e[l],e[l]=i),T=1,v++),l++;for(;l<=u&&!r(e[u],a);)r(a,e[u])||(uu)break;i=e[l],e[l]=e[u],e[u]=i,T=1,l++,u--}if(T==0){for(l=_,u=y,m=l+1;m<=u;m++)for(h=m;h>l&&r(e[h],e[h-1]);h--)i=e[h],e[h]=e[h-1],e[h-1]=i;break}for(f=Math.min(v-_,l-v),p=l-f|0,d=0;d1)p>1?f>p?(++c,E[c<<1]=_,E[(c<<1)+1]=_+f-1,l=y-p+1,u=y):(++c,E[c<<1]=y-p+1,E[(c<<1)+1]=y,l=_,u=_+f-1):(l=_,u=_+f-1);else if(p>1)l=y-p+1,u=y;else break}}median(e,t,n){let r,i=0,a=0,o=0,s=t+n>>1;for(;;){if(n<=t)return e[s];if(n==t+1)return e[t]>e[n]&&(r=e[t],e[t]=e[n],e[n]=r),e[s];for(i=t+n>>1,e[i]>e[n]&&(r=e[i],e[i]=e[n],e[n]=r),e[t]>e[n]&&(r=e[t],e[t]=e[n],e[n]=r),e[i]>e[t]&&(r=e[i],e[i]=e[t],e[t]=r),a=t+1,r=e[i],e[i]=e[a],e[a]=r,o=n;;){do++a;while(e[t]>e[a]);do--o;while(e[o]>e[t]);if(o=s&&(n=o-1)}return 0}},h=class extends c{constructor(){super()}grayscale(e,t,n,r,a){a===void 0&&(a=i.COLOR_RGBA2GRAY);let o=0,s=0,c=0,l=0,u=0,d=0,f=4899,p=9617,m=1868,h=4;(a==i.COLOR_BGRA2GRAY||a==i.COLOR_BGR2GRAY)&&(f=1868,m=4899),(a==i.COLOR_RGB2GRAY||a==i.COLOR_BGR2GRAY)&&(h=3);let g=h<<1,_=h*3|0;r.resize(t,n,1);let v=r.data;for(s=0;s>14,v[d+1]=e[u+h]*f+e[u+h+1]*p+e[u+h+2]*m+8192>>14,v[d+2]=e[u+g]*f+e[u+g+1]*p+e[u+g+2]*m+8192>>14,v[d+3]=e[u+_]*f+e[u+_+1]*p+e[u+_+2]*m+8192>>14;for(;o>14}}resample(e,t,n,r){let a=e.rows,o=e.cols;a>r&&o>n&&(t.resize(n,r,e.channel),e.type&i.U8_t&&t.type&i.U8_t&&a*o/(r*n)<256?u(e,t,this.cache,n,r):d(e,t,this.cache,n,r))}box_blur_gray(e,t,n,r){r===void 0&&(r=0);let a=e.cols,o=e.rows,s=o<<1,c=a<<1,l=0,u=0,d=0,f=0,p=(n<<1)+1|0,m=n+1|0,h=m+1|0,g=r&i.BOX_BLUR_NOSCALE?1:1/(p*p),_=this.cache.get_buffer(a*o<<2),v=0,y=0,b=0,x=0,S=0,C=_.i32,w=e.data,T=0;for(t.resize(a,o,e.channel),d=0;d>1,s=e.cols,c=e.rows,l=e.type,u=l&i.U8_t;t.resize(s,c,e.channel);let d=e.data,h=t.data,g,_,v=n+Math.max(c,s)|0,y=this.cache.get_buffer(v<<2),b=this.cache.get_buffer(n<<2);u?(g=y.i32,_=b.i32):l&i.S32_t?(g=y.i32,_=b.f32):(g=y.f32,_=b.f32),a.get_gaussian_kernel(n,r,_,l),u?f(g,d,h,s,c,_,n,o):p(g,d,h,s,c,_,n,o),this.cache.put_buffer(y),this.cache.put_buffer(b)}hough_transform(e,t,n,r){let i,a,o=e.data,s=e.cols,c=e.rows,l=s,u=Math.round((Math.PI-0)/n),d=Math.round(((s+c)*2+1)/t),f=1/t,p=new Int32Array((u+2)*(d+2)),m=new Float32Array(u),h=new Float32Array(u),g=0,_=0;for(;gr&&p[e]>p[e-1]&&p[e]>=p[e+1]&&p[e]>p[e-d-2]&&p[e]>=p[e+d+2]&&v.push(e)}v.sort(function(e,t){return p[e]>p[t]||p[e]==p[t]&&e>1,s=a>>1,c=o-(n<<1),l=s-(r<<1),u=0,d=0,f=n+r*i,p=0,m=0,h=0;t.resize(o,s,e.channel);let g=e.data,_=t.data;for(d=0;d>2,_[h+1]=g[p+2]+g[p+3]+g[p+i+2]+g[p+i+3]+2>>2;for(;u>2;f+=i<<1,m+=o}}scharr_derivatives(e,t){let n=e.cols,r=e.rows,a=n<<1,o=0,s=0,c=0,l,u,d,f,p,m,h=0,g=0,_=0,v=0,y,b;t.resize(n,r,2);let x=e.data,S=t.data,C=this.cache.get_buffer(n+2<<2),w=this.cache.get_buffer(n+2<<2);for(e.type&i.U8_t||e.type&i.S32_t?(y=C.i32,b=w.i32):(y=C.f32,b=w.f32);s0?s-1:1)*n|0,_=(s0?s-1:1)*n|0,_=(s0;--p)for(u=p+a*s,d=u-s,f=a;f>0;--f,u-=s,d-=s)r[u]+=r[d]+r[d+1]}}equalize_histogram(e,t){let n=e.cols,r=e.rows,i=e.data;t.resize(n,r,e.channel);let a=t.data,o=n*r,s=0,c=0,l,u,d=this.cache.get_buffer(1024);for(l=d.i32;s<256;++s)l[s]=0;for(s=0;sr&&(c=n,n=r,r=c),c=3*(a+2)|0;--c>=0;)T[c]=0;for(c=(o+2)*(a+2)|0;--c>=0;)E[c]=0;for(;u>31)-(g>>31)+((_^_>>31)-(_>>31));for(c=1;c<=o;++c,d+=f){if(c==o)for(u=M+a;--u>=M;)T[u]=0;else for(u=0;u>31)-(g>>31)+((_^_>>31)-(_>>31));for(p=d-f|0,E[P-1]=0,m=0,u=0;un){if(g=O[p],_=O[p+1],v=g^_,g=(g^g>>31)-(g>>31)|0,_=(_^_>>31)-(_>>31)|0,y=g*13573,b=y+(g+g<<15),_<<=15,_T[j+u-1]&&h>=T[j+u+1]){h>r&&!m&&E[P+u-N]!=2?(E[P+u]=2,m=1,D[F++]=P+u):E[P+u]=1;continue}}else if(_>b){if(h>T[A+u]&&h>=T[M+u]){h>r&&!m&&E[P+u-N]!=2?(E[P+u]=2,m=1,D[F++]=P+u):E[P+u]=1;continue}}else if(v=v<0?-1:1,h>T[A+u-v]&&h>T[M+u+v]){h>r&&!m&&E[P+u-N]!=2?(E[P+u]=2,m=1,D[F++]=P+u):E[P+u]=1;continue}}E[P+u]=0,m=0}E[P+a]=0,P+=N,u=A,A=j,j=M,M=u}for(u=P-N-1,c=0;c0;)P=D[--F],P-=N+1,E[P]==1&&(E[P]=2,D[F++]=P),P+=1,E[P]==1&&(E[P]=2,D[F++]=P),P+=1,E[P]==1&&(E[P]=2,D[F++]=P),P+=N,E[P]==1&&(E[P]=2,D[F++]=P),P-=2,E[P]==1&&(E[P]=2,D[F++]=P),P+=N,E[P]==1&&(E[P]=2,D[F++]=P),P+=1,E[P]==1&&(E[P]=2,D[F++]=P),P+=1,E[P]==1&&(E[P]=2,D[F++]=P);for(P=N+1,A=0,c=0;c0&&g>0&&p=0&&m>=0&&p95&&r>40&&i>20&&n>r&&n>i&&n-Math.min(r,i)>15&&Math.abs(n-r)>15?t[o]=255:t[o]=0}};function g(e,t,n,r){r=e[t],e[t]=e[n],e[n]=r}function _(e,t){return e=Math.abs(e),t=Math.abs(t),e>t?(t/=e,e*Math.sqrt(1+t*t)):t>0?(e/=t,t*Math.sqrt(1+e*e)):0}var v=class{constructor(){}identity(e,t){t===void 0&&(t=1);let n=e.data,r=e.rows,i=e.cols,a=i+1|0,o=r*i,s=o;for(;--o>=0;)n[o]=0;for(o=s,s=0;s0){for(d=0,b=Math.abs(e[u]),c=1;c1)for(;v0){for(d=0,b=Math.abs(e[p]),c=1;c>16&256?L:-L,e[d*t+p]=I;for(m=0;m<2;m++)for(f=0;fMath.abs(c[a*s+n])&&(a=r);if(Math.abs(c[a*s+n])=0;n--){for(f=l[n],a=n+1;a=0;s--){for(f=d[s],c=s+1,a=c*l;c=0;)n.data[s]=_.data[s];else n&&this.matmath.transpose(n,_);if(r&&a&i.SVD_V_T)for(s=f*f;--s>=0;)r.data[s]=y.data[s];else r&&this.matmath.transpose(r,y)}else{if(n&&a&i.SVD_U_T)for(s=f*f;--s>=0;)n.data[s]=y.data[s];else n&&this.matmath.transpose(n,y);if(r&&a&i.SVD_V_T)for(s=d*d;--s>=0;)r.data[s]=_.data[s];else r&&this.matmath.transpose(r,_)}this.cache.put_buffer(m),this.cache.put_buffer(h),this.cache.put_buffer(g)}svd_solve(e,t,n){let r=0,a=0,o=0,s=0,c=0,u=e.rows,d=e.cols,f=0,p=0,m=0,h=e.type|i.C1_t,g=this.cache.get_buffer(u*u<<3),_=this.cache.get_buffer(d<<3),v=this.cache.get_buffer(d*d<<3),y=new l(u,u,h,g.data),b=new l(1,d,h,_.data),x=new l(d,d,h,v.data),S=n.data,C=y.data,w=b.data,T=x.data;for(this.svd_decompose(e,b,y,x,0),m=i.EPSILON*w[0]*d;rm){for(o=0,f=0,s=0;op&&(f+=w[s+a]*S[o]/C[a]);x[c]=f}this.cache.put_buffer(h),this.cache.put_buffer(g),this.cache.put_buffer(_)}eigenVV(e,t,n){let r=e.cols,a=r*r,o=e.type|i.C1_t,s=this.cache.get_buffer(r*r<<3),c=this.cache.get_buffer(r<<3),u=new l(r,r,o,s.data),d=new l(1,r,o,c.data);for(;--a>=0;)u.data[a]=e.data[a];if(this.JacobiImpl(u.data,r,d.data,t?t.data:null,r,r),n)for(;--r>=0;)n.data[r]=d.data[r];this.cache.put_buffer(s),this.cache.put_buffer(c)}};function b(e,t,n,r,i){let a=0,o=e[t],s=i,c=0,l=0,u=0;for(;a<25;++a)r[a]=o-e[t+n[a]];for(a=0;a<16;a+=2)c=Math.min(r[a+1],r[a+2]),c=Math.min(c,r[a+3]),!(c<=s)&&(c=Math.min(c,r[a+4]),c=Math.min(c,r[a+5]),c=Math.min(c,r[a+6]),c=Math.min(c,r[a+7]),c=Math.min(c,r[a+8]),s=Math.max(s,Math.min(c,r[a])),s=Math.max(s,Math.min(c,r[a+9])));for(l=-s,a=0;a<16;a+=2)u=Math.max(r[a+1],r[a+2]),u=Math.max(u,r[a+3]),u=Math.max(u,r[a+4]),u=Math.max(u,r[a+5]),!(u>=l)&&(u=Math.max(u,r[a+6]),u=Math.max(u,r[a+7]),u=Math.max(u,r[a+8]),l=Math.min(l,Math.max(u,r[a])),l=Math.min(l,Math.max(u,r[a+9])));return-l-1}var x=class extends c{constructor(){super(),this.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]),this.threshold_tab=new Uint8Array(512),this._threshold=20,this.pixel_off=new Int32Array(25),this.score_diff=new Int32Array(25)}set_threshold(e){this._threshold=Math.min(Math.max(e,0),255);for(let e=-255;e<=255;++e)this.threshold_tab[e+255]=e<-this._threshold?1:e>this._threshold?2:0;return this._threshold}detect(e,t,n){n===void 0&&(n=3);let r=e.data,i=e.cols,a=e.rows,o=0,s=0,c=0,l=0,u=0,d=0,f=this.cache.get_buffer(3*i),p=this.cache.get_buffer((i+1)*3<<2),m=f.u8,h=p.i32,g=this.pixel_off,_=this.score_diff,v=Math.max(3,n),y=Math.min(a-2,a-n),x=Math.max(3,n),S=Math.min(i-3,i-n),C=0,w=0,T,E=b,D=this.threshold_tab,O=this._threshold,k=0,A=0,j=0,M=0,N=0,P=0,F=0,I=0,L=0,R=0,z=0,B=0;this._cmp_offsets(g,i,16);let V=g[0],ee=g[1],H=g[2],U=g[3],W=g[4],G=g[5],K=g[6],te=g[7],q=g[8],ne=g[9],J=g[10],Y=g[11],X=g[12],Z=g[13],Q=g[14],re=g[15];for(o=0;o8){++M,h[N+M]=s,m[P+s]=E(r,F,g,_,O);break}}else C=0;if(j&2)for(l=k+O,C=0,c=0;c<25;++c)if(u=r[F+g[c]],u>l){if(++C,C>8){++M,h[N+M]=s,m[P+s]=E(r,F,g,_,O);break}}else C=0}}if(h[N+i]=M,o!=v)for(d=(o-4+3)%3,I=d*i|0,N=d*(i+1)|0,d=(o-5+3)%3,L=d*i|0,M=h[N+i],c=0;cm[I+R]&&B>m[I+z]&&B>m[L+z]&&B>m[L+s]&&B>m[L+R]&&B>m[P+z]&&B>m[P+s]&&B>m[P+R]&&(T=t[w],T.x=s,T.y=o-1,T.score=B,w++)}return this.cache.put_buffer(f),this.cache.put_buffer(p),w}_cmp_offsets(e,t,n){let r=0,i=this.offsets16;for(;r=0;)this.data[r]=new l(e>>r,t>>r,n)}build(e,t){t===void 0&&(t=!0);let n=2,r=e,i=this.data[0];if(!t){let t=e.cols*e.rows;for(;--t>=0;)i.data[t]=e.data[t]}for(i=this.data[1],this.pyrdown(r,i);n=0;i--,r++)a=Math.sqrt(n*n-i*i)+.5|0,t[r]=i+e*a;for(;-i=0;a--,r++)i=-Math.sqrt(n*n-a*a)-.5|0,t[r]=i+e*a;for(;a>i;a--,r++)i=-Math.sqrt(n*n-a*a)-.5|0,t[r]=i+e*a;for(i++;i<=0;i++,r++)a=-Math.sqrt(n*n-i*i)-.5|0,t[r]=i+e*a;for(;i<-a;i++,r++)a=-Math.sqrt(n*n-i*i)-.5|0,t[r]=i+e*a;for(a++;a<0;a++,r++)i=Math.sqrt(n*n-a*a)+.5|0,t[r]=i+e*a;return t[r]=t[0],t[r+1]=t[1],r}function k(e,t,n){let r=0;return e[t+1]!=0&&r++,e[t-1]!=0&&r++,e[t+n]!=0&&r++,e[t+n+1]!=0&&r++,e[t+n-1]!=0&&r++,e[t-n]!=0&&r++,e[t-n+1]!=0&&r++,e[t-n-1]!=0&&r++,r}function A(e,t,n,r,i){let a,o;if(n>0)for(t-=r*i,o=-i;o<=i;++o){for(a=-i;a<=i;++a)if(e[t+a]>n)return!1;t+=r}else for(t-=r*i,o=-i;o<=i;++o){for(a=-i;a<=i;++a)if(e[t+a]=r)if(f=e[t+a[u]],f<=i)if(f>=r){n[t]=0;return}else if(u++,p=e[t+a[u]],p>i)if(u++,m=e[t+a[u]],m>i)h=3;else if(mi)h=7;else if(mi)if(u++,m=e[t+a[u]],m>i)h=3;else if(mi)h=7;else if(mi){n[t]=0;return}if(u++,p=e[t+a[u]],p>i){n[t]=0;return}if(u++,m=e[t+a[u]],m>i){n[t]=0;return}h=1}else{if(f=e[t+a[u]],fi){if(p=m,u++,m=e[t+a[u]],mi){n[t]=0;return}if(m>i){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],m>i){n[t]=0;return}c-=d+p,h=8;break}if(p<=i){n[t]=0;return}if(m<=i){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],m>i){c-=d+p,h=3;break}if(mi){n[t]=0;return}c-=d+p,h=1;break}if(d>i){if(p=r){n[t]=0;return}if(m>=r){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],mi){c-=d+p,h=7;break}n[t]=0;return;case 2:if(d>i){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],di){n[t]=0;return}c-=d+p,h=4;break}if(m>i){c-=d+p,h=7;break}if(mi){if(mi){c-=d+p,h=3;break}if(mi){n[t]=0;return}if(di){n[t]=0;return}c-=d+p,h=1;break}if(m>=r){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],mi){c-=d+p,h=7;break}n[t]=0;return;case 5:if(di){if(p=m,u++,m=e[t+a[u]],mi){c-=d+p,h=3;break}if(mi){n[t]=0;return}if(di){c-=d+p,h=3;break}if(mi){n[t]=0;return}if(di){c-=d+p,h=7;break}n[t]=0;return;case 8:if(d>i){if(mi){n[t]=0;return}c-=d+p,h=1;break}n[t]=0;return;case 9:if(di){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],m>i){n[t]=0;return}c-=d+p,h=8;break}if(d>i){if(p=m,u++,m=e[t+a[u]],m>i,t>>i,n)}detect(e,t,n=4){let r=this.level_tables[0],i=r.radius|0,a=i-1|0,o=r.dirs,s=r.dirs_count|0,c=s>>1,l=e.data,u=e.cols|0,d=e.rows|0,f=u>>1,p=r.scores,m=0,h=0,g=0,_=0,v=0,y=0,b=0,x=0,S=this.tau|0,C=0,w,T=Math.max(i+1,n)|0,E=Math.max(i+1,n)|0,D=Math.min(u-i-2,u-n)|0,O=Math.min(d-i-2,d-n)|0;for(g=E*u+T|0,h=E;h=3&&A(p,_,x,f,i)&&(w=t[C],w.x=m,w.y=h,w.score=b,++C,m+=a,_+=a);return C}};function P(e,t,n,r,i,a,o,s,c){let l=0,u=0,d=o*n+a|0,f=d;for(l=o;l=0&&f+i=0?t[f]=-4*e[f]+e[f+r]+e[f-r]+e[f+i]+e[f-i]:t[f]=0}function F(e,t,n,r,i,a,o){let s=-2*e[t]+e[t+r]+e[t-r],c=-2*e[t]+e[t+i]+e[t-i],l=e[t+a]+e[t-a]-e[t+o]-e[t-o],u=Math.sqrt((s-c)*(s-c)+4*l*l)|0;return Math.min(Math.abs(n-u),Math.abs(-(n+u)))}var I=class extends c{constructor(){super(),this.laplacian_threshold=30,this.min_eigen_value_threshold=25}detect(e,t,n){n===void 0&&(n=5);let r=0,i=0,a=e.cols,o=e.rows,s=e.data,c=5*a|0,l=3+3*a|0,u=3-3*a|0,d=this.cache.get_buffer(a*o<<2),f=d.i32,p=0,m=0,h=0,g=0,_,v=0,y=this.laplacian_threshold,b=this.min_eigen_value_threshold,x=Math.max(5,n)|0,S=Math.max(3,n)|0,C=Math.min(a-5,a-n)|0,w=Math.min(o-3,o-n)|0;for(r=a*o;--r>=0;)f[r]=0;for(P(s,f,a,5,c,x,S,C,w),m=S*a+x|0,i=S;iy&&p>f[h-1]&&p>f[h+1]&&p>f[h-a]&&p>f[h+a]&&p>f[h-a-1]&&p>f[h+a-1]&&p>f[h-a+1]&&p>f[h+a+1])&&(g=F(s,h,p,5,c,l,u),g>b&&(_=t[v],_.x=r,_.y=i,_.score=g,++v,++r,++h));return this.cache.put_buffer(d),v}},L=class{constructor(e=0,t=.5,n=.5,r=.99){this.size=e,this.thresh=t,this.eps=n,this.prob=r}update_iters(e,t){let n=Math.log(1-this.prob),r=Math.log(1-Math.pow(1-e,this.size));return(r>=0||-n>=t*-r?t:Math.round(n/r))|0}},R=class extends c{constructor(){super()}get_subset(e,t,n,r,i,a,o){let s=1e3,c=[],l=0,u=0,d=0,f=0,p=!1;for(;d=0;)s.data[a]=1;return this.cache.put_buffer(b),this.cache.put_buffer(x),this.cache.put_buffer(S),!0}for(;fMath.max(T,u-1)&&(C.copy_to(o),T=E,s&&w.copy_to(s),d=e.update_iters((a-E)/a,d),p=!0))}return this.cache.put_buffer(b),this.cache.put_buffer(x),this.cache.put_buffer(S),p}lmeds(e,t,n,r,a,o,s,c){if(c===void 0&&(c=1e3),a=0;)s.data[a]=1;return this.cache.put_buffer(S),this.cache.put_buffer(C),this.cache.put_buffer(w),!0}for(;f=u),this.cache.put_buffer(S),this.cache.put_buffer(C),this.cache.put_buffer(w),p}},z=class extends c{constructor(){super(),this.T0=new l(3,3,i.F32_t|i.C1_t),this.T1=new l(3,3,i.F32_t|i.C1_t),this.AtA=new l(6,6,i.F32_t|i.C1_t),this.AtB=new l(6,1,i.F32_t|i.C1_t)}sqr(e){return e*e}iso_normalize_points(e,t,n,r,i){let a=0,o=0,s=0,c=0,l=0,u=0,d=0,f=0,p=0,m=0,h=0;for(;a=0;)u[a]=0;for(a=0;a=0;--X)for(I=1/(1<>X,S=b>>X,A=x<<1,_=h[X].data,v=g[X].data,re=x-o|0,ie=S-o|0,this.scharr_deriv(h[X],E),Z=0;Z=re||G<=0||G>=ie,J!=0){X==0&&(c[Z]=0);continue}for(ae=L-W,oe=R-G,fe=(1-ae)*(1-oe)*le+.5|0,pe=ae*(1-oe)*le+.5|0,me=(1-ae)*oe*le+.5|0,he=le-fe-pe-me,ve=0,ye=0,be=0,Y=0;Y>9,_e=k[M]*fe+k[M+2]*pe+k[M+A]*me+k[M+A+2]*he,_e=_e+ue>>14,$=k[M+1]*fe+k[M+3]*pe+k[M+A+1]*me+k[M+A+3]*he,$=$+ue>>14,D[N]=ge,O[P++]=_e,O[P++]=$,ve+=_e*_e,ye+=_e*$,be+=$*$;if(ve*=de,ye*=de,be*=de,xe=ve*be-ye*ye,Se=(be+ve-Math.sqrt((ve-be)*(ve-be)+4*ye*ye))/m,Se=re||te<=0||te>=ie,J!=0){X==0&&(c[Z]=0);break}for(ae=z-K,oe=B-te,fe=(1-ae)*(1-oe)*le+.5|0,pe=ae*(1-oe)*le+.5|0,me=(1-ae)*oe*le+.5|0,he=le-fe-pe-me,se=0,ce=0,Y=0;Y>9,ge-=D[N],se+=ge*O[P++],ce+=ge*O[P++];if(se*=de,ce*=de,H=(ye*ce-be*se)*xe,U=(ye*se-ve*ce)*xe,z+=H,B+=U,r[q]=z+f,r[ne]=B+f,H*H+U*U<=u)break;if(Q>0&&Math.abs(H+V)<.01&&Math.abs(U+ee)<.01){r[q]-=H*.5,r[ne]-=U*.5;break}V=H,ee=U}}this.cache.put_buffer(C),this.cache.put_buffer(w),this.cache.put_buffer(T)}},H=c;return c.cache=s,c.pyramid_t=S,c.matrix_t=l,c.keypoint_t=w,c.ransac_params_t=L,c.transform=new C,c.fast_corners=new x,c.imgproc=new h,c.math=new m,c.matmath=new v,c.linalg=new y,c.orb=new D,c.yape=new N,c.yape06=new I,c.motion_estimator=new R,c.affine2d=new B,c.homography2d=new V,c.optical_flow_lk=new ee,H}); \ No newline at end of file +(function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t():typeof define==`function`&&define.amd?define([],t):(e=typeof globalThis<`u`?globalThis:e||self,e.jsfeatNext=t())})(this,function(){var e=class{constructor(){this._data_type_size=new Int32Array([-1,1,4,-1,4,-1,-1,-1,8,-1,-1,-1,-1,-1,-1,-1,8])}_get_data_type(e){return e&65280}_get_channel(e){return e&255}_get_data_type_size(e){return this._data_type_size[(e&65280)>>8]}},t=class{constructor(e,t){this.size=(e+7|0)&-8,t===void 0?this.buffer=new ArrayBuffer(this.size):(this.buffer=t,this.size=t.byteLength),this.u8=new Uint8Array(this.buffer),this.i32=new Int32Array(this.buffer),this.f32=new Float32Array(this.buffer),this.f64=new Float64Array(this.buffer)}},n=class{constructor(e){this.next=null,this.data=new t(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}resize(e){delete this.data,this.data=new t(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}},r=class{constructor(){this._pool_head,this._pool_tail,this._pool_size=0}allocate(e,t){this._pool_head=this._pool_tail=new n(t);for(let r=0;rt.size&&t.resize(e),t}put_buffer(e){this._pool_tail=this._pool_tail.next=e,this._pool_size++}},i={EPSILON:1.192092896e-7,FLT_MIN:1e-37,U8_t:256,S32_t:512,F32_t:1024,S64_t:2048,F64_t:4096,C1_t:1,C2_t:2,C3_t:3,C4_t:4,COLOR_RGBA2GRAY:0,COLOR_RGB2GRAY:1,COLOR_BGRA2GRAY:2,COLOR_BGR2GRAY:3,BOX_BLUR_NOSCALE:1,SVD_U_T:1,SVD_V_T:2,U8C1_t:257,U8C3_t:259,U8C4_t:260,F32C1_t:1025,F32C2_t:1026,S32C1_t:513,S32C2_t:514},a={name:`@webarkit/jsfeat-next`,version:`0.11.0`,description:`Typescript version of jsfeat for WebARKit`,main:`dist/jsfeatNext.js`,module:`dist/jsfeatNext.mjs`,types:`types/src/index.d.ts`,unpkg:`dist/jsfeatNext.js`,jsdelivr:`dist/jsfeatNext.js`,exports:{".":{types:`./types/src/index.d.ts`,import:`./dist/jsfeatNext.mjs`,require:`./dist/jsfeatNext.js`},"./package.json":`./package.json`},files:[`dist`,`types`],scripts:{"build-ts":`vite build`,"dev-ts":`vite build --watch`,"format-check":`prettier --check .`,format:`prettier --write .`,"license-check":`node scripts/check-license-headers.mjs`,test:`vitest run`,"test:watch":`vitest`,docs:`typedoc`},repository:{type:`git`,url:`git+https://github.com/webarkit/jsfeatNext.git`},keywords:[`jsfeat`,`jsfeatNext`,`WebAR`,`WebARKit`,`AugmentedReality`,`computer`,`vision`],author:`Walter Perdan @kalwalt`,license:`LGPL-3.0-or-later`,bugs:{url:`https://github.com/webarkit/jsfeatNext/issues`},homepage:`https://github.com/webarkit/jsfeatNext#readme`,devDependencies:{prettier:`~3.9.4`,typedoc:`^0.28.20`,typescript:`^6.0.3`,vite:`^8.1.4`,"vite-plugin-dts":`^5.0.3`,vitest:`^4.1.10`}},o,s=new r;s.allocate(30,640*4);var c=class{constructor(){this.dt=new e,this.cache=s}get_data_type(e){return this.dt._get_data_type(e)}get_channel(e){return this.dt._get_channel(e)}get_data_type_size(e){return this.dt._get_data_type_size(e)}};o=c,o.VERSION=a.version,o.EPSILON=i.EPSILON,o.FLT_MIN=i.FLT_MIN,o.U8_t=i.U8_t,o.S32_t=i.S32_t,o.F32_t=i.F32_t,o.S64_t=i.S64_t,o.F64_t=i.F64_t,o.C1_t=i.C1_t,o.C2_t=i.C2_t,o.C3_t=i.C3_t,o.C4_t=i.C4_t,o.COLOR_RGBA2GRAY=i.COLOR_RGBA2GRAY,o.COLOR_RGB2GRAY=i.COLOR_RGB2GRAY,o.COLOR_BGRA2GRAY=i.COLOR_BGRA2GRAY,o.COLOR_BGR2GRAY=i.COLOR_BGR2GRAY,o.BOX_BLUR_NOSCALE=i.BOX_BLUR_NOSCALE,o.SVD_U_T=i.SVD_U_T,o.SVD_V_T=i.SVD_V_T,o.U8C1_t=o.U8_t|o.C1_t,o.U8C3_t=o.U8_t|o.C3_t,o.U8C4_t=o.U8_t|o.C4_t,o.F32C1_t=o.F32_t|o.C1_t,o.F32C2_t=o.F32_t|o.C2_t,o.S32C1_t=o.S32_t|o.C1_t,o.S32C2_t=o.S32_t|o.C2_t;var l=class{constructor(t,n,r,a){this.dt=new e,this.type=this.dt._get_data_type(r)|0,this.channel=this.dt._get_channel(r)|0,this.cols=t|0,this.rows=n|0,a===void 0?this.allocate():(this.buffer=a,this.data=this.type&i.U8_t?this.buffer.u8:this.type&i.S32_t?this.buffer.i32:this.type&i.F32_t?this.buffer.f32:this.buffer.f64)}allocate(){delete this.data,delete this.buffer,this.buffer=new t(this.cols*this.dt._get_data_type_size(this.type)*this.channel*this.rows),this.data=this.type&i.U8_t?this.buffer.u8:this.type&i.S32_t?this.buffer.i32:this.type&i.F32_t?this.buffer.f32:this.buffer.f64}copy_to(e){let t=e.data,n=this.data,r=0,i=this.cols*this.rows*this.channel|0;for(;rthis.buffer.size?(this.cols=e,this.rows=t,this.channel=n,this.allocate()):(this.cols=e,this.rows=t,this.channel=n)}};function u(e,t,n,r,i){let a=0,o=e.channel,s=e.cols,c=e.rows,l=e.data,u=t.data,d=s/r,f=c/i,p=d*f*65536|0,m=0,h=0,g=0,_=0,v=0,y=0,b=0,x=0,S=0,C=0,w=0,T=0,E=0,D=0,O=0,k=0,A=n.get_buffer(r*o<<2),j=n.get_buffer(r*o<<2),M=n.get_buffer(s*2*3<<2),N=A.i32,P=j.i32,F=M.i32;for(;mS&&(F[x++]=m*o|0,F[x++]=(v-1)*o|0,F[x++]=(v-S)*256|0,a++),g=v;g.001&&(a++,F[x++]=m*o|0,F[x++]=y*o|0,F[x++]=(C-y)*256|0)}for(m=0;mS&&(a++,F[x++]=(v-1)*o|0,F[x++]=m*o|0,F[x++]=(v-S)*p),g=v;g.001&&(a++,F[x++]=y*o|0,F[x++]=m*o|0,F[x++]=(C-y)*p)}for(m=0;m>8,255),n[f+l+1]=Math.min(m>>8,255),n[f+l+2]=Math.min(h>>8,255),n[f+l+3]=Math.min(g>>8,255)}for(;l>8,255)}d+=r,f+=r}for(c=0;c>8,255),n[f+r]=Math.min(m>>8,255),n[f+y]=Math.min(h>>8,255),n[f+b]=Math.min(g>>8,255)}for(;l>8,255)}}}function p(e,t,n,r,i,a,o,s){let c=0,l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=a[0],v=0,y=r<<1,b=r*3,x=r<<2;for(;c>1){case 0:f[0]=1,u=1;break;case 1:f[0]=.25,f[1]=.5,f[2]=.25,u=1;break;case 2:f[0]=.0625,f[1]=.25,f[2]=.375,f[3]=.25,f[4]=.0625,u=1;break;case 3:f[0]=.03125,f[1]=.109375,f[2]=.21875,f[3]=.28125,f[4]=.21875,f[5]=.109375,f[6]=.03125,u=1;break}else for(c=t>0?t:((e-1)*.5-1)*.3+.8,l=-.5/(c*c);a=0;)for(l=E[c<<1],u=E[(c<<1)+1],c--;;)if(f=u-l+1,f<=7){for(m=l+1;m<=u;m++)for(h=m;h>l&&r(e[h],e[h-1]);h--)i=e[h],e[h]=e[h-1],e[h-1]=i;break}else{for(T=0,_=l,y=u,x=l+(f>>1),f>40&&(g=f>>3,S=l,C=l+g,w=l+(g<<1),a=e[S],o=e[C],s=e[w],l=r(a,o)?r(o,s)?C:r(a,s)?w:S:r(s,o)?C:r(a,s)?S:w,S=x-g,C=x,w=x+g,a=e[S],o=e[C],s=e[w],x=r(a,o)?r(o,s)?C:r(a,s)?w:S:r(s,o)?C:r(a,s)?S:w,S=u-(g<<1),C=u-g,w=u,a=e[S],o=e[C],s=e[w],u=r(a,o)?r(o,s)?C:r(a,s)?w:S:r(s,o)?C:r(a,s)?S:w),S=l,C=x,w=u,a=e[S],o=e[C],s=e[w],x=r(a,o)?r(o,s)?C:r(a,s)?w:S:r(s,o)?C:r(a,s)?S:w,x!=_&&(i=e[x],e[x]=e[_],e[_]=i,x=_),l=v=_+1,u=b=y,a=e[x];;){for(;l<=u&&!r(a,e[l]);)r(e[l],a)||(l>v&&(i=e[v],e[v]=e[l],e[l]=i),T=1,v++),l++;for(;l<=u&&!r(e[u],a);)r(a,e[u])||(uu)break;i=e[l],e[l]=e[u],e[u]=i,T=1,l++,u--}if(T==0){for(l=_,u=y,m=l+1;m<=u;m++)for(h=m;h>l&&r(e[h],e[h-1]);h--)i=e[h],e[h]=e[h-1],e[h-1]=i;break}for(f=Math.min(v-_,l-v),p=l-f|0,d=0;d1)p>1?f>p?(++c,E[c<<1]=_,E[(c<<1)+1]=_+f-1,l=y-p+1,u=y):(++c,E[c<<1]=y-p+1,E[(c<<1)+1]=y,l=_,u=_+f-1):(l=_,u=_+f-1);else if(p>1)l=y-p+1,u=y;else break}}median(e,t,n){let r,i=0,a=0,o=0,s=t+n>>1;for(;;){if(n<=t)return e[s];if(n==t+1)return e[t]>e[n]&&(r=e[t],e[t]=e[n],e[n]=r),e[s];for(i=t+n>>1,e[i]>e[n]&&(r=e[i],e[i]=e[n],e[n]=r),e[t]>e[n]&&(r=e[t],e[t]=e[n],e[n]=r),e[i]>e[t]&&(r=e[i],e[i]=e[t],e[t]=r),a=t+1,r=e[i],e[i]=e[a],e[a]=r,o=n;;){do++a;while(e[t]>e[a]);do--o;while(e[o]>e[t]);if(o=s&&(n=o-1)}return 0}},h=class extends c{constructor(){super()}grayscale(e,t,n,r,a){a===void 0&&(a=i.COLOR_RGBA2GRAY);let o=0,s=0,c=0,l=0,u=0,d=0,f=4899,p=9617,m=1868,h=4;(a==i.COLOR_BGRA2GRAY||a==i.COLOR_BGR2GRAY)&&(f=1868,m=4899),(a==i.COLOR_RGB2GRAY||a==i.COLOR_BGR2GRAY)&&(h=3);let g=h<<1,_=h*3|0;r.resize(t,n,1);let v=r.data;for(s=0;s>14,v[d+1]=e[u+h]*f+e[u+h+1]*p+e[u+h+2]*m+8192>>14,v[d+2]=e[u+g]*f+e[u+g+1]*p+e[u+g+2]*m+8192>>14,v[d+3]=e[u+_]*f+e[u+_+1]*p+e[u+_+2]*m+8192>>14;for(;o>14}}resample(e,t,n,r){let a=e.rows,o=e.cols;a>r&&o>n&&(t.resize(n,r,e.channel),e.type&i.U8_t&&t.type&i.U8_t&&a*o/(r*n)<256?u(e,t,this.cache,n,r):d(e,t,this.cache,n,r))}box_blur_gray(e,t,n,r){r===void 0&&(r=0);let a=e.cols,o=e.rows,s=o<<1,c=a<<1,l=0,u=0,d=0,f=0,p=(n<<1)+1|0,m=n+1|0,h=m+1|0,g=r&i.BOX_BLUR_NOSCALE?1:1/(p*p),_=this.cache.get_buffer(a*o<<2),v=0,y=0,b=0,x=0,S=0,C=_.i32,w=e.data,T=0;for(t.resize(a,o,e.channel),d=0;d>1,s=e.cols,c=e.rows,l=e.type,u=l&i.U8_t;t.resize(s,c,e.channel);let d=e.data,h=t.data,g,_,v=n+Math.max(c,s)|0,y=this.cache.get_buffer(v<<2),b=this.cache.get_buffer(n<<2);u?(g=y.i32,_=b.i32):l&i.S32_t?(g=y.i32,_=b.f32):(g=y.f32,_=b.f32),a.get_gaussian_kernel(n,r,_,l),u?f(g,d,h,s,c,_,n,o):p(g,d,h,s,c,_,n,o),this.cache.put_buffer(y),this.cache.put_buffer(b)}hough_transform(e,t,n,r){let i,a,o=e.data,s=e.cols,c=e.rows,l=s,u=Math.round((Math.PI-0)/n),d=Math.round(((s+c)*2+1)/t),f=1/t,p=new Int32Array((u+2)*(d+2)),m=new Float32Array(u),h=new Float32Array(u),g=0,_=0;for(;gr&&p[e]>p[e-1]&&p[e]>=p[e+1]&&p[e]>p[e-d-2]&&p[e]>=p[e+d+2]&&v.push(e)}v.sort(function(e,t){return p[e]>p[t]||p[e]==p[t]&&e>1,s=a>>1,c=o-(n<<1),l=s-(r<<1),u=0,d=0,f=n+r*i,p=0,m=0,h=0;t.resize(o,s,e.channel);let g=e.data,_=t.data;for(d=0;d>2,_[h+1]=g[p+2]+g[p+3]+g[p+i+2]+g[p+i+3]+2>>2;for(;u>2;f+=i<<1,m+=o}}scharr_derivatives(e,t){let n=e.cols,r=e.rows,a=n<<1,o=0,s=0,c=0,l,u,d,f,p,m,h=0,g=0,_=0,v=0,y,b;t.resize(n,r,2);let x=e.data,S=t.data,C=this.cache.get_buffer(n+2<<2),w=this.cache.get_buffer(n+2<<2);for(e.type&i.U8_t||e.type&i.S32_t?(y=C.i32,b=w.i32):(y=C.f32,b=w.f32);s0?s-1:1)*n|0,_=(s0?s-1:1)*n|0,_=(s0;--p)for(u=p+a*s,d=u-s,f=a;f>0;--f,u-=s,d-=s)r[u]+=r[d]+r[d+1]}}equalize_histogram(e,t){let n=e.cols,r=e.rows,i=e.data;t.resize(n,r,e.channel);let a=t.data,o=n*r,s=0,c=0,l,u,d=this.cache.get_buffer(1024);for(l=d.i32;s<256;++s)l[s]=0;for(s=0;sr&&(c=n,n=r,r=c),c=3*(a+2)|0;--c>=0;)T[c]=0;for(c=(o+2)*(a+2)|0;--c>=0;)E[c]=0;for(;u>31)-(g>>31)+((_^_>>31)-(_>>31));for(c=1;c<=o;++c,d+=f){if(c==o)for(u=M+a;--u>=M;)T[u]=0;else for(u=0;u>31)-(g>>31)+((_^_>>31)-(_>>31));for(p=d-f|0,E[P-1]=0,m=0,u=0;un){if(g=O[p],_=O[p+1],v=g^_,g=(g^g>>31)-(g>>31)|0,_=(_^_>>31)-(_>>31)|0,y=g*13573,b=y+(g+g<<15),_<<=15,_T[j+u-1]&&h>=T[j+u+1]){h>r&&!m&&E[P+u-N]!=2?(E[P+u]=2,m=1,D[F++]=P+u):E[P+u]=1;continue}}else if(_>b){if(h>T[A+u]&&h>=T[M+u]){h>r&&!m&&E[P+u-N]!=2?(E[P+u]=2,m=1,D[F++]=P+u):E[P+u]=1;continue}}else if(v=v<0?-1:1,h>T[A+u-v]&&h>T[M+u+v]){h>r&&!m&&E[P+u-N]!=2?(E[P+u]=2,m=1,D[F++]=P+u):E[P+u]=1;continue}}E[P+u]=0,m=0}E[P+a]=0,P+=N,u=A,A=j,j=M,M=u}for(u=P-N-1,c=0;c0;)P=D[--F],P-=N+1,E[P]==1&&(E[P]=2,D[F++]=P),P+=1,E[P]==1&&(E[P]=2,D[F++]=P),P+=1,E[P]==1&&(E[P]=2,D[F++]=P),P+=N,E[P]==1&&(E[P]=2,D[F++]=P),P-=2,E[P]==1&&(E[P]=2,D[F++]=P),P+=N,E[P]==1&&(E[P]=2,D[F++]=P),P+=1,E[P]==1&&(E[P]=2,D[F++]=P),P+=1,E[P]==1&&(E[P]=2,D[F++]=P);for(P=N+1,A=0,c=0;c0&&g>0&&p=0&&m>=0&&p95&&r>40&&i>20&&n>r&&n>i&&n-Math.min(r,i)>15&&Math.abs(n-r)>15?t[o]=255:t[o]=0}};function g(e,t,n,r){r=e[t],e[t]=e[n],e[n]=r}function _(e,t){return e=Math.abs(e),t=Math.abs(t),e>t?(t/=e,e*Math.sqrt(1+t*t)):t>0?(e/=t,t*Math.sqrt(1+e*e)):0}var v=class{constructor(){}identity(e,t){t===void 0&&(t=1);let n=e.data,r=e.rows,i=e.cols,a=i+1|0,o=r*i,s=o;for(;--o>=0;)n[o]=0;for(o=s,s=0;s0){for(d=0,b=Math.abs(e[u]),c=1;c1)for(;v0){for(d=0,b=Math.abs(e[p]),c=1;c>16&256?L:-L,e[d*t+p]=I;for(m=0;m<2;m++)for(f=0;fMath.abs(c[a*s+n])&&(a=r);if(Math.abs(c[a*s+n])=0;n--){for(f=l[n],a=n+1;a=0;s--){for(f=d[s],c=s+1,a=c*l;c=0;)n.data[s]=_.data[s];else n&&this.matmath.transpose(n,_);if(r&&a&i.SVD_V_T)for(s=f*f;--s>=0;)r.data[s]=y.data[s];else r&&this.matmath.transpose(r,y)}else{if(n&&a&i.SVD_U_T)for(s=f*f;--s>=0;)n.data[s]=y.data[s];else n&&this.matmath.transpose(n,y);if(r&&a&i.SVD_V_T)for(s=d*d;--s>=0;)r.data[s]=_.data[s];else r&&this.matmath.transpose(r,_)}this.cache.put_buffer(m),this.cache.put_buffer(h),this.cache.put_buffer(g)}svd_solve(e,t,n){let r=0,a=0,o=0,s=0,c=0,u=e.rows,d=e.cols,f=0,p=0,m=0,h=e.type|i.C1_t,g=this.cache.get_buffer(u*u<<3),_=this.cache.get_buffer(d<<3),v=this.cache.get_buffer(d*d<<3),y=new l(u,u,h,g.data),b=new l(1,d,h,_.data),x=new l(d,d,h,v.data),S=n.data,C=y.data,w=b.data,T=x.data;for(this.svd_decompose(e,b,y,x,0),m=i.EPSILON*w[0]*d;rm){for(o=0,f=0,s=0;op&&(f+=w[s+a]*S[o]/C[a]);x[c]=f}this.cache.put_buffer(h),this.cache.put_buffer(g),this.cache.put_buffer(_)}eigenVV(e,t,n){let r=e.cols,a=r*r,o=e.type|i.C1_t,s=this.cache.get_buffer(r*r<<3),c=this.cache.get_buffer(r<<3),u=new l(r,r,o,s.data),d=new l(1,r,o,c.data);for(;--a>=0;)u.data[a]=e.data[a];if(this.JacobiImpl(u.data,r,d.data,t?t.data:null,r,r),n)for(;--r>=0;)n.data[r]=d.data[r];this.cache.put_buffer(s),this.cache.put_buffer(c)}};function b(e,t,n,r,i){let a=0,o=e[t],s=i,c=0,l=0,u=0;for(;a<25;++a)r[a]=o-e[t+n[a]];for(a=0;a<16;a+=2)c=Math.min(r[a+1],r[a+2]),c=Math.min(c,r[a+3]),!(c<=s)&&(c=Math.min(c,r[a+4]),c=Math.min(c,r[a+5]),c=Math.min(c,r[a+6]),c=Math.min(c,r[a+7]),c=Math.min(c,r[a+8]),s=Math.max(s,Math.min(c,r[a])),s=Math.max(s,Math.min(c,r[a+9])));for(l=-s,a=0;a<16;a+=2)u=Math.max(r[a+1],r[a+2]),u=Math.max(u,r[a+3]),u=Math.max(u,r[a+4]),u=Math.max(u,r[a+5]),!(u>=l)&&(u=Math.max(u,r[a+6]),u=Math.max(u,r[a+7]),u=Math.max(u,r[a+8]),l=Math.min(l,Math.max(u,r[a])),l=Math.min(l,Math.max(u,r[a+9])));return-l-1}var x=class extends c{constructor(){super(),this.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]),this.threshold_tab=new Uint8Array(512),this._threshold=20,this.pixel_off=new Int32Array(25),this.score_diff=new Int32Array(25)}set_threshold(e){this._threshold=Math.min(Math.max(e,0),255);for(let e=-255;e<=255;++e)this.threshold_tab[e+255]=e<-this._threshold?1:e>this._threshold?2:0;return this._threshold}detect(e,t,n){n===void 0&&(n=3);let r=e.data,i=e.cols,a=e.rows,o=0,s=0,c=0,l=0,u=0,d=0,f=this.cache.get_buffer(3*i),p=this.cache.get_buffer((i+1)*3<<2),m=f.u8,h=p.i32,g=this.pixel_off,_=this.score_diff,v=Math.max(3,n),y=Math.min(a-2,a-n),x=Math.max(3,n),S=Math.min(i-3,i-n),C=0,w=0,T,E=b,D=this.threshold_tab,O=this._threshold,k=0,A=0,j=0,M=0,N=0,P=0,F=0,I=0,L=0,R=0,z=0,B=0;this._cmp_offsets(g,i,16);let V=g[0],ee=g[1],H=g[2],U=g[3],W=g[4],G=g[5],K=g[6],te=g[7],q=g[8],ne=g[9],J=g[10],Y=g[11],X=g[12],Z=g[13],Q=g[14],re=g[15];for(o=0;o8){++M,h[N+M]=s,m[P+s]=E(r,F,g,_,O);break}}else C=0;if(j&2)for(l=k+O,C=0,c=0;c<25;++c)if(u=r[F+g[c]],u>l){if(++C,C>8){++M,h[N+M]=s,m[P+s]=E(r,F,g,_,O);break}}else C=0}}if(h[N+i]=M,o!=v)for(d=(o-4+3)%3,I=d*i|0,N=d*(i+1)|0,d=(o-5+3)%3,L=d*i|0,M=h[N+i],c=0;cm[I+R]&&B>m[I+z]&&B>m[L+z]&&B>m[L+s]&&B>m[L+R]&&B>m[P+z]&&B>m[P+s]&&B>m[P+R]&&(T=t[w],T.x=s,T.y=o-1,T.score=B,w++)}return this.cache.put_buffer(f),this.cache.put_buffer(p),w}_cmp_offsets(e,t,n){let r=0,i=this.offsets16;for(;r=0;)this.data[r]=new l(e>>r,t>>r,n)}build(e,t){t===void 0&&(t=!0);let n=2,r=e,i=this.data[0];if(!t){let t=e.cols*e.rows;for(;--t>=0;)i.data[t]=e.data[t]}for(i=this.data[1],this.pyrdown(r,i);n=0;i--,r++)a=Math.sqrt(n*n-i*i)+.5|0,t[r]=i+e*a;for(;-i=0;a--,r++)i=-Math.sqrt(n*n-a*a)-.5|0,t[r]=i+e*a;for(;a>i;a--,r++)i=-Math.sqrt(n*n-a*a)-.5|0,t[r]=i+e*a;for(i++;i<=0;i++,r++)a=-Math.sqrt(n*n-i*i)-.5|0,t[r]=i+e*a;for(;i<-a;i++,r++)a=-Math.sqrt(n*n-i*i)-.5|0,t[r]=i+e*a;for(a++;a<0;a++,r++)i=Math.sqrt(n*n-a*a)+.5|0,t[r]=i+e*a;return t[r]=t[0],t[r+1]=t[1],r}function k(e,t,n){let r=0;return e[t+1]!=0&&r++,e[t-1]!=0&&r++,e[t+n]!=0&&r++,e[t+n+1]!=0&&r++,e[t+n-1]!=0&&r++,e[t-n]!=0&&r++,e[t-n+1]!=0&&r++,e[t-n-1]!=0&&r++,r}function A(e,t,n,r,i){let a,o;if(n>0)for(t-=r*i,o=-i;o<=i;++o){for(a=-i;a<=i;++a)if(e[t+a]>n)return!1;t+=r}else for(t-=r*i,o=-i;o<=i;++o){for(a=-i;a<=i;++a)if(e[t+a]=r)if(f=e[t+a[u]],f<=i)if(f>=r){n[t]=0;return}else if(u++,p=e[t+a[u]],p>i)if(u++,m=e[t+a[u]],m>i)h=3;else if(mi)h=7;else if(mi)if(u++,m=e[t+a[u]],m>i)h=3;else if(mi)h=7;else if(mi){n[t]=0;return}if(u++,p=e[t+a[u]],p>i){n[t]=0;return}if(u++,m=e[t+a[u]],m>i){n[t]=0;return}h=1}else{if(f=e[t+a[u]],fi){if(p=m,u++,m=e[t+a[u]],mi){n[t]=0;return}if(m>i){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],m>i){n[t]=0;return}c-=d+p,h=8;break}if(p<=i){n[t]=0;return}if(m<=i){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],m>i){c-=d+p,h=3;break}if(mi){n[t]=0;return}c-=d+p,h=1;break}if(d>i){if(p=r){n[t]=0;return}if(m>=r){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],mi){c-=d+p,h=7;break}n[t]=0;return;case 2:if(d>i){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],di){n[t]=0;return}c-=d+p,h=4;break}if(m>i){c-=d+p,h=7;break}if(mi){if(mi){c-=d+p,h=3;break}if(mi){n[t]=0;return}if(di){n[t]=0;return}c-=d+p,h=1;break}if(m>=r){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],mi){c-=d+p,h=7;break}n[t]=0;return;case 5:if(di){if(p=m,u++,m=e[t+a[u]],mi){c-=d+p,h=3;break}if(mi){n[t]=0;return}if(di){c-=d+p,h=3;break}if(mi){n[t]=0;return}if(di){c-=d+p,h=7;break}n[t]=0;return;case 8:if(d>i){if(mi){n[t]=0;return}c-=d+p,h=1;break}n[t]=0;return;case 9:if(di){n[t]=0;return}if(p=m,u++,m=e[t+a[u]],m>i){n[t]=0;return}c-=d+p,h=8;break}if(d>i){if(p=m,u++,m=e[t+a[u]],m>i,t>>i,n)}detect(e,t,n=4){let r=this.level_tables[0],i=r.radius|0,a=i-1|0,o=r.dirs,s=r.dirs_count|0,c=s>>1,l=e.data,u=e.cols|0,d=e.rows|0,f=u>>1,p=r.scores,m=0,h=0,g=0,_=0,v=0,y=0,b=0,x=0,S=this.tau|0,C=0,w,T=Math.max(i+1,n)|0,E=Math.max(i+1,n)|0,D=Math.min(u-i-2,u-n)|0,O=Math.min(d-i-2,d-n)|0;for(g=E*u+T|0,h=E;h=3&&A(p,_,x,f,i)&&(w=t[C],w.x=m,w.y=h,w.score=b,++C,m+=a,_+=a);return C}};function P(e,t,n,r,i,a,o,s,c){let l=0,u=0,d=o*n+a|0,f=d;for(l=o;l=0&&f+i=0?t[f]=-4*e[f]+e[f+r]+e[f-r]+e[f+i]+e[f-i]:t[f]=0}function F(e,t,n,r,i,a,o){let s=-2*e[t]+e[t+r]+e[t-r],c=-2*e[t]+e[t+i]+e[t-i],l=e[t+a]+e[t-a]-e[t+o]-e[t-o],u=Math.sqrt((s-c)*(s-c)+4*l*l)|0;return Math.min(Math.abs(n-u),Math.abs(-(n+u)))}var I=class extends c{constructor(){super(),this.laplacian_threshold=30,this.min_eigen_value_threshold=25}detect(e,t,n){n===void 0&&(n=5);let r=0,i=0,a=e.cols,o=e.rows,s=e.data,c=5*a|0,l=3+3*a|0,u=3-3*a|0,d=this.cache.get_buffer(a*o<<2),f=d.i32,p=0,m=0,h=0,g=0,_,v=0,y=this.laplacian_threshold,b=this.min_eigen_value_threshold,x=Math.max(5,n)|0,S=Math.max(3,n)|0,C=Math.min(a-5,a-n)|0,w=Math.min(o-3,o-n)|0;for(r=a*o;--r>=0;)f[r]=0;for(P(s,f,a,5,c,x,S,C,w),m=S*a+x|0,i=S;iy&&p>f[h-1]&&p>f[h+1]&&p>f[h-a]&&p>f[h+a]&&p>f[h-a-1]&&p>f[h+a-1]&&p>f[h-a+1]&&p>f[h+a+1])&&(g=F(s,h,p,5,c,l,u),g>b&&(_=t[v],_.x=r,_.y=i,_.score=g,++v,++r,++h));return this.cache.put_buffer(d),v}},L=class{constructor(e=0,t=.5,n=.5,r=.99){this.size=e,this.thresh=t,this.eps=n,this.prob=r}update_iters(e,t){let n=Math.log(1-this.prob),r=Math.log(1-Math.pow(1-e,this.size));return(r>=0||-n>=t*-r?t:Math.round(n/r))|0}},R=class extends c{constructor(){super()}get_subset(e,t,n,r,i,a,o){let s=1e3,c=[],l=0,u=0,d=0,f=0,p=!1;for(;d=0;)s.data[a]=1;return this.cache.put_buffer(b),this.cache.put_buffer(x),this.cache.put_buffer(S),!0}for(;fMath.max(T,u-1)&&(C.copy_to(o),T=E,s&&w.copy_to(s),d=e.update_iters((a-E)/a,d),p=!0))}return this.cache.put_buffer(b),this.cache.put_buffer(x),this.cache.put_buffer(S),p}lmeds(e,t,n,r,a,o,s,c){if(c===void 0&&(c=1e3),a=0;)s.data[a]=1;return this.cache.put_buffer(S),this.cache.put_buffer(C),this.cache.put_buffer(w),!0}for(;f=u),this.cache.put_buffer(S),this.cache.put_buffer(C),this.cache.put_buffer(w),p}},z=class extends c{constructor(){super(),this.T0=new l(3,3,i.F32_t|i.C1_t),this.T1=new l(3,3,i.F32_t|i.C1_t),this.AtA=new l(6,6,i.F32_t|i.C1_t),this.AtB=new l(6,1,i.F32_t|i.C1_t)}sqr(e){return e*e}iso_normalize_points(e,t,n,r,i){let a=0,o=0,s=0,c=0,l=0,u=0,d=0,f=0,p=0,m=0,h=0;for(;a=0;)u[a]=0;for(a=0;a=0;--X)for(I=1/(1<>X,S=b>>X,A=x<<1,_=h[X].data,v=g[X].data,re=x-o|0,ie=S-o|0,this.scharr_deriv(h[X],E),Z=0;Z=re||G<=0||G>=ie,J!=0){X==0&&(c[Z]=0);continue}for(ae=L-W,oe=R-G,fe=(1-ae)*(1-oe)*le+.5|0,pe=ae*(1-oe)*le+.5|0,me=(1-ae)*oe*le+.5|0,he=le-fe-pe-me,ve=0,ye=0,be=0,Y=0;Y>9,_e=k[M]*fe+k[M+2]*pe+k[M+A]*me+k[M+A+2]*he,_e=_e+ue>>14,$=k[M+1]*fe+k[M+3]*pe+k[M+A+1]*me+k[M+A+3]*he,$=$+ue>>14,D[N]=ge,O[P++]=_e,O[P++]=$,ve+=_e*_e,ye+=_e*$,be+=$*$;if(ve*=de,ye*=de,be*=de,xe=ve*be-ye*ye,Se=(be+ve-Math.sqrt((ve-be)*(ve-be)+4*ye*ye))/m,Se=re||te<=0||te>=ie,J!=0){X==0&&(c[Z]=0);break}for(ae=z-K,oe=B-te,fe=(1-ae)*(1-oe)*le+.5|0,pe=ae*(1-oe)*le+.5|0,me=(1-ae)*oe*le+.5|0,he=le-fe-pe-me,se=0,ce=0,Y=0;Y>9,ge-=D[N],se+=ge*O[P++],ce+=ge*O[P++];if(se*=de,ce*=de,H=(ye*ce-be*se)*xe,U=(ye*se-ve*ce)*xe,z+=H,B+=U,r[q]=z+f,r[ne]=B+f,H*H+U*U<=u)break;if(Q>0&&Math.abs(H+V)<.01&&Math.abs(U+ee)<.01){r[q]-=H*.5,r[ne]-=U*.5;break}V=H,ee=U}}this.cache.put_buffer(C),this.cache.put_buffer(w),this.cache.put_buffer(T)}},H=c;return c.cache=s,c.pyramid_t=S,c.matrix_t=l,c.keypoint_t=w,c.ransac_params_t=L,c.transform=new C,c.fast_corners=new x,c.imgproc=new h,c.math=new m,c.matmath=new v,c.linalg=new y,c.orb=new D,c.yape=new N,c.yape06=new I,c.motion_estimator=new R,c.affine2d=new B,c.homography2d=new V,c.optical_flow_lk=new ee,H}); \ No newline at end of file diff --git a/dist/jsfeatNext.mjs b/dist/jsfeatNext.mjs index c3712ae..cae56f3 100644 --- a/dist/jsfeatNext.mjs +++ b/dist/jsfeatNext.mjs @@ -1,5 +1,5 @@ /*! - * jsfeatNext v0.10.1 — https://github.com/webarkit/jsfeatNext + * jsfeatNext v0.11.0 — https://github.com/webarkit/jsfeatNext * * SPDX-License-Identifier: LGPL-3.0-or-later * Copyright 2026 WebARKit. Author(s): Walter Perdan @kalwalt @@ -100,7 +100,7 @@ var e = class { S32C2_t: 514 }, a = { name: "@webarkit/jsfeat-next", - version: "0.10.1", + version: "0.11.0", description: "Typescript version of jsfeat for WebARKit", main: "dist/jsfeatNext.js", module: "dist/jsfeatNext.mjs", @@ -121,6 +121,7 @@ var e = class { "dev-ts": "vite build --watch", "format-check": "prettier --check .", format: "prettier --write .", + "license-check": "node scripts/check-license-headers.mjs", test: "vitest run", "test:watch": "vitest", docs: "typedoc" diff --git a/package-lock.json b/package-lock.json index 513e930..ad8dab1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@webarkit/jsfeat-next", - "version": "0.10.1", + "version": "0.11.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@webarkit/jsfeat-next", - "version": "0.10.1", + "version": "0.11.0", "license": "LGPL-3.0-or-later", "devDependencies": { "prettier": "~3.9.4", diff --git a/package.json b/package.json index 956cce1..50e6246 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@webarkit/jsfeat-next", - "version": "0.10.1", + "version": "0.11.0", "description": "Typescript version of jsfeat for WebARKit", "main": "dist/jsfeatNext.js", "module": "dist/jsfeatNext.mjs",