From 07775a419f71d0df697064ad66476f4f458dd84b Mon Sep 17 00:00:00 2001 From: Devymex Date: Thu, 17 Nov 2016 21:39:54 +0800 Subject: [PATCH 1/2] Change datatype of ZeroPlaneDistance from integer to real; --- Source/Drivers/PS1080/DDK/XnDepthStream.h | 6 +++--- Source/Drivers/PS1080/DDK/XnShiftToDepth.cpp | 2 +- Source/Drivers/PS1080/DDK/XnShiftToDepth.h | 2 +- .../PS1080/DDK/XnShiftToDepthStreamHelper.cpp | 4 ++-- .../Drivers/PS1080/DriverImpl/XnOniDepthStream.cpp | 8 ++++---- Source/Drivers/PS1080/Sensor/XnSensorDepthStream.cpp | 12 ++++++------ Source/Drivers/PS1080/Sensor/XnSensorFixedParams.cpp | 6 +++--- Source/Drivers/PS1080/Sensor/XnSensorFixedParams.h | 4 ++-- Source/Drivers/PS1080/Sensor/XnSensorImageStream.cpp | 6 +++--- 9 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Source/Drivers/PS1080/DDK/XnDepthStream.h b/Source/Drivers/PS1080/DDK/XnDepthStream.h index 8a890c13..e524e6b2 100644 --- a/Source/Drivers/PS1080/DDK/XnDepthStream.h +++ b/Source/Drivers/PS1080/DDK/XnDepthStream.h @@ -55,7 +55,7 @@ class XnDepthStream : public XnPixelStream inline OniDepthPixel GetDeviceMaxDepth() const { return (OniDepthPixel)m_DeviceMaxDepth.GetValue(); } inline XnUInt32 GetParamCoefficient() const { return (XnUInt32)m_ParamCoefficient.GetValue(); } inline XnUInt32 GetShiftScale() const { return (XnUInt32)m_ShiftScale.GetValue(); } - inline OniDepthPixel GetZeroPlaneDistance() const { return (OniDepthPixel)m_ZeroPlaneDistance.GetValue(); } + inline XnDouble GetZeroPlaneDistance() const { return m_ZeroPlaneDistance.GetValue(); } inline XnDouble GetZeroPlanePixelSize() const { return m_ZeroPlanePixelSize.GetValue(); } inline XnDouble GetEmitterDCmosDistance() const { return m_EmitterDCmosDistance.GetValue(); } inline XnDouble GetDCmosRCmosDistance() const { return m_GetDCmosRCmosDistance.GetValue(); } @@ -75,7 +75,7 @@ class XnDepthStream : public XnPixelStream inline XnActualIntProperty& DeviceMaxDepthProperty() { return m_DeviceMaxDepth; } inline XnActualIntProperty& ParamCoefficientProperty() { return m_ParamCoefficient; } inline XnActualIntProperty& ShiftScaleProperty() { return m_ShiftScale; } - inline XnActualIntProperty& ZeroPlaneDistanceProperty() { return m_ZeroPlaneDistance; } + inline XnActualRealProperty& ZeroPlaneDistanceProperty() { return m_ZeroPlaneDistance; } inline XnActualRealProperty& ZeroPlanePixelSizeProperty() { return m_ZeroPlanePixelSize; } inline XnActualRealProperty& EmitterDCmosDistanceProperty() { return m_EmitterDCmosDistance; } inline XnActualRealProperty& GetDCmosRCmosDistanceProperty() { return m_GetDCmosRCmosDistance; } @@ -108,7 +108,7 @@ class XnDepthStream : public XnPixelStream XnActualIntProperty m_DeviceMaxDepth; XnActualIntProperty m_ParamCoefficient; XnActualIntProperty m_ShiftScale; - XnActualIntProperty m_ZeroPlaneDistance; + XnActualRealProperty m_ZeroPlaneDistance; XnActualRealProperty m_ZeroPlanePixelSize; XnActualRealProperty m_EmitterDCmosDistance; XnActualRealProperty m_GetDCmosRCmosDistance; diff --git a/Source/Drivers/PS1080/DDK/XnShiftToDepth.cpp b/Source/Drivers/PS1080/DDK/XnShiftToDepth.cpp index 643ace57..601f6270 100644 --- a/Source/Drivers/PS1080/DDK/XnShiftToDepth.cpp +++ b/Source/Drivers/PS1080/DDK/XnShiftToDepth.cpp @@ -63,7 +63,7 @@ XnStatus XnShiftToDepthUpdate(XnShiftToDepthTables* pShiftToDepth, const XnShift XnDouble dMetric = 0; XnDouble dDepth = 0; XnDouble dPlanePixelSize = pConfig->fZeroPlanePixelSize; - XnDouble dPlaneDsr = pConfig->nZeroPlaneDistance; + XnDouble dPlaneDsr = pConfig->fZeroPlaneDistance; XnDouble dPlaneDcl = pConfig->fEmitterDCmosDistance; XnInt32 nConstShift = pConfig->nParamCoeff * pConfig->nConstShift; diff --git a/Source/Drivers/PS1080/DDK/XnShiftToDepth.h b/Source/Drivers/PS1080/DDK/XnShiftToDepth.h index 5503ce18..e913fac4 100644 --- a/Source/Drivers/PS1080/DDK/XnShiftToDepth.h +++ b/Source/Drivers/PS1080/DDK/XnShiftToDepth.h @@ -34,7 +34,7 @@ typedef struct XnShiftToDepthConfig { /** The zero plane distance in depth units. */ - OniDepthPixel nZeroPlaneDistance; + XnFloat fZeroPlaneDistance; /** The zero plane pixel size */ XnFloat fZeroPlanePixelSize; /** The distance between the emitter and the Depth Cmos */ diff --git a/Source/Drivers/PS1080/DDK/XnShiftToDepthStreamHelper.cpp b/Source/Drivers/PS1080/DDK/XnShiftToDepthStreamHelper.cpp index 3633549d..b41b7afd 100644 --- a/Source/Drivers/PS1080/DDK/XnShiftToDepthStreamHelper.cpp +++ b/Source/Drivers/PS1080/DDK/XnShiftToDepthStreamHelper.cpp @@ -149,10 +149,10 @@ XnStatus XnShiftToDepthStreamHelper::GetShiftToDepthConfig(XnShiftToDepthConfig& XnUInt64 nTemp; XnDouble dTemp; - nRetVal = m_pModule->GetProperty(XN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE, &nTemp); + nRetVal = m_pModule->GetProperty(XN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE, &dTemp); XN_IS_STATUS_OK(nRetVal); - Config.nZeroPlaneDistance = (XnUInt16)nTemp; + Config.fZeroPlaneDistance = (XnFloat)dTemp; nRetVal = m_pModule->GetProperty(XN_STREAM_PROPERTY_ZERO_PLANE_PIXEL_SIZE, &dTemp); XN_IS_STATUS_OK(nRetVal); diff --git a/Source/Drivers/PS1080/DriverImpl/XnOniDepthStream.cpp b/Source/Drivers/PS1080/DriverImpl/XnOniDepthStream.cpp index b24d3c2a..519ba750 100644 --- a/Source/Drivers/PS1080/DriverImpl/XnOniDepthStream.cpp +++ b/Source/Drivers/PS1080/DriverImpl/XnOniDepthStream.cpp @@ -115,13 +115,13 @@ void XnOniDepthStream::notifyAllProperties() getProperty(XN_STREAM_PROPERTY_SHIFT_SCALE, &nValue, &size); raisePropertyChanged(XN_STREAM_PROPERTY_SHIFT_SCALE, &nValue, size); - // zero plane distance - getProperty(XN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE, &nValue, &size); - raisePropertyChanged(XN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE, &nValue, size); - XnDouble dValue; size = sizeof(dValue); + // zero plane distance + getProperty(XN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE, &dValue, &size); + raisePropertyChanged(XN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE, &dValue, size); + // zero plane pixel size getProperty(XN_STREAM_PROPERTY_ZERO_PLANE_PIXEL_SIZE, &dValue, &size); raisePropertyChanged(XN_STREAM_PROPERTY_ZERO_PLANE_PIXEL_SIZE, &dValue, size); diff --git a/Source/Drivers/PS1080/Sensor/XnSensorDepthStream.cpp b/Source/Drivers/PS1080/Sensor/XnSensorDepthStream.cpp index ec168efa..48cfa8a7 100644 --- a/Source/Drivers/PS1080/Sensor/XnSensorDepthStream.cpp +++ b/Source/Drivers/PS1080/Sensor/XnSensorDepthStream.cpp @@ -182,12 +182,12 @@ XnStatus XnSensorDepthStream::Init() XN_IS_STATUS_OK(nRetVal); XnDouble fZPPS = m_Helper.GetFixedParams()->GetZeroPlanePixelSize(); - XnInt nZPD = m_Helper.GetFixedParams()->GetZeroPlaneDistance(); + XnDouble fZPD = m_Helper.GetFixedParams()->GetZeroPlaneDistance(); - nRetVal = m_HorizontalFOV.UnsafeUpdateValue(2*atan(fZPPS*XN_SXGA_X_RES/2/nZPD)); + nRetVal = m_HorizontalFOV.UnsafeUpdateValue(2*atan(fZPPS*XN_SXGA_X_RES/2/fZPD)); XN_IS_STATUS_OK(nRetVal); - nRetVal = m_VerticalFOV.UnsafeUpdateValue(2*atan(fZPPS*XN_VGA_Y_RES*2/2/nZPD)); + nRetVal = m_VerticalFOV.UnsafeUpdateValue(2*atan(fZPPS*XN_VGA_Y_RES*2/2/fZPD)); XN_IS_STATUS_OK(nRetVal); // init helper @@ -1065,15 +1065,15 @@ XnStatus XnSensorDepthStream::PopulateSensorCalibrationInfo() XnDouble dPlanePixelSize; GetProperty(XN_STREAM_PROPERTY_ZERO_PLANE_PIXEL_SIZE, &dPlanePixelSize); - XnUInt64 nPlaneDsr; - GetProperty(XN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE, &nPlaneDsr); + XnDouble dPlaneDsr; + GetProperty(XN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE, &dPlaneDsr); XnDouble dDCRCDist; GetProperty(XN_STREAM_PROPERTY_DCMOS_RCMOS_DISTANCE, &dDCRCDist); m_calibrationInfo.magic = ONI_DEPTH_UTILS_CALIBRATION_INFO_MAGIC; m_calibrationInfo.version = 1; - m_calibrationInfo.params1080.zpd = (int)nPlaneDsr; + m_calibrationInfo.params1080.zpd = dPlaneDsr; m_calibrationInfo.params1080.zpps = dPlanePixelSize; m_calibrationInfo.params1080.dcrcdist = dDCRCDist; diff --git a/Source/Drivers/PS1080/Sensor/XnSensorFixedParams.cpp b/Source/Drivers/PS1080/Sensor/XnSensorFixedParams.cpp index c9b63c10..49ff2f56 100644 --- a/Source/Drivers/PS1080/Sensor/XnSensorFixedParams.cpp +++ b/Source/Drivers/PS1080/Sensor/XnSensorFixedParams.cpp @@ -33,7 +33,7 @@ XnSensorFixedParams::XnSensorFixedParams(XnDevicePrivateData* pDevicePrivateData m_nSensorDepthCMOSI2CSlaveAddress(0), m_nSensorImageCMOSI2CBus(0), m_nSensorImageCMOSI2CSlaveAddress(0), - m_nZeroPlaneDistance(0), + m_dZeroPlaneDistance(0), m_dZeroPlanePixelSize(0), m_dEmitterDCmosDistance(0), m_dDCmosRCmosDistance(0), @@ -80,7 +80,7 @@ XnStatus XnSensorFixedParams::Init() xnLogVerbose(XN_MASK_DEVICE_SENSOR, "Sensor serial number: %s", m_strSensorSerial); // fill in properties - m_nZeroPlaneDistance = (OniDepthPixel)FixedParams.fReferenceDistance; + m_dZeroPlaneDistance = FixedParams.fReferenceDistance; m_dZeroPlanePixelSize = FixedParams.fReferencePixelSize; m_dEmitterDCmosDistance = FixedParams.fDCmosEmitterDistance; m_dDCmosRCmosDistance = FixedParams.fDCmosRCmosDistance; @@ -101,4 +101,4 @@ XnStatus XnSensorFixedParams::Init() XN_IS_STATUS_OK(nRetVal); return (XN_STATUS_OK); -} \ No newline at end of file +} diff --git a/Source/Drivers/PS1080/Sensor/XnSensorFixedParams.h b/Source/Drivers/PS1080/Sensor/XnSensorFixedParams.h index 5941ae3a..1352ea1c 100644 --- a/Source/Drivers/PS1080/Sensor/XnSensorFixedParams.h +++ b/Source/Drivers/PS1080/Sensor/XnSensorFixedParams.h @@ -49,7 +49,7 @@ class XnSensorFixedParams inline XnUInt16 GetImageCmosI2CBus() const { return m_nSensorImageCMOSI2CBus; } inline XnUInt16 GetImageCmosI2CSlaveAddress() const { return m_nSensorImageCMOSI2CSlaveAddress; } - inline OniDepthPixel GetZeroPlaneDistance() const { return m_nZeroPlaneDistance; } + inline XnDouble GetZeroPlaneDistance() const { return m_dZeroPlaneDistance; } inline XnDouble GetZeroPlanePixelSize() const { return m_dZeroPlanePixelSize; } inline XnDouble GetEmitterDCmosDistance() const { return m_dEmitterDCmosDistance; } inline XnDouble GetDCmosRCmosDistance() const { return m_dDCmosRCmosDistance; } @@ -71,7 +71,7 @@ class XnSensorFixedParams XnUInt16 m_nSensorImageCMOSI2CBus; XnUInt16 m_nSensorImageCMOSI2CSlaveAddress; - OniDepthPixel m_nZeroPlaneDistance; + XnDouble m_dZeroPlaneDistance; XnDouble m_dZeroPlanePixelSize; XnDouble m_dEmitterDCmosDistance; XnDouble m_dDCmosRCmosDistance; diff --git a/Source/Drivers/PS1080/Sensor/XnSensorImageStream.cpp b/Source/Drivers/PS1080/Sensor/XnSensorImageStream.cpp index cd035c26..be3bff01 100644 --- a/Source/Drivers/PS1080/Sensor/XnSensorImageStream.cpp +++ b/Source/Drivers/PS1080/Sensor/XnSensorImageStream.cpp @@ -105,12 +105,12 @@ XnStatus XnSensorImageStream::Init() XN_IS_STATUS_OK(nRetVal); XnDouble fZPPS = m_Helper.GetFixedParams()->GetZeroPlanePixelSize(); - XnInt nZPD = m_Helper.GetFixedParams()->GetZeroPlaneDistance(); + XnDouble dZPD = m_Helper.GetFixedParams()->GetZeroPlaneDistance(); - nRetVal = m_HorizontalFOV.UnsafeUpdateValue(2*atan(fZPPS*XN_SXGA_X_RES/2/nZPD)); + nRetVal = m_HorizontalFOV.UnsafeUpdateValue(2*atan(fZPPS*XN_SXGA_X_RES/2/dZPD)); XN_IS_STATUS_OK(nRetVal); - nRetVal = m_VerticalFOV.UnsafeUpdateValue(2*atan(fZPPS*XN_VGA_Y_RES*2/2/nZPD)); + nRetVal = m_VerticalFOV.UnsafeUpdateValue(2*atan(fZPPS*XN_VGA_Y_RES*2/2/dZPD)); XN_IS_STATUS_OK(nRetVal); // init helper From cda50b3b4e7234659075bc7557c9b038453591d8 Mon Sep 17 00:00:00 2001 From: Devymex Date: Thu, 17 Nov 2016 21:52:34 +0800 Subject: [PATCH 2/2] Fix wrong value name in propIds (should be XN_STREAM_PROPERTY_ZERO_PLANE_PIXEL_SIZE) --- Source/Drivers/PS1080/DDK/XnShiftToDepthStreamHelper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Drivers/PS1080/DDK/XnShiftToDepthStreamHelper.cpp b/Source/Drivers/PS1080/DDK/XnShiftToDepthStreamHelper.cpp index b41b7afd..4fba3d22 100644 --- a/Source/Drivers/PS1080/DDK/XnShiftToDepthStreamHelper.cpp +++ b/Source/Drivers/PS1080/DDK/XnShiftToDepthStreamHelper.cpp @@ -89,7 +89,7 @@ XnStatus XnShiftToDepthStreamHelper::InitShiftToDepth() XN_STREAM_PROPERTY_PARAM_COEFF, XN_STREAM_PROPERTY_SHIFT_SCALE, XN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE, - XN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE, + XN_STREAM_PROPERTY_ZERO_PLANE_PIXEL_SIZE, XN_STREAM_PROPERTY_EMITTER_DCMOS_DISTANCE, XN_STREAM_PROPERTY_OUTPUT_FORMAT, };