** EyesisCorrectionParameters.java is free software: you can redistribute it and/or modify
** EyesisCorrectionParameters.java is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** the Free Software Foundation, either version 3 of the License, or
...
@@ -55,15 +55,15 @@ public class EyesisCorrectionParameters {
...
@@ -55,15 +55,15 @@ public class EyesisCorrectionParameters {
publicbooleanblueProc=true;
publicbooleanblueProc=true;
publicbooleantoRGB=true;
publicbooleantoRGB=true;
publicbooleanrotate=true;
publicbooleanrotate=true;
publicbooleancrop=true;// crop to the sennor size
publicbooleancrop=true;// crop to the sennor size
publicintequirectangularFormat=0;// 0 - 8 bit RGBA, 1 - 16 bit RGBA, 2 (32 int or 16 float!) ?, 3 - 32-bit FP RGBA. only 0, 1 and 3 currently supported
publicintequirectangularFormat=0;// 0 - 8 bit RGBA, 1 - 16 bit RGBA, 2 (32 int or 16 float!) ?, 3 - 32-bit FP RGBA. only 0, 1 and 3 currently supported
publicdoubleoutputRangeInt=0.25;// 1.0 intensity will be mapped to 65535*0.25
publicdoubleoutputRangeInt=0.25;// 1.0 intensity will be mapped to 65535*0.25
publicdoubleoutputRangeFP=255.0;// 1.0 intensity will be saved as 255.0 (in float 32-bit mode)
publicdoubleoutputRangeFP=255.0;// 1.0 intensity will be saved as 255.0 (in float 32-bit mode)
publicbooleanimageJTags=false;// encode ImageJ info data to the TIFF output header
publicbooleanimageJTags=false;// encode ImageJ info data to the TIFF output header
publicbooleanjpeg=true;// convert to RGB and save JPEG (if save is true)
publicbooleanjpeg=true;// convert to RGB and save JPEG (if save is true)
publicbooleansave=true;
publicbooleansave=true;
publicbooleansave16=false;// save 16-bit tiff also if the end result is 8 bit
publicbooleansave16=false;// save 16-bit tiff also if the end result is 8 bit
publicbooleansave32=false;// save 32-bit tiff also if the end result is 8 or 16 bit
publicbooleansave32=false;// save 32-bit tiff also if the end result is 8 or 16 bit
publicbooleanshow=false;
publicbooleanshow=false;
publicintJPEG_quality=95;
publicintJPEG_quality=95;
...
@@ -80,7 +80,7 @@ public class EyesisCorrectionParameters {
...
@@ -80,7 +80,7 @@ public class EyesisCorrectionParameters {
publicStringsensorDirectory="";
publicStringsensorDirectory="";
publicStringsensorPrefix="sensor-";
publicStringsensorPrefix="sensor-";
publicStringsensorSuffix=".calib-tiff";// fixed in PixelMapping
publicStringsensorSuffix=".calib-tiff";// fixed in PixelMapping
publicStringsharpKernelDirectory="";
publicStringsharpKernelDirectory="";
publicStringsharpKernelPrefix="sharpKernel-";
publicStringsharpKernelPrefix="sharpKernel-";
publicStringsharpKernelSuffix=".kernel-tiff";
publicStringsharpKernelSuffix=".kernel-tiff";
...
@@ -97,7 +97,7 @@ public class EyesisCorrectionParameters {
...
@@ -97,7 +97,7 @@ public class EyesisCorrectionParameters {
publicbooleanequirectangularCut=true;
publicbooleanequirectangularCut=true;
publicStringplaneMapPrefix="";
publicStringplaneMapPrefix="";
publicStringplaneMapSuffix=".plane-proj-tiff";
publicStringplaneMapSuffix=".plane-proj-tiff";
publicbooleanusePlaneProjection=false;//
publicbooleanusePlaneProjection=false;//
publicbooleanplaneAsJPEG=true;// save de-warped image as JPEG (only if equirectangularFormat==0)
publicbooleanplaneAsJPEG=true;// save de-warped image as JPEG (only if equirectangularFormat==0)
// public String equirectangularSuffixA="A.eqr-tiff"; // or the roll-over part
// public String equirectangularSuffixA="A.eqr-tiff"; // or the roll-over part
publicStringresultsDirectory="";
publicStringresultsDirectory="";
...
@@ -105,12 +105,12 @@ public class EyesisCorrectionParameters {
...
@@ -105,12 +105,12 @@ public class EyesisCorrectionParameters {
if(properties.getProperty(prefix+"jpeg")!=null)this.jpeg=Boolean.parseBoolean(properties.getProperty(prefix+"jpeg"));// convert to RGB and save jpeg (if save is true)
if(properties.getProperty(prefix+"jpeg")!=null)this.jpeg=Boolean.parseBoolean(properties.getProperty(prefix+"jpeg"));// convert to RGB and save jpeg (if save is true)
if(properties.getProperty(prefix+"save16")!=null)this.save16=Boolean.parseBoolean(properties.getProperty(prefix+"save16"));// save 16-bit tiff also if the end result is 8 bit
if(properties.getProperty(prefix+"save16")!=null)this.save16=Boolean.parseBoolean(properties.getProperty(prefix+"save16"));// save 16-bit tiff also if the end result is 8 bit
if(properties.getProperty(prefix+"save32")!=null)this.save32=Boolean.parseBoolean(properties.getProperty(prefix+"save32"));// save 32-bit tiff also if the end result is 8 or 16 bit
if(properties.getProperty(prefix+"save32")!=null)this.save32=Boolean.parseBoolean(properties.getProperty(prefix+"save32"));// save 32-bit tiff also if the end result is 8 or 16 bit
if(properties.getProperty(prefix+"crop")!=null)this.crop=Boolean.parseBoolean(properties.getProperty(prefix+"crop"));// crop to the sensor size
if(properties.getProperty(prefix+"crop")!=null)this.crop=Boolean.parseBoolean(properties.getProperty(prefix+"crop"));// crop to the sensor size
if(properties.getProperty(prefix+"jpeg")!=null)this.jpeg=Boolean.parseBoolean(properties.getProperty(prefix+"jpeg"));// convert to RGB and save jpeg (if save is true)
if(properties.getProperty(prefix+"jpeg")!=null)this.jpeg=Boolean.parseBoolean(properties.getProperty(prefix+"jpeg"));// convert to RGB and save jpeg (if save is true)
if(properties.getProperty(prefix+"save16")!=null)this.save16=Boolean.parseBoolean(properties.getProperty(prefix+"save16"));// save 16-bit tiff also if the end result is 8 bit
if(properties.getProperty(prefix+"save16")!=null)this.save16=Boolean.parseBoolean(properties.getProperty(prefix+"save16"));// save 16-bit tiff also if the end result is 8 bit
if(properties.getProperty(prefix+"save32")!=null)this.save32=Boolean.parseBoolean(properties.getProperty(prefix+"save32"));// save 32-bit tiff also if the end result is 8 or 16 bit
if(properties.getProperty(prefix+"save32")!=null)this.save32=Boolean.parseBoolean(properties.getProperty(prefix+"save32"));// save 32-bit tiff also if the end result is 8 or 16 bit
@@ -1349,15 +1349,15 @@ public class EyesisCorrectionParameters {
...
@@ -1349,15 +1349,15 @@ public class EyesisCorrectionParameters {
publicdoublesatDetPartInside;// Fraction of all pixels in the square to fit inside
publicdoublesatDetPartInside;// Fraction of all pixels in the square to fit inside
publicdoublesatDetMinFrac;// minimal value for average compared to average over the whole picture
publicdoublesatDetMinFrac;// minimal value for average compared to average over the whole picture
publicdoublesatDetFinRelDiff;// maximal difference from average for the saturated tile to be considered saturated
publicdoublesatDetFinRelDiff;// maximal difference from average for the saturated tile to be considered saturated
publicdoublesatDetGrowRelDiff;// maximal difference from start tile average during growing of overexposed areas
publicdoublesatDetGrowRelDiff;// maximal difference from start tile average during growing of overexposed areas
publicdoublesatDetNewWeight;// weight of new pixel when expanding overexposed areas
publicdoublesatDetNewWeight;// weight of new pixel when expanding overexposed areas
publicintsatDetExpSym;// number of overexposure expand steps, not allowing any brighter
publicintsatDetExpSym;// number of overexposure expand steps, not allowing any brighter
publicintsatDetExpOver;// number of overexposure expand steps, limited under, any over
publicintsatDetExpOver;// number of overexposure expand steps, limited under, any over
publicintsatDetExpCleanUp;// number of overexposure expand steps, not allowing any brighter (final to clean up oscillations)
publicintsatDetExpCleanUp;// number of overexposure expand steps, not allowing any brighter (final to clean up oscillations)
publicdoublesatDetGrowRelDiffCleanUp;// maximal difference from start tile average during growing of overexposed areas (final to clean up oscillations)
publicdoublesatDetGrowRelDiffCleanUp;// maximal difference from start tile average during growing of overexposed areas (final to clean up oscillations)
publicintblueOverShrink;// shrink blue overexposed area by this number of pixels (to get to undisturbed R/G)
publicintblueOverShrink;// shrink blue overexposed area by this number of pixels (to get to undisturbed R/G)
publicintblueOverGrow;// grow blue overexposed area by this number of pixels
publicintblueOverGrow;// grow blue overexposed area by this number of pixels
publicdoubleblueBandWidth;// average amount of blue leak in pixels
publicdoubleblueBandWidth;// average amount of blue leak in pixels
...
@@ -1367,13 +1367,13 @@ public class EyesisCorrectionParameters {
...
@@ -1367,13 +1367,13 @@ public class EyesisCorrectionParameters {
publicdoubleblueSolutionRadius;// How far to trust blue color ratio from the found solution (in pixels)
publicdoubleblueSolutionRadius;// How far to trust blue color ratio from the found solution (in pixels)
publicbooleanblueLeakNoHint;// use blueNeutral in the small areas that do not have reliable color sample
publicbooleanblueLeakNoHint;// use blueNeutral in the small areas that do not have reliable color sample
publicbooleanblueLeakNoBrighten;// Do not brighten corrected areas, only darken
publicbooleanblueLeakNoBrighten;// Do not brighten corrected areas, only darken
publicbooleanblueLeakFixWires;//Fix thin objects with saturated blue, but not R+G
publicbooleanblueLeakFixWires;//Fix thin objects with saturated blue, but not R+G
publicdoubleblueLeakWiresSize;//size (in pixels) of the small objects to fix blue
publicdoubleblueLeakWiresSize;//size (in pixels) of the small objects to fix blue
publicdoubleblueLeakWiresThreshold;// relative to saturation level threshold of the small blue-flooded objects on red+green to process
publicdoubleblueLeakWiresThreshold;// relative to saturation level threshold of the small blue-flooded objects on red+green to process
publicbooleanuse8;// use 8 neighbors (false - only 4)
publicbooleanuse8;// use 8 neighbors (false - only 4)
publicColorProcParameters(
publicColorProcParameters(
doublebalanceRed,
doublebalanceRed,
doublebalanceBlue,
doublebalanceBlue,
...
@@ -1403,18 +1403,18 @@ public class EyesisCorrectionParameters {
...
@@ -1403,18 +1403,18 @@ public class EyesisCorrectionParameters {
doublesatDetMinFrac,// minimal value for average compared to average over the whole picture
doublesatDetMinFrac,// minimal value for average compared to average over the whole picture
doublesatDetFinRelDiff,// maximal difference from average for the saturated tile to be considered saturated
doublesatDetFinRelDiff,// maximal difference from average for the saturated tile to be considered saturated
doublesatDetGrowRelDiff,//maximal difference from start tile average during growing of overexposed areas
doublesatDetGrowRelDiff,//maximal difference from start tile average during growing of overexposed areas
doublesatDetNewWeight,// weight of new pixel when expanding overexposed areas
doublesatDetNewWeight,// weight of new pixel when expanding overexposed areas
intsatDetExpSym,// number of overexposure expand steps, not allowing any brighter
intsatDetExpSym,// number of overexposure expand steps, not allowing any brighter
intsatDetExpOver,// number of overexposure expand steps, limited under, any over
intsatDetExpOver,// number of overexposure expand steps, limited under, any over
intsatDetExpCleanUp,// number of overexposure expand steps, not allowing any brighter (final to clean up oscillations)
intsatDetExpCleanUp,// number of overexposure expand steps, not allowing any brighter (final to clean up oscillations)
doublesatDetGrowRelDiffCleanUp,// maximal difference from start tile average during growing of overexposed areas (final to clean up oscillations)
doublesatDetGrowRelDiffCleanUp,// maximal difference from start tile average during growing of overexposed areas (final to clean up oscillations)
intblueOverShrink,// shrink blue overexposed area by this number of pixels (to get to undisturbed R/G)
intblueOverShrink,// shrink blue overexposed area by this number of pixels (to get to undisturbed R/G)
intblueOverGrow,// grow blue overexposed area by this number of pixels
intblueOverGrow,// grow blue overexposed area by this number of pixels
doubleblueBandWidth,
doubleblueBandWidth,
doubleblueBandWidthDark,// average amount of blue leak in pixels (slope at dark)
doubleblueBandWidthDark,// average amount of blue leak in pixels (slope at dark)
doubleblueNeutral,// Value of Yb/Yrg ratio for the small areas where safe color c an not be found
doubleblueNeutral,// Value of Yb/Yrg ratio for the small areas where safe color c an not be found
doubleblueSolutionRadius,// How far to trust blue color ratio from the found solution (in pixels)
doubleblueSolutionRadius,// How far to trust blue color ratio from the found solution (in pixels)
booleanblueLeakNoHint,// use blueNeutral in the small areas that do not have reliable color sample
booleanblueLeakNoHint,// use blueNeutral in the small areas that do not have reliable color sample
booleanblueLeakNoBrighten,// Do not brighten corrected areas, only darken
booleanblueLeakNoBrighten,// Do not brighten corrected areas, only darken
booleanblueLeakFixWires,//Fix thin objects with saturated blue, but not R+G
booleanblueLeakFixWires,//Fix thin objects with saturated blue, but not R+G
...
@@ -1448,7 +1448,7 @@ public class EyesisCorrectionParameters {
...
@@ -1448,7 +1448,7 @@ public class EyesisCorrectionParameters {
this.satDetMinFrac=satDetMinFrac;// minimal value for average compared to average over the whole picture
this.satDetMinFrac=satDetMinFrac;// minimal value for average compared to average over the whole picture
this.satDetFinRelDiff=satDetFinRelDiff;// maximal difference from average for the saturated tile to be considered saturated
this.satDetFinRelDiff=satDetFinRelDiff;// maximal difference from average for the saturated tile to be considered saturated
this.satDetGrowRelDiff=satDetGrowRelDiff;//maximal difference from start tile average during growing of overexposed areas
this.satDetGrowRelDiff=satDetGrowRelDiff;//maximal difference from start tile average during growing of overexposed areas
this.satDetNewWeight=satDetNewWeight;// weight of new pixel when expanding overexposed areas
this.satDetNewWeight=satDetNewWeight;// weight of new pixel when expanding overexposed areas
this.satDetExpSym=satDetExpSym;// number of overexposure expand steps, not allowing any brighter
this.satDetExpSym=satDetExpSym;// number of overexposure expand steps, not allowing any brighter
this.satDetExpOver=satDetExpOver;// number of overexposure expand steps, limited under, any over
this.satDetExpOver=satDetExpOver;// number of overexposure expand steps, limited under, any over
this.satDetExpCleanUp=satDetExpCleanUp;// number of overexposure expand steps, not allowing any brighter (final to clean up oscillations)
this.satDetExpCleanUp=satDetExpCleanUp;// number of overexposure expand steps, not allowing any brighter (final to clean up oscillations)
...
@@ -1461,11 +1461,11 @@ public class EyesisCorrectionParameters {
...
@@ -1461,11 +1461,11 @@ public class EyesisCorrectionParameters {
this.blueSolutionRadius=blueSolutionRadius;// How far to trust blue color ratio from the found solution (in pixels)
this.blueSolutionRadius=blueSolutionRadius;// How far to trust blue color ratio from the found solution (in pixels)
this.blueLeakNoHint=blueLeakNoHint;// use blueNeutral in the small areas that do not have reliable color sample
this.blueLeakNoHint=blueLeakNoHint;// use blueNeutral in the small areas that do not have reliable color sample
this.blueLeakNoBrighten=blueLeakNoBrighten;// Do not brighten corrected areas, only darken
this.blueLeakNoBrighten=blueLeakNoBrighten;// Do not brighten corrected areas, only darken
this.blueLeakFixWires=blueLeakFixWires;//Fix thin objects with saturated blue, but not R+G
this.blueLeakFixWires=blueLeakFixWires;//Fix thin objects with saturated blue, but not R+G
this.blueLeakWiresSize=blueLeakWiresSize;//size (in pixels) of the small objects to fix blue
this.blueLeakWiresSize=blueLeakWiresSize;//size (in pixels) of the small objects to fix blue
this.blueLeakWiresThreshold=blueLeakWiresThreshold;//size (in pixels) of the small objects to fix blue
this.blueLeakWiresThreshold=blueLeakWiresThreshold;//size (in pixels) of the small objects to fix blue
this.use8=use8;// use 8 neighbors (false - only 4)
this.use8=use8;// use 8 neighbors (false - only 4)