diff --git a/TIASshot/CameraBase.cs b/TIASshot/CameraBase.cs index 9407e77..7856c52 100644 --- a/TIASshot/CameraBase.cs +++ b/TIASshot/CameraBase.cs @@ -38,7 +38,6 @@ protected string _saveFolder = ""; protected List _shots = new List(); - // プライベートメンバ readonly Dictionary ARDict = CvAruco.GetPredefinedDictionary(PredefinedDictionaryName.Dict4X4_50); readonly Point2f[] PointsDst40 = new Point2f[] { @@ -52,7 +51,6 @@ readonly float UpdateRate; int _detectionCount = 0; Point2f _lastPosition = new Point2f(0, 0); - //Mat _tccRois; // TCCのROI検出結果画像 /// @@ -227,7 +225,7 @@ var tccRgb = GetTccRgb(img); var imgRois = GetTccRoisImage(img); _convRGB2SRGB = CalcConvertMatrix(tccRgb, TCC_SRGB); - var _convRGB2XYZ = CalcConvertMatrix(tccRgb, TCC_XYZ); + var convRGB2XYZ = CalcConvertMatrix(tccRgb, TCC_XYZ); var tccSrgb = ConvertColor(tccRgb, _convRGB2SRGB); var convSrgb2Xyz = CalcConvertMatrix(tccSrgb, TCC_XYZ); @@ -240,9 +238,10 @@ Cv2.ImWrite(Path.Combine(_saveFolder, Config.GetString("TccSaveFile")), img); Cv2.ImWrite(Path.Combine(_saveFolder, Config.GetString("TccRoisFile")), imgRois); SaveMatToCsv(Path.Combine(_saveFolder, Config.GetString("ConvSrgbSaveFile")), _convRGB2SRGB); - SaveMatToCsv(Path.Combine(_saveFolder, Config.GetString("ConvXyzSaveFile")), _convRGB2XYZ); + SaveMatToCsv(Path.Combine(_saveFolder, Config.GetString("ConvXyzSaveFile")), convRGB2XYZ); SaveMatToCsv(Path.Combine(_saveFolder, Config.GetString("ConvSrgb2XyzSaveFile")), convSrgb2Xyz); - //SaveMatToCsv(Path.Combine(_saveFolder, Config.GetString("ConvSrgb2XyzSaveFile")), tccRgb); + SaveMatToCsv(Path.Combine(_saveFolder, Config.GetString("TccRgbFile")), tccRgb); + SaveMatToCsv(Path.Combine(_saveFolder, Config.GetString("TccSrgbFile")), tccSrgb); _form.ShowMessage("自動校正完了"); _form.EnableShots(); @@ -258,9 +257,9 @@ var arrRGB = new Mat(24, 3, MatType.CV_64FC1); for (int i = 0; i < _chartMasks.Count; i++) { var rgb = Cv2.Mean(img, _chartMasks[i]); - arrRGB.At(i, 0) = rgb.Val0; - arrRGB.At(i, 1) = rgb.Val1; - arrRGB.At(i, 2) = rgb.Val2; + arrRGB.At(i, 0) = rgb.Val0; // Blue + arrRGB.At(i, 1) = rgb.Val1; // Green + arrRGB.At(i, 2) = rgb.Val2; // Red } return arrRGB; } @@ -303,6 +302,17 @@ } /// + /// 8bitクリッピング処理 ForEachAsVec3d用 + /// + /// + /// + unsafe void Clip8bit(Vec3d* p, int* pos) { + p->Item0 = Math.Max(0, Math.Min(255.0, p->Item0)); + p->Item1 = Math.Max(0, Math.Min(255.0, p->Item1)); + p->Item2 = Math.Max(0, Math.Min(255.0, p->Item2)); + } + + /// /// 画像の色変換 /// /// @@ -316,7 +326,14 @@ var extended = ExtendMat(flatten); var converted = (extended * conv).ToMat(); var convertedImage = converted.Reshape(3, src.Height); - return convertedImage; + //Clipping to 8bit range + //unsafe { + // convertedImage.ForEachAsVec3d(Clip8bit); + //} + + var convImg8 = new Mat(); + convertedImage.ConvertTo(convImg8, MatType.CV_8UC3); + return convImg8; } /// @@ -327,10 +344,10 @@ private Mat ExtendMat(Mat src) { if (src.Cols * src.Channels() != 3) return src; var dst = new Mat(src.Rows, 17, MatType.CV_64FC1); - for (int row = 0; row < src.Rows; row++) { - var b = src.Cols == 1 ? src.At(row, 0)[0] : src.At(row, 0); - var g = src.Cols == 1 ? src.At(row, 0)[1] : src.At(row, 1); - var r = src.Cols == 1 ? src.At(row, 0)[2] : src.At(row, 2); + Parallel.For(0, src.Rows, row => { + double b = src.Cols == 1 ? src.At(row, 0)[0] : src.At(row, 0); + double g = src.Cols == 1 ? src.At(row, 0)[1] : src.At(row, 1); + double r = src.Cols == 1 ? src.At(row, 0)[2] : src.At(row, 2); dst.At(row, 0) = r; dst.At(row, 1) = g; dst.At(row, 2) = b; @@ -348,7 +365,7 @@ dst.At(row, 14) = b * b * g; dst.At(row, 15) = r * g * b; dst.At(row, 16) = 1.0; - } + }); return dst; } diff --git a/TIASshot/TIASshot.csproj b/TIASshot/TIASshot.csproj index 068ff70..615c26e 100644 --- a/TIASshot/TIASshot.csproj +++ b/TIASshot/TIASshot.csproj @@ -25,6 +25,7 @@ DEBUG;TRACE prompt 4 + true AnyCPU @@ -34,6 +35,7 @@ TRACE prompt 4 + true true @@ -44,6 +46,7 @@ 7.3 prompt true + true bin\x64\Release\ @@ -54,6 +57,7 @@ 7.3 prompt true + true diff --git a/TIASshot/config.xml b/TIASshot/config.xml index 49c1fab..e56e75f 100644 --- a/TIASshot/config.xml +++ b/TIASshot/config.xml @@ -1,8 +1,8 @@ - 30.0 - 3.0 + 60.0 + 1.5 2.62 1.72 1.70 @@ -16,9 +16,9 @@ 75 100 - 226 - 226 - 226 + 180 + 180 + 180 0.8 100 5 @@ -33,6 +33,8 @@ Shot0000.bmp Srgb0000.jpg ShotTime.csv + tcc_rgb.csv + tcc_srgb.csv conv_rgb_srgb.csv conv_rgb_xyz.csv conv_srgb_xyz.csv