Beispiel #1
0
        public float EvaluateFitness(int index, Program.Settings settings)
        {
            Convolve(index, settings);
            Mat targetTmp = new Mat();
            Mat dstTmp    = new Mat();

            targetImgs[index].ConvertTo(targetTmp, MatType.CV_32FC3);
            dstImg.ConvertTo(dstTmp, MatType.CV_32FC3);
            //targetTmp *= -1;

            //Cv2.Add(dstImg, targetTmp, targetTmp, null, MatType.CV_32F);
            Cv2.Absdiff(dstTmp, targetTmp, targetTmp);
            dstTmp.Dispose();

            return(-(float)targetTmp.Sum());
        }
Beispiel #2
0
 public void Convolve(int index, Program.Settings settings)
 {
     dstImg = srcImgs[index].Filter2D(-1, kernels[0]);
     for (int i = 1; i < kernels.Length; i++)
     {
         //dstImg = dstImg.Filter2D(-1, kernels[i]);
         if (inSize.Width != settings.midLayerRes || inSize.Width != settings.outLayerRes)//Assuming width and height are the same
         {
             //This could be slow...
             float respos = ((i / ((float)kernels.Length - 1)) * 2);
             int   size   = (int)Lerp(Lerp(inSize.Width, settings.midLayerRes, respos), settings.outLayerRes, respos - 1f);
             size = ToNearestPowerOf2(size);
             Size nSize = new Size(size, size);
             Cv2.Resize(dstImg, dstImg, nSize);
         }
         Cv2.Filter2D(dstImg, dstImg, -1, kernels[i]);
     }
     //File.WriteAllBytes("tmpimg.png", dstImg.ToBytes());
 }