Loading js/align_functions.js +17 −3 Original line number Original line Diff line number Diff line Loading @@ -175,7 +175,21 @@ function hll_dr_dh_i(i,v){ */ */ function hll_w_i(i,v){ function hll_w_i(i,v){ return 1; var mark = Data.markers[i]; var xi = mark.align.x; var yi = mark.align.y; var zi = mark.align.z; //var arad = 0.0004404; var D = 100; var d = Math.sqrt(Math.pow(xi,2)+Math.pow(yi,2)+Math.pow(zi,2)); var res = d/D; res = (res>1)?1:res; return res; } } /** /** Loading Loading @@ -260,8 +274,8 @@ function art_l_i(i){ } } function art_w_i(i,v){ function art_w_i(i,v){ return 1; //return 1; //return 1/art_l_i(i); return 1/art_l_i(i); } } /** /** Loading js/numbers/numbers.calculus.extra.js +25 −7 Original line number Original line Diff line number Diff line Loading @@ -4,7 +4,7 @@ * @copyright Copyright (C) 2017 Elphel Inc. * @copyright Copyright (C) 2017 Elphel Inc. * @authors Oleg Dzhimiev <oleg@elphel.com> * @authors Oleg Dzhimiev <oleg@elphel.com> * * * @license: GPL-3.0 * @license: GPL-3.0+ * * * @licstart The following is the entire license notice for the * @licstart The following is the entire license notice for the * JavaScript code in this page. * JavaScript code in this page. Loading Loading @@ -53,6 +53,13 @@ numbers.calculus.GaussNewton = function(v,n,r,dr,eps,w){ }; }; } } // for normalization var WSUM = 0; for(var i=0;i<n;i++){ WSUM += w(i,v) } while(!stop){ while(!stop){ counter++ counter++ Loading Loading @@ -84,8 +91,13 @@ numbers.calculus.GaussNewton = function(v,n,r,dr,eps,w){ var J = jacobian(v,n,dr) var J = jacobian(v,n,dr) var Jt = numbers.matrix.transpose(J) var Jt = numbers.matrix.transpose(J) for(var i=0;i<n;i++){ J = numbers.matrix.rowScale(J,i,wn(i,v)) } // JtJ // JtJ J = numbers.matrix.multiply(Jt,J) J = numbers.matrix.multiply(Jt,J) // (Jt x J)^-1 // (Jt x J)^-1 J = numbers.matrix.inverse(J) J = numbers.matrix.inverse(J) // (Jt x J)^-1 x Jt // (Jt x J)^-1 x Jt Loading @@ -93,7 +105,7 @@ numbers.calculus.GaussNewton = function(v,n,r,dr,eps,w){ var V = [] var V = [] for(var i=0;i<n;i++){ for(var i=0;i<n;i++){ V.push([r(i,v)]) V.push([wn(i,v)*r(i,v)]) } } var delta = numbers.matrix.multiply(J,V) var delta = numbers.matrix.multiply(J,V) Loading @@ -114,16 +126,17 @@ numbers.calculus.GaussNewton = function(v,n,r,dr,eps,w){ function sigma(v,n,r){ function sigma(v,n,r){ var sum = 0 var sum = 0 var wsum = 0 //var wsum = 0 for(var i=0;i<n;i++){ for(var i=0;i<n;i++){ sum += w(i,v)*r(i,v)*r(i,v) sum += wn(i,v)*r(i,v)*r(i,v) wsum += w(i,v) //wsum += w(i,v) } } //console.log("sum = "+sum+" wsum = "+wsum); //console.log("sum = "+sum+" wsum = "+wsum); sum = Math.sqrt(sum/wsum) //sum = Math.sqrt(sum/wsum) sum = Math.sqrt(sum) return sum return sum Loading @@ -137,7 +150,7 @@ numbers.calculus.GaussNewton = function(v,n,r,dr,eps,w){ var row = [] var row = [] for(var j=0;j<dr.length;j++){ for(var j=0;j<dr.length;j++){ row.push(w(i,v)*dr[j](i,v)) row.push(dr[j](i,v)) } } J[i] = row J[i] = row Loading @@ -147,4 +160,9 @@ numbers.calculus.GaussNewton = function(v,n,r,dr,eps,w){ } } // normalized weight function wn(i,v){ return w(i,v)/WSUM; } } } Loading
js/align_functions.js +17 −3 Original line number Original line Diff line number Diff line Loading @@ -175,7 +175,21 @@ function hll_dr_dh_i(i,v){ */ */ function hll_w_i(i,v){ function hll_w_i(i,v){ return 1; var mark = Data.markers[i]; var xi = mark.align.x; var yi = mark.align.y; var zi = mark.align.z; //var arad = 0.0004404; var D = 100; var d = Math.sqrt(Math.pow(xi,2)+Math.pow(yi,2)+Math.pow(zi,2)); var res = d/D; res = (res>1)?1:res; return res; } } /** /** Loading Loading @@ -260,8 +274,8 @@ function art_l_i(i){ } } function art_w_i(i,v){ function art_w_i(i,v){ return 1; //return 1; //return 1/art_l_i(i); return 1/art_l_i(i); } } /** /** Loading
js/numbers/numbers.calculus.extra.js +25 −7 Original line number Original line Diff line number Diff line Loading @@ -4,7 +4,7 @@ * @copyright Copyright (C) 2017 Elphel Inc. * @copyright Copyright (C) 2017 Elphel Inc. * @authors Oleg Dzhimiev <oleg@elphel.com> * @authors Oleg Dzhimiev <oleg@elphel.com> * * * @license: GPL-3.0 * @license: GPL-3.0+ * * * @licstart The following is the entire license notice for the * @licstart The following is the entire license notice for the * JavaScript code in this page. * JavaScript code in this page. Loading Loading @@ -53,6 +53,13 @@ numbers.calculus.GaussNewton = function(v,n,r,dr,eps,w){ }; }; } } // for normalization var WSUM = 0; for(var i=0;i<n;i++){ WSUM += w(i,v) } while(!stop){ while(!stop){ counter++ counter++ Loading Loading @@ -84,8 +91,13 @@ numbers.calculus.GaussNewton = function(v,n,r,dr,eps,w){ var J = jacobian(v,n,dr) var J = jacobian(v,n,dr) var Jt = numbers.matrix.transpose(J) var Jt = numbers.matrix.transpose(J) for(var i=0;i<n;i++){ J = numbers.matrix.rowScale(J,i,wn(i,v)) } // JtJ // JtJ J = numbers.matrix.multiply(Jt,J) J = numbers.matrix.multiply(Jt,J) // (Jt x J)^-1 // (Jt x J)^-1 J = numbers.matrix.inverse(J) J = numbers.matrix.inverse(J) // (Jt x J)^-1 x Jt // (Jt x J)^-1 x Jt Loading @@ -93,7 +105,7 @@ numbers.calculus.GaussNewton = function(v,n,r,dr,eps,w){ var V = [] var V = [] for(var i=0;i<n;i++){ for(var i=0;i<n;i++){ V.push([r(i,v)]) V.push([wn(i,v)*r(i,v)]) } } var delta = numbers.matrix.multiply(J,V) var delta = numbers.matrix.multiply(J,V) Loading @@ -114,16 +126,17 @@ numbers.calculus.GaussNewton = function(v,n,r,dr,eps,w){ function sigma(v,n,r){ function sigma(v,n,r){ var sum = 0 var sum = 0 var wsum = 0 //var wsum = 0 for(var i=0;i<n;i++){ for(var i=0;i<n;i++){ sum += w(i,v)*r(i,v)*r(i,v) sum += wn(i,v)*r(i,v)*r(i,v) wsum += w(i,v) //wsum += w(i,v) } } //console.log("sum = "+sum+" wsum = "+wsum); //console.log("sum = "+sum+" wsum = "+wsum); sum = Math.sqrt(sum/wsum) //sum = Math.sqrt(sum/wsum) sum = Math.sqrt(sum) return sum return sum Loading @@ -137,7 +150,7 @@ numbers.calculus.GaussNewton = function(v,n,r,dr,eps,w){ var row = [] var row = [] for(var j=0;j<dr.length;j++){ for(var j=0;j<dr.length;j++){ row.push(w(i,v)*dr[j](i,v)) row.push(dr[j](i,v)) } } J[i] = row J[i] = row Loading @@ -147,4 +160,9 @@ numbers.calculus.GaussNewton = function(v,n,r,dr,eps,w){ } } // normalized weight function wn(i,v){ return w(i,v)/WSUM; } } }