Camera to Stage Mapping
Camera-stage mapping allows the stage to move relative to the camera
diff --git a/webapp/src/components/tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue b/webapp/src/components/tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue
index 8c892057..05b551c1 100644
--- a/webapp/src/components/tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue
+++ b/webapp/src/components/tabContentComponents/settingsComponents/CSMSettingsComponents/CSMCalibrationSettings.vue
@@ -1,5 +1,5 @@
-
+
Download Calibration Data
+
+
Calibration Details
+ CSM calculated for images with a resolution of {{ csmResolution }}
+
+ - Current CSM Matrix: {{ csmMatrix }}
+ - Pixels per motor step: {{ csmRatio }}
+ - Full field of view: {{ csmFOV }} motor steps
+
+
+
@@ -47,6 +57,16 @@ export default {
default: true
}
},
+
+ data() {
+ return {
+ csmMatrix: "undefined",
+ csmResolution: "undefined",
+ csmRatio: "undefined"
+ };
+ },
+
+
computed: {
actions() {
@@ -60,6 +80,11 @@ export default {
},
methods: {
+ visibilityChanged(isVisible) {
+ if (isVisible) {
+ this.updateDisplayedCSM();
+ }
+ },
getCalibrationData: async function() {
try {
let data = await this.readThingProperty(
@@ -80,9 +105,33 @@ export default {
this.modalError(error); // Let mixin handle error
}
},
-
+ updateDisplayedCSM: async function() {
+ let csmMatrix = await this.readThingProperty(
+ "camera_stage_mapping",
+ "image_to_stage_displacement_matrix"
+ );
+ this.csmResolution = await this.readThingProperty(
+ "camera_stage_mapping",
+ "image_resolution"
+ );
+ let streamResolution = await this.readThingProperty(
+ "camera",
+ "stream_resolution"
+ );
+ csmMatrix[0][0] = Number(csmMatrix[0][0].toFixed(3));
+ csmMatrix[0][1] = Number(csmMatrix[0][1].toFixed(3));
+ csmMatrix[1][0] = Number(csmMatrix[1][0].toFixed(3));
+ csmMatrix[1][1] = Number(csmMatrix[1][1].toFixed(3));
+ this.csmMatrix = csmMatrix;
+ this.csmRatio = Number((Math.abs(csmMatrix[1][0]) + Math.abs(csmMatrix[0][1])) / 2).toFixed(3);
+ this.csmFOV = [
+ Number((streamResolution[0]**2 * this.csmRatio / this.csmResolution[1]).toFixed(0)),
+ Number((streamResolution[1]**2 * this.csmRatio / this.csmResolution[0]).toFixed(0)),
+ ]
+ },
onRecalibrateResponse: function() {
this.modalNotify("Finished stage-to-camera calibration.");
+ this.updateDisplayedCSM();
}
}
};