diff --git a/Main/src/main/java/com/chameleonvision/Handler/MathHandler.java b/Main/src/main/java/com/chameleonvision/Handler/MathHandler.java new file mode 100644 index 000000000..6bfe73377 --- /dev/null +++ b/Main/src/main/java/com/chameleonvision/Handler/MathHandler.java @@ -0,0 +1,15 @@ +package com.chameleonvision.Handler; +import java.lang.Math; +public class MathHandler { + MathHandler(){} + public static double sigmoid(double x){ + double bias = 0; + double a = 5; + double b = -0.05; + double k = 200; + if (x < 50){ + bias = -1.339; + } + return ((k / (1 + Math.pow(Math.E,(a + (b * x))))) + bias); + } +} diff --git a/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java b/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java index 52b9d7f23..d701efbf5 100644 --- a/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/process/CVProcess.java @@ -1,11 +1,11 @@ package com.chameleonvision.vision.process; import com.chameleonvision.vision.camera.CameraValues; +import com.chameleonvision.Handler.MathHandler; import org.apache.commons.math3.util.FastMath; import org.jetbrains.annotations.NotNull; import org.opencv.core.*; import org.opencv.imgproc.Imgproc; - import java.util.*; @SuppressWarnings("WeakerAccess") @@ -57,8 +57,8 @@ public class CVProcess { for (MatOfPoint Contour : InputContours) { try { double contourArea = Imgproc.contourArea(Contour); - double minArea = (area.get(0) * CamVals.ImageArea) / 100; - double maxArea = (area.get(1) * CamVals.ImageArea) / 100; + double minArea = (MathHandler.sigmoid(area.get(0)) * CamVals.ImageArea) / 100; + double maxArea = (MathHandler.sigmoid(area.get(1)) * CamVals.ImageArea) / 100; if (contourArea <= minArea || contourArea >= maxArea) { continue; }