@@ -2478,7 +2488,7 @@ public class GpuQuad{ // quad camera description
...
@@ -2478,7 +2488,7 @@ public class GpuQuad{ // quad camera description
Pointer.to(newfloat[]{(float)min_agree}),// float min_agree, // minimal number of channels to agree on a point (real number to work with fuzzy averages)
Pointer.to(newfloat[]{(float)min_agree}),// float min_agree, // minimal number of channels to agree on a point (real number to work with fuzzy averages)
Pointer.to(gpu_color_weights),// float weights[3], // scale for R,B,G (or {1.0,0.0,0.0}
Pointer.to(gpu_color_weights),// float weights[3], // scale for R,B,G (or {1.0,0.0,0.0}
Pointer.to(newint[]{idust_remove}),// int dust_remove, // Do not reduce average weight when only one image differes much from the average
Pointer.to(newint[]{idust_remove}),// int dust_remove, // Do not reduce average weight when only one image differes much from the average
Pointer.to(newint[]{0}),// int keep_weights, // return channel weights after A in RGBA
Pointer.to(newint[]{keep_weights}),// int keep_weights, // return channel weights after A in RGBA
// combining both non-overlap and overlap (each calculated if pointer is not null )
// combining both non-overlap and overlap (each calculated if pointer is not null )
Pointer.to(newint[]{texture_stride_rgba}),// const size_t texture_rbga_stride, // in floats
Pointer.to(newint[]{texture_stride_rgba}),// const size_t texture_rbga_stride, // in floats
Pointer.to(newint[]{ilinescan_order}),// 1, // int linescan_order, // if !=0 then output gpu_diff_rgb_combo in linescan order, else - in gpu_texture_indices order
Pointer.to(newint[]{ilinescan_order}),// 1, // int linescan_order, // if !=0 then output gpu_diff_rgb_combo in linescan order, else - in gpu_texture_indices order
...
@@ -2642,6 +2659,7 @@ public class GpuQuad{ // quad camera description
...
@@ -2642,6 +2659,7 @@ public class GpuQuad{ // quad camera description
doublediff_threshold,// pixel value/pixel change
doublediff_threshold,// pixel value/pixel change
doublemin_agree,// minimal number of channels to agree on a point (real number to work with fuzzy averages)
doublemin_agree,// minimal number of channels to agree on a point (real number to work with fuzzy averages)
booleandust_remove,// Do not reduce average weight when only one image differs much from the average
booleandust_remove,// Do not reduce average weight when only one image differs much from the average
intkeep_weights,// 2 bits now, move to parameters
booleancalc_textures,
booleancalc_textures,
booleancalc_extra,
booleancalc_extra,
booleanlinescan_order)
booleanlinescan_order)
...
@@ -2656,7 +2674,7 @@ public class GpuQuad{ // quad camera description
...
@@ -2656,7 +2674,7 @@ public class GpuQuad{ // quad camera description
IJ.showMessage("Error","No GPU kernel(s)");
IJ.showMessage("Error","No GPU kernel(s)");
return;
return;
}
}
intkeep_texture_weights=0;// pass as parameter?
intkeep_texture_weights=keep_weights;// pass as parameter?
inttilesX=img_width/GPUTileProcessor.DTT_SIZE;
inttilesX=img_width/GPUTileProcessor.DTT_SIZE;
intnum_colors=is_lwir?1:color_weights.length;
intnum_colors=is_lwir?1:color_weights.length;
if(num_colors>3)num_colors=3;
if(num_colors>3)num_colors=3;
...
@@ -3364,7 +3382,7 @@ public class GpuQuad{ // quad camera description
...
@@ -3364,7 +3382,7 @@ public class GpuQuad{ // quad camera description
returntextures;
returntextures;
}
}
publicdouble[][][][]doubleTextures(
publicstaticdouble[][][][]doubleTextures(// not used
Rectanglewoi,
Rectanglewoi,
int[]indices,
int[]indices,
float[][][]ftextures,
float[][][]ftextures,
...
@@ -3390,7 +3408,7 @@ public class GpuQuad{ // quad camera description
...
@@ -3390,7 +3408,7 @@ public class GpuQuad{ // quad camera description
returntextures;
returntextures;
}
}
publicdouble[][][][]doubleTextures(// may be accelerated with multithreading if needed.
publicstaticdouble[][][][]doubleTextures(// may be accelerated with multithreading if needed.
Rectanglewoi,// null or width and height match texture_tiles
Rectanglewoi,// null or width and height match texture_tiles
double[][][][]texture_tiles,// null or [tilesY][tilesX]
double[][][][]texture_tiles,// null or [tilesY][tilesX]
* @param min_agree minimal number of channels to agree on a point (real number to work with fuzzy averages) (3.0)
* @param min_agree minimal number of channels to agree on a point (real number to work with fuzzy averages) (3.0)
* @param weights scales for R,B,G {0.294118, 0.117647, 0.588235}
* @param weights scales for R,B,G {0.294118, 0.117647, 0.588235}
* @param dust_remove do not reduce average weight when only one image differs much from the average (true)
* @param dust_remove do not reduce average weight when only one image differs much from the average (true)
* @param keep_weights return channel weights after A in RGBA (was removed)
* @param keep_weights return channel weights after A in RGBA (was removed). Now (11/12/2022): +1 - old meaning, +2 - replace port_weights with channel imclt
* @param texture_rbg_stride output stride for overlapped texture in floats, or 0 to skip
* @param texture_rbg_stride output stride for overlapped texture in floats, or 0 to skip
float*mclt_tmps=&all_shared[offsets[2]];// [num_cams][colors][DTT_SIZE2][DTT_SIZE21]; // 16*1*16*17=0x1100 | 4*3*16*17=0xcc0. Used only with Bayer, not with mono