public override bool Execute(List <NamedData> data, string fileName)
        {
            Image <Gray, ushort>[] rawImages         = null;
            Image <Gray, byte>[]   maskImages        = null;
            BorderPointArrays      borderPointarrays = null;

            try
            {
                if (!IsInitialized)
                {
                    _logger?.ErrorLog("It is not initialized.", ClassName);
                    return(false);
                }

                int imageCounter = LoadNamedData(data, ref borderPointarrays, ref rawImages, ref maskImages);
                if (imageCounter == 0)
                {
                    _logger?.InfoLog("No images were loaded from dynamicresult", ClassName);
                }


                for (int m = 0; m < imageCounter; m++)
                {
                }

                return(true);
            }
            catch (Exception ex)
            {
                _logger?.ErrorLog($"Exception occured: {ex}", ClassName);
                return(false);
            }
            finally
            {
                foreach (var item in rawImages)
                {
                    if (item != null)
                    {
                        item.ROI = _fullROI;
                    }
                }
                foreach (var item in maskImages)
                {
                    if (item != null)
                    {
                        item.ROI = _fullROI;
                    }
                }
            }
        }
        public BorderPointArrays GetBorderPointArrays(string name, List <NamedData> data)
        {
            BorderPointArrays arrays = null;

            foreach (NamedData item in data)
            {
                if (item.AsBorderPointArraysNamedData() != null)
                {
                    if (item.AsBorderPointArraysNamedData().Name == name)
                    {
                        arrays = item?.AsBorderPointArraysNamedData();
                    }
                }
            }
            return(arrays);
        }
Example #3
0
        protected virtual int LoadNamedData(List <NamedData> data, ref BorderPointArrays borderPoints, ref Image <Gray, ushort>[] rawImages, ref Image <Gray, byte>[] maskImages)
        {
            rawImages = GetEmguUShortImages("RawImages", data);
            int imageCounterRaw = rawImages?.Length ?? 0;

            maskImages = GetEmguByteImages("MaskImages", data);
            int imageCounterMask = maskImages?.Length ?? 0;

            borderPoints = GetBorderPointArrays("BorderPointArrayList", data);


            if ((imageCounterMask != imageCounterRaw) || (imageCounterRaw == 0) || (imageCounterRaw != borderPoints.Count))
            {
                _logger?.InfoLog($"Input and mask image number is not the same!", ClassName);
                return(0);
            }

            return(imageCounterRaw);
        }
        public override bool Execute(List <NamedData> data, string fileName)
        {
            Image <Gray, ushort>[] rawImages         = null;
            Image <Gray, byte>[]   maskImages        = null;
            BorderPointArrays      borderPointarrays = null;
            string additionalExtensionName           = string.Empty;

            try
            {
                if (!IsInitialized)
                {
                    _logger?.ErrorLog($"It is not initialized.", ClassName);
                    return(false);
                }

                int imageCounter = LoadNamedData(data, ref borderPointarrays, ref rawImages, ref maskImages);
                if (imageCounter == 0 || imageCounter > _enumNames.Length)
                {
                    _logger?.InfoLog("No images were loaded from dynamicresult OR more images arrived than enumNames!", ClassName);
                }

                for (int m = 0; m < imageCounter; m++)
                {
                    if (_enumNames.Length == imageCounter)
                    {
                        additionalExtensionName = _enumNames[m];
                    }

                    int[] indexes = Iterate(rawImages[m], maskImages[m], borderPointarrays[m]);

                    if (indexes == null || indexes.Length != 2)
                    {
                        _logger?.InfoLog($"Problem during Iterate. Return indexes are not proper for further calculation. index:{m}", ClassName);
                    }

                    if (!CalculateStatistics(indexes[0], indexes[1], maskImages[m]))
                    {
                        _logger?.InfoLog($"Problem during statistics calculation: {m}", ClassName);
                        continue;
                    }

                    double homogeneity1 = Math.Max(Math.Abs(_meanOfRegion2OfFirst.V0 - _meanOfRegion1OfFirst.V0), Math.Abs(_meanOfRegion2OfFirst.V0 - _meanOfRegion3OfFirst.V0));
                    double homogeneity2 = Math.Abs(_meanOfRegion1OfFirst.V0 - _meanOfRegion3OfFirst.V0);


                    data.Add(new DoubleNamedData(_meanOfFirst.V0, "MeanOf" + lorum + "Mean", "MeanOf" + lorum + "Mean"));
                    data.Add(new DoubleNamedData(_stdOfFirst.V0, "StdOf" + lorum + "Mean", "StdOf" + lorum + "Mean"));
                    data.Add(new DoubleNamedData(_meanOfSecond.V0, "MeanOf" + lorum + "Std", "MeanOf" + lorum + "Std"));
                    data.Add(new DoubleNamedData(_stdOfSecond.V0, "StdOf" + lorum + "Std", "StdOf" + lorum + "Std"));
                    data.Add(new DoubleNamedData(homogeneity1, lorum + "MeanHomogeneity1", lorum + "MeanHomogeneity1"));
                    data.Add(new DoubleNamedData(homogeneity2, lorum + "MeanHomogeneity2", lorum + "MeanHomogeneity2"));
                    data.Add(new DoubleNamedData(_minOfFirst.V0, "MinOf" + lorum + "Mean", "MinOf" + lorum + "Mean"));
                    data.Add(new DoubleNamedData(_maxOfFirst.V0, "MaxOf" + lorum + "Mean", "MaxOf" + lorum + "Mean"));
                }

                return(true);
            }
            catch (Exception ex)
            {
                _logger?.ErrorLog($"Exception occured: {ex}", ClassName);
                return(false);
            }
            finally
            {
                foreach (var item in rawImages)
                {
                    if (item != null)
                    {
                        item.ROI = _fullROI;
                    }
                }
                foreach (var item in maskImages)
                {
                    if (item != null)
                    {
                        item.ROI = _fullROI;
                    }
                }
            }
        }
Example #5
0
        public override bool Execute(List <NamedData> data, string fileName)
        {
            Image <Gray, ushort>[] rawImages         = null;
            Image <Gray, byte>[]   maskImages        = null;
            BorderPointArrays      borderPointarrays = null;


            double[,,] resultVector1 = _firstVector.Data;
            double[,,] resultVector2 = _secondVector.Data;

            try
            {
                if (!IsInitialized)
                {
                    _logger.ErrorLog($"It is not initialized.", ClassName);
                    return(false);
                }

                int imageCounter = LoadNamedData(data, ref borderPointarrays, ref rawImages, ref maskImages);
                if (imageCounter == 0)
                {
                    _logger?.Info($"No images were loaded from dynamicresult", ClassName);
                }

                for (int m = 0; m < imageCounter; m++)
                {
                    if (!CheckInputData(rawImages[m], maskImages[m], borderPointarrays[m], _firstVector, _secondVector))
                    {
                        return(false);
                    }

                    ushort[,,] imgData = rawImages[m].Data;

                    for (int i = 0; i < borderPointarrays[m].Length / 2; i++)
                    {
                        try
                        {
                            double sum     = 0;
                            double sum2    = 0;
                            int    counter = 0;

                            for (int j = 0; j < (borderPointarrays[m][i, 1] - borderPointarrays[m][i, 0]); j++)
                            {
                                sum  += imgData[i, borderPointarrays[m][i, 0] + j, 0];
                                sum2 += (imgData[i, borderPointarrays[m][i, 0] + j, 0] * imgData[i, borderPointarrays[m][i, 0] + j, 0]);
                                counter++;
                            }

                            resultVector1[0, i, 0] = (float)(sum / counter);
                            resultVector2[0, i, 0] = (float)Math.Sqrt(sum2 / (counter - 1) - (sum * sum / Math.Pow(counter - 1, 2)));
                        }
                        catch (Exception ex)
                        {
                            _logger?.ErrorLog($"Error during the calculation, i:{i}, message: {ex}.", ClassName);
                            return(false);
                        }
                    }
                }

                return(true);
            }
            catch (Exception)
            {
                throw;
            }
        }