示例#1
0
        public void ApplyMask()
        {
            Mask mask;

            if (IsSymmetric)
            {
                mask = ToMask(SymmetricMask, 2, 2);
            }
            else if (IsAsymmetric)
            {
                mask = ToMask(AsymmetricMask, 1, 0);
            }
            else
            {
                mask = ToMask(RandomMask, 1, 1);
            }

            ImageModel sourceModel = ToImageModel(SourceModel);

            if (IsDivide)
            {
                sourceModel.ApplyMaskBehaviour = new NormalizationApplyBehaviour();
            }
            else
            {
                sourceModel.ApplyMaskBehaviour = new RangeApplyBehaviour();
            }

            ImageModel resultModel = sourceModel.ApplyMask(mask);

            resultModel.Pixels.ForEach(it => ResultModel[it.Y][it.X] = it.Color);
        }
示例#2
0
        public void ApplyMaskToResult()
        {
            Mask mask;

            if (IsSymmetric)
            {
                mask = ToMask(SymmetricMask, 2, 2);
            }
            else if (IsAsymmetric)
            {
                mask = ToMask(AsymmetricMask, 1, 0);
            }
            else
            {
                mask = ToMask(RandomMask, 1, 1);
            }

            ImageModel sourceModel = ToImageModel(ResultModel);

            for (var i = 0; i < ResultModel.Length; i++)
            {
                for (var j = 0; j < ResultModel[i].Length; j++)
                {
                    SourceModel[i][j] = ResultModel[i][j];
                }
            }

            if (IsDivide)
            {
                sourceModel.ApplyMaskBehaviour = new NormalizationApplyBehaviour();
            }
            else
            {
                sourceModel.ApplyMaskBehaviour = new RangeApplyBehaviour();
            }

            ImageModel resultModel = sourceModel.ApplyMask(mask);

            resultModel.Pixels.ForEach(it => ResultModel[it.Y][it.X] = it.Color);
        }