gpt4 book ai didi

boofcv.alg.geo.calibration.Zhang99DecomposeHomography类的使用及代码示例

转载 作者:知者 更新时间:2024-03-14 16:51:31 27 4
gpt4 key购买 nike

本文整理了Java中boofcv.alg.geo.calibration.Zhang99DecomposeHomography类的一些代码示例,展示了Zhang99DecomposeHomography类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Zhang99DecomposeHomography类的具体详情如下:
包路径:boofcv.alg.geo.calibration.Zhang99DecomposeHomography
类名称:Zhang99DecomposeHomography

Zhang99DecomposeHomography介绍

[英]Decomposes a homography into rigid body motion (rotation and translation) utilizing specific assumptions made inside the Zhang99 paper [1].

Let K and R be the calibration matrix and rotation matrix.
R = [ r1 , r1 , r1 ]
ri is the ith column in R.
Then compute R using the column of the homography matrix: r1 = λ*inv(K)h1
r2 = λ
inv(K)h2
r3 = cross(r1,r2)
t = λ
inv(K)*h3
t is the translation vector. The R computed above is only approximate and needs to be turned into a real rotation matrix.

[1] Zhengyou Zhang, "Flexible Camera Calibration By Viewing a Plane From Unknown Orientations,", International Conference on Computer Vision (ICCV'99), Corfu, Greece, pages 666-673, September 1999.
[中]利用Zhang99论文[1]中的特定假设,将单应性分解为刚体运动(旋转和平移)。
设K和R为校准矩阵和旋转矩阵。
R=[r1,r1,r1]
ri是R中的第i列。
然后使用单应矩阵的列计算R:r1=λ*inv(K)h1
r2=λ
inv(K)h2
r3=交叉(r1,r2)
t=λ
inv(K)*h3
t是平移向量。上面计算的R只是近似值,需要转化为一个实旋转矩阵。
[1] 张正友,“通过从未知方向观察飞机进行灵活的摄像机校准”,国际计算机视觉会议(ICCV'99),希腊科孚,第666-673页,1999年9月。

代码示例

代码示例来源:origin: us.ihmc/DarpaRoboticsChallenge

public void setIntrinsic(IntrinsicParameters intrinsic)
{
 DenseMatrix64F K = PerspectiveOps.calibrationMatrix(intrinsic, null);
 decomposeH.setCalibrationMatrix(K);
 hasIntrinsic = true;
}

代码示例来源:origin: us.ihmc/ImageProcessing

Zhang99DecomposeHomography decomposeH = new Zhang99DecomposeHomography();
decomposeH.setCalibrationMatrix(new DenseMatrix64F(3,3,true,new double[]{555,0,1024/2,0,555,544/2,0,0,1}));
Se3_F64 motion = decomposeH.decompose(H);

代码示例来源:origin: org.boofcv/calibration

/**
 * Find an initial estimate for calibration parameters using linear techniques.
 */
protected Zhang99ParamAll initialParam( List<CalibrationObservation> observations )
{
  status("Estimating Homographies");
  List<DenseMatrix64F> homographies = new ArrayList<>();
  List<Se3_F64> motions = new ArrayList<>();
  for( CalibrationObservation obs : observations ) {
    if( !computeHomography.computeHomography(obs) )
      return null;
    DenseMatrix64F H = computeHomography.getHomography();
    homographies.add(H);
  }
  status("Estimating Calibration Matrix");
  computeK.process(homographies);
  DenseMatrix64F K = computeK.getCalibrationMatrix();
  decomposeH.setCalibrationMatrix(K);
  for( DenseMatrix64F H : homographies ) {
    motions.add(decomposeH.decompose(H));
  }
  status("Estimating Radial Distortion");
  computeRadial.process(K, homographies, observations);
  double distort[] = computeRadial.getParameters();
  return convertIntoZhangParam(motions, K,optimized.assumeZeroSkew, distort,
      optimized.includeTangential);
}

代码示例来源:origin: us.ihmc/DarpaRoboticsChallenge

public boolean estimateCameraPose(BufferedImage leftEye)
{
 if (!hasIntrinsic)
   return false;
 gray.reshape(leftEye.getWidth(), leftEye.getHeight());
 ConvertBufferedImage.convertFrom(leftEye, gray);
 if (!target.process(gray))
   return false;
 if (!computeH.computeHomography(target.getDetectedPoints()))
   return false;
 DenseMatrix64F H = computeH.getHomography();
 targetToOrigin.set(decomposeH.decompose(H));
 return true;
}

代码示例来源:origin: us.ihmc/ihmc-perception

Zhang99DecomposeHomography decomposeH = new Zhang99DecomposeHomography();
decomposeH.setCalibrationMatrix(K);
return decomposeH.decompose(H);

代码示例来源:origin: org.boofcv/boofcv-calibration

/**
 * Find an initial estimate for calibration parameters using linear techniques.
 */
protected boolean linearEstimate(List<CalibrationObservation> observations , Zhang99AllParam param )
{
  status("Estimating Homographies");
  List<DMatrixRMaj> homographies = new ArrayList<>();
  List<Se3_F64> motions = new ArrayList<>();
  for( CalibrationObservation obs : observations ) {
    if( !computeHomography.computeHomography(obs) )
      return false;
    DMatrixRMaj H = computeHomography.getHomography();
    homographies.add(H);
  }
  status("Estimating Calibration Matrix");
  computeK.process(homographies);
  DMatrixRMaj K = computeK.getCalibrationMatrix();
  decomposeH.setCalibrationMatrix(K);
  for( DMatrixRMaj H : homographies ) {
    motions.add(decomposeH.decompose(H));
  }
  status("Estimating Radial Distortion");
  computeRadial.process(K, homographies, observations);
  double distort[] = computeRadial.getParameters();
  convertIntoZhangParam(motions, K,distort, param);
  return true;
}

代码示例来源:origin: us.ihmc/IHMCPerception

Zhang99DecomposeHomography decomposeH = new Zhang99DecomposeHomography();
decomposeH.setCalibrationMatrix(K);
return decomposeH.decompose(H);

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com