diff options
| author | Roy <roy.mail.net@gmail.com> | 2022-05-30 17:11:19 +0300 |
|---|---|---|
| committer | Roy <roy.mail.net@gmail.com> | 2022-05-30 17:11:19 +0300 |
| commit | e645e84144f312c8b26832f0a356a006bd8c0c2a (patch) | |
| tree | 3b35c305790eb6807301a5b9b5d9ddfd4a48b8da /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelOut.cs | |
| parent | 10eb841cf1535f7bbab097e7cf0a3fd0cf2282fa (diff) | |
| download | Tango-e645e84144f312c8b26832f0a356a006bd8c0c2a.tar.gz Tango-e645e84144f312c8b26832f0a356a006bd8c0c2a.zip | |
Merged MS batch conversion branch.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelOut.cs')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelOut.cs | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelOut.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelOut.cs new file mode 100644 index 000000000..f4881ce00 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelOut.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.MachineStudio.RML.Models +{ + public class BatchConversionCsvModelOut + { + public string Index { get; set; } + public double L { get; set; } + public double A { get; set; } + public double B { get; set; } + + public double SuggestionL { get; set; } + public double SuggestionA { get; set; } + public double SuggestionB { get; set; } + public double SuggestionDeltaE { get; set; } + + public double OutputL { get; set; } + public double OutputA { get; set; } + public double OutputB { get; set; } + public double OutputDeltaE { get; set; } + + public double Cyan { get; set; } + public double Magenta { get; set; } + public double Yellow { get; set; } + public double Black { get; set; } + + public double LightCyan { get; set; } + public double LightMagenta { get; set; } + public double LightYellow { get; set; } + + public bool OutOfGamut { get; set; } + + public static double MirtaDeltaE(double L1, double a1, double b1, double L2, double a2, double b2) + { + double h1 = Math.Atan2(b1, a1) * (180 / Math.PI); + if (h1 < 0) + h1 = h1 + 360; + double h2 = Math.Atan2(b2, a2) * (180 / Math.PI); + if (h2 < 0) + h2 = h2 + 360; + double refX_H = h1; + //chroma calculation + double refX_C = Math.Sqrt(a1 * a1 + b1 * b1); + //reference SL parameter + double refX_SL; + if (L1 <= 16) + refX_SL = 0.511; + else + refX_SL = L1 * 0.040975 / (1 + 0.01765 * L1); + //reference SC parameter + double refX_SC = (0.638 + 0.0638 * refX_C / (1 + 0.0131 * refX_C)); + //reference CQ parameter + double refX_CQ = Math.Pow(refX_C, 4); + //reference F parameter + double refX_F = Math.Sqrt(refX_CQ / (refX_CQ + 1900)); + // reference T parameter + double refX_T = 0; + if ((refX_H > 164) & (refX_H < 345)) + refX_T = 0.56 + Math.Abs(0.2 * Math.Cos(Math.PI * (refX_H + 168) / 180)); + else if ((refX_H >= 345) | (refX_H <= 164)) + refX_T = 0.36 + Math.Abs(0.4 * Math.Cos(Math.PI * (refX_H + 35) / 180)); + // reference SH parameter + double refX_SH = refX_SC * (refX_T * refX_F + 1 - refX_F); + + //sample parameter calculations + //hue calculation + double samX_H = h2; + //chroma calculation + double samX_C = Math.Sqrt(a2 * a2 + b2 * b2); + + double dL = L1 - L2; + double dC = samX_C - refX_C; + double da = a1 - a2; + double db = b1 - b2; + double dH = Math.Sqrt(Math.Max(da * da + db * db - dC * dC, 0.0)); + + double dECMC = Math.Sqrt(Math.Pow(dL / (2 * refX_SL), 2) + Math.Pow(dC / refX_SC, 2) + Math.Pow(dH / refX_SH, 2)); + return dECMC; + + } + } + + +} |
