Changeset 542 in 3DVCSoftware for branches/HTM-DEV-0.3-dev2/source/Lib/TAppCommon/TAppComCamPara.cpp
- Timestamp:
- 23 Jul 2013, 15:19:06 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-0.3-dev2/source/Lib/TAppCommon/TAppComCamPara.cpp
r499 r542 965 965 //--- determine (virtual) camera parameter shift between view order index 1 and base view (view order index 0) --- 966 966 Double dCamPosShift, dPicPosShift; 967 #if H_3D_PDM_CAM_PARAS968 Int iMinVOI = (1<<30);969 #endif970 967 Int iMinAbsVOI = (1<<30); 971 968 Int iMinAbsVOIId = 0; … … 975 972 if( iAbsVOI < iMinAbsVOI ) 976 973 { 977 #if H_3D_PDM_CAM_PARAS978 iMinVOI = m_aiViewOrderIndex[ iBaseId ];979 #endif980 974 iMinAbsVOI = iAbsVOI; 981 975 iMinAbsVOIId = iBaseId; … … 984 978 AOF( iMinAbsVOIId != 0 && iMinAbsVOI != 0 ); 985 979 xGetCameraShifts( 0, iMinAbsVOIId, m_uiFirstFrameId, dCamPosShift, dPicPosShift ); 986 #if H_3D_PDM_CAM_PARAS987 Double dCamPosShiftVOI01 = dCamPosShift / Double( iMinVOI );988 #endif989 980 990 981 //--- determine maximum absolute camera position shift, precision, and base scale --- … … 999 990 } 1000 991 } 1001 1002 #if H_3D_PDM_CAM_PARAS1003 Int iPrecision = 0;1004 #if 0 // enabling this lines might be reasonable, but produces different results for the 2 view and 3 view test cases1005 Double dEpsilon = 1e-15;1006 Double dAbsCamPosShiftVOI01 = ( dCamPosShiftVOI01 < 0.0 ? -dCamPosShiftVOI01 : dCamPosShiftVOI01 );1007 Double dShiftRatio = dMaxAbsCamPosShift / dAbsCamPosShiftVOI01 - dEpsilon;1008 for( ; (Double)( 1 << iPrecision ) < dShiftRatio; iPrecision++ );1009 #endif1010 Int iPrecShift = iPrecision + PDM_INTER_CALC_SHIFT + PDM_VIRT_DEPTH_PRECISION - 2;1011 AOF( iPrecShift < PDM_INTERNAL_CALC_BIT_DEPTH );1012 Int iScaleVOI01 = 1 << iPrecShift;1013 m_iPdmPrecision = iPrecision;1014 1015 //--- loop over target views ---1016 for( Int iTargetId = 1; iTargetId < m_iNumberOfBaseViews; iTargetId++ )1017 {1018 // set scale and offset parameters for other views1019 for( Int iBaseId = 0; iBaseId < iTargetId; iBaseId++ )1020 {1021 xGetCameraShifts( (UInt)iBaseId, (UInt)iTargetId, m_uiFirstFrameId, dCamPosShift, dPicPosShift );1022 Double dScale = Double( iScaleVOI01 ) * dCamPosShiftVOI01 / dCamPosShift;1023 Int iDiv = m_aiViewOrderIndex[ iTargetId ] - m_aiViewOrderIndex[ iBaseId ];1024 Int iAdd = ( iDiv > 0 ? iDiv / 2 : -iDiv / 2 );1025 Int iScalePred = ( iScaleVOI01 + iAdd ) / iDiv;1026 Double dFactor = dScale / (Double)iScalePred * pow( 2.0, PDM_LOG4_SCALE_DENOMINATOR );1027 Int iNominator = (Int)floor( dFactor + .5 );1028 Int iNomDelta = iNominator - ( 1 << PDM_LOG4_SCALE_DENOMINATOR );1029 Int iScale = Int( ( (Int64)iNominator * (Int64)iScalePred + (Int64)( ( 1 << PDM_LOG4_SCALE_DENOMINATOR ) >> 1 ) ) >> PDM_LOG4_SCALE_DENOMINATOR );1030 Double dOffset = -dPicPosShift * Double( iScale ) * pow( 2.0, 2 - PDM_OFFSET_SHIFT );1031 Int iOffset = (Int)floor( dOffset + .5 );1032 1033 m_aaiPdmScaleNomDelta [ iTargetId ][ iBaseId ] = iNomDelta;1034 m_aaiPdmOffset [ iTargetId ][ iBaseId ] = iOffset;1035 }1036 }1037 #endif1038 992 } 1039 993 … … 1059 1013 m_aaiScaleAndOffsetSet = 0; 1060 1014 1061 #if H_3D_PDM_CAM_PARAS1062 m_iPdmPrecision = 0;1063 m_aaiPdmScaleNomDelta = 0;1064 m_aaiPdmOffset = 0;1065 #endif1066 1067 1015 m_adBaseViewShiftParameter = 0; 1068 1016 m_aiBaseViewShiftParameter = 0; … … 1098 1046 xDeleteArray( m_aaiScaleAndOffsetSet, m_iNumberOfBaseViews ); 1099 1047 1100 #if H_3D_PDM_CAM_PARAS1101 xDeleteArray( m_aaiPdmScaleNomDelta, m_iNumberOfBaseViews );1102 xDeleteArray( m_aaiPdmOffset, m_iNumberOfBaseViews );1103 #endif1104 1048 } 1105 1049 … … 1344 1288 xInit2dArray ( (UInt)m_iNumberOfBaseViews, (UInt)m_iNumberOfBaseViews, m_aaiScaleAndOffsetSet, 0 ); 1345 1289 1346 #if H_3D_PDM_CAM_PARAS1347 xCreate2dArray( (UInt)m_iNumberOfBaseViews, (UInt)m_iNumberOfBaseViews, m_aaiPdmScaleNomDelta );1348 xCreate2dArray( (UInt)m_iNumberOfBaseViews, (UInt)m_iNumberOfBaseViews, m_aaiPdmOffset );1349 1350 //===== init disparity to virtual depth conversion parameters =====1351 xSetPdmConversionParams();1352 #endif1353 1354 1290 //===== init arrays for first frame ===== 1355 1291 xSetShiftParametersAndLUT( m_uiFirstFrameId );
Note: See TracChangeset for help on using the changeset viewer.