Ich versuche, den Kopf einer Person mit einer binären Referenz gedruckt zu verfolgen. Es kann gut verfolgt werden, wenn sich die Person langsam bewegt, aber wenn sie ihren Kopf schnell bewegen, verliert sie die Spur und gewinnt sie wieder, wenn sie aufhört sich zu bewegen. Was kann ich tun, um die Person zu verfolgen, während sie sich schnell bewegt?Track schnell bewegende Referenz mit BoofCV
Referenz, hier ein Screenshot und Code:
camera = UtilWebcamCapture.openDefault(1920, 1080);
intrinsicParameters = new IntrinsicParameters();
intrinsicParameters.setCx(camera.getViewSize().getWidth()/2f);
intrinsicParameters.setCy(camera.getViewSize().getHeight()/2f);
intrinsicParameters.setFx(1);
intrinsicParameters.setFy(1);
intrinsicParameters.setWidth((int)camera.getViewSize().getWidth());
intrinsicParameters.setHeight((int)camera.getViewSize().getHeight());
detector = FactoryFiducial.squareBinary(
new ConfigFiducialBinary(1),
ConfigThreshold.local(ThresholdType.LOCAL_SQUARE, 10),
//ConfigThreshold.fixed(100),
GrayU8.class);
detector.setIntrinsic(intrinsicParameters);
...
while (true) {
BufferedImage image = camera.getImage();
GrayU8 input = ConvertBufferedImage.convertFrom(image, (GrayU8) null);
WorldToCameraToPixel transform;
try {
detector.detect(input);
Se3_F64 targetToSensor = new Se3_F64();
for (int i = 0; i < detector.totalFound(); i++) {
detector.getFiducialToCamera(i, targetToSensor);
transform = PerspectiveOps.createWorldToPixel(intrinsicParameters, targetToSensor);
Point2D_F64 centre = transform.transform(
new Point3D_F64(0, 0, 0));
System.out.println(centre);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Dank!
Bewegungsunschärfe ist der wahrscheinlichste Schuldige für das, was den Referenzdetektor vermasselt. Die Kante wird zu verzerrt und das Bild im Inneren ist nicht mehr erkennbar. Ihr Ansatz zu diesem Thema ist gut. –