Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions .github/workflows/windows-msvc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,19 +35,20 @@ jobs:
- name: Clone visp
shell: bash
run: |
git clone --depth 1 https://github.com/lagadic/visp ${HOME}/visp
git clone --depth 1 https://github.com/lagadic/visp /d/a/visp
echo "VISP_SRC_DIR=D:\a\visp" >> $GITHUB_ENV

- name: Clone visp-images
shell: bash
run: |
git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images
echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV
git clone --depth 1 https://github.com/lagadic/visp-images /d/a/visp-images
echo "VISP_INPUT_IMAGE_PATH=D:\a\visp-images" >> $GITHUB_ENV

- name: Clone ustk-dataset
shell: bash
run: |
git clone --depth 1 https://github.com/lagadic/ustk-dataset ${HOME}/ustk-dataset
echo "USTK_DATASET_PATH=$HOME/ustk-dataset" >> $GITHUB_ENV
git clone --depth 1 https://github.com/lagadic/ustk-dataset /d/a/ustk-dataset
echo "USTK_DATASET_PATH=D:\a\ustk-dataset" >> $GITHUB_ENV
echo ${USTK_DATASET_PATH}

- name: Configure ViSP
Expand All @@ -61,7 +62,7 @@ jobs:
echo %USTK_DATASET_PATH%
mkdir build
cd build
cmake ${HOME}/visp -G "Visual Studio 17 2022" -A "x64" -DVISP_CONTRIB_MODULES_PATH=.. -DBUILD_MODULE_visp_ar=OFF -DBUILD_MODULE_visp_blob=OFF -DBUILD_MODULE_visp_detection=OFF -DBUILD_MODULE_visp_klt=OFF -DBUILD_MODULE_visp_mbt=OFF -DBUILD_MODULE_visp_me=OFF -DBUILD_MODULE_visp_tt=OFF -DBUILD_MODULE_visp_tt_mi=OFF -DBUILD_MODULE_visp_vision=OFF -DBUILD_MODULE_visp_visual_features=OFF -DBUILD_MODULE_visp_vs=OFF
cmake %VISP_SRC_DIR% -G "Visual Studio 17 2022" -A "x64" -DVISP_CONTRIB_MODULES_PATH=.. -DBUILD_MODULE_visp_ar=OFF -DBUILD_MODULE_visp_blob=OFF -DBUILD_MODULE_visp_detection=OFF -DBUILD_MODULE_visp_klt=OFF -DBUILD_MODULE_visp_mbt=OFF -DBUILD_MODULE_visp_me=OFF -DBUILD_MODULE_visp_tt=OFF -DBUILD_MODULE_visp_tt_mi=OFF -DBUILD_MODULE_visp_vision=OFF -DBUILD_MODULE_visp_visual_features=OFF -DBUILD_MODULE_visp_vs=OFF
type ViSP-third-party.txt

- name: Build UsTK
Expand Down
13 changes: 7 additions & 6 deletions modules/ustk_core/include/visp3/ustk_core/usBSpline3D.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@

#include <vector>

#include <visp3/core/vpConfig.h>
#include <visp3/core/vpColVector.h>
#include <visp3/core/vpHomogeneousMatrix.h>

Expand Down Expand Up @@ -73,7 +74,7 @@ class VISP_EXPORT usBSpline3D
void removeSegments(int i, int j);
void clear();

void defineFromPoints(const std::vector<vpColVector> &points, const std::vector<double> &lengths, int order = 3);
void defineFromPoints(const std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &points, const std::vector<double> &lengths, int order = 3);

const usPolynomialCurve3D &accessSegment(int i) const;
const usPolynomialCurve3D &accessLastSegment() const;
Expand All @@ -83,22 +84,22 @@ class VISP_EXPORT usBSpline3D

//! Move

bool move(const vpHomogeneousMatrix &H);
bool move(const VISP_NAMESPACE_ADDRESSING vpHomogeneousMatrix &H);
bool move(double x, double y, double z, double tx, double ty, double tz);

//! Measure curve information

//! Position

vpColVector getPoint(double param) const;
vpColVector getTangent(double param) const;
double getDistanceFromPoint(const vpColVector &point, double start = 0, double stop = -1,
VISP_NAMESPACE_ADDRESSING vpColVector getPoint(double param) const;
VISP_NAMESPACE_ADDRESSING vpColVector getTangent(double param) const;
double getDistanceFromPoint(const VISP_NAMESPACE_ADDRESSING vpColVector &point, double start = 0, double stop = -1,
double threshold = 1e-5) const;
bool getParametersFromLength(double l, int &index, double &param) const;

//! Curvature

double getCurvatureFromShape(double start, double end, vpColVector &center3D, vpColVector &direction3D) const;
double getCurvatureFromShape(double start, double end, VISP_NAMESPACE_ADDRESSING vpColVector &center3D, VISP_NAMESPACE_ADDRESSING vpColVector &direction3D) const;

//! Data saving

Expand Down
49 changes: 25 additions & 24 deletions modules/ustk_core/include/visp3/ustk_core/usGeometryDisplayTools.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@

#include <limits>

#include <visp3/core/vpConfig.h>
#include <visp3/core/vpColor.h>
#include <visp3/core/vpHomogeneousMatrix.h>
#include <visp3/core/vpImage.h>
Expand All @@ -48,55 +49,55 @@ namespace usGeometryDisplayTools
{

template <class ImageDataType>
VISP_EXPORT void displayFrame(const vpImage<ImageDataType> &I, const vpHomogeneousMatrix &imageMFrame,
VISP_EXPORT void displayFrame(const VISP_NAMESPACE_ADDRESSING vpImage<ImageDataType> &I, const VISP_NAMESPACE_ADDRESSING vpHomogeneousMatrix &imageMFrame,
double Xscale = 3000, double Yscale = 3000);

//! Display usOrientedPlane3D

template <class ImageDataType>
VISP_EXPORT void display(const usOrientedPlane3D &plane, const vpImage<ImageDataType> &I,
const vpHomogeneousMatrix &imageMworld, double Xscale = 3000, double Yscale = 3000,
const vpColor &color = vpColor::green);
VISP_EXPORT void display(const usOrientedPlane3D &plane, const VISP_NAMESPACE_ADDRESSING vpImage<ImageDataType> &I,
const VISP_NAMESPACE_ADDRESSING vpHomogeneousMatrix &imageMworld, double Xscale = 3000, double Yscale = 3000,
const VISP_NAMESPACE_ADDRESSING vpColor &color = VISP_NAMESPACE_ADDRESSING vpColor::green);

//! Display usPolynomialCurve2D

template <class ImageDataType>
VISP_EXPORT void display(const usPolynomialCurve2D &curve, const vpImage<ImageDataType> &I, double Xscale = 3000,
double Yscale = 3000, const vpColor &color = vpColor::red, int nbRenderingLines = 10);
VISP_EXPORT void display(const usPolynomialCurve2D &curve, const VISP_NAMESPACE_ADDRESSING vpImage<ImageDataType> &I, double Xscale = 3000,
double Yscale = 3000, const VISP_NAMESPACE_ADDRESSING vpColor &color = VISP_NAMESPACE_ADDRESSING vpColor::red, int nbRenderingLines = 10);

//! Display usPolynomialCurve3D

template <class ImageDataType>
VISP_EXPORT void display(const usPolynomialCurve3D &curve, const vpImage<ImageDataType> &I,
const vpHomogeneousMatrix &imageMworld, double Xscale = 3000, double Yscale = 3000,
const vpColor &color = vpColor::red, int nbRenderingLines = 10,
VISP_EXPORT void display(const usPolynomialCurve3D &curve, const VISP_NAMESPACE_ADDRESSING vpImage<ImageDataType> &I,
const VISP_NAMESPACE_ADDRESSING vpHomogeneousMatrix &imageMworld, double Xscale = 3000, double Yscale = 3000,
const VISP_NAMESPACE_ADDRESSING vpColor &color = VISP_NAMESPACE_ADDRESSING vpColor::red, int nbRenderingLines = 10,
double visibilityDistance = std::numeric_limits<double>::infinity());
template <class ImageDataType>
VISP_EXPORT void displayCurvatureFromShape(const usPolynomialCurve3D &spline, const vpImage<ImageDataType> &I,
const vpHomogeneousMatrix &imageMworld, double Xscale = 3000,
double Yscale = 3000, const vpColor &color = vpColor::black);
VISP_EXPORT void displayCurvatureFromShape(const usPolynomialCurve3D &spline, const VISP_NAMESPACE_ADDRESSING vpImage<ImageDataType> &I,
const VISP_NAMESPACE_ADDRESSING vpHomogeneousMatrix &imageMworld, double Xscale = 3000,
double Yscale = 3000, const VISP_NAMESPACE_ADDRESSING vpColor &color = VISP_NAMESPACE_ADDRESSING vpColor::black);

//! Display usBSpline3D

template <class ImageDataType>
VISP_EXPORT void displayLine(const usBSpline3D &spline, const vpImage<ImageDataType> &I,
const vpHomogeneousMatrix &imageMworld, double Xscale = 3000, double Yscale = 3000,
const vpColor &color = vpColor::red, int nbRenderingLinesPerSegment = 10,
VISP_EXPORT void displayLine(const usBSpline3D &spline, const VISP_NAMESPACE_ADDRESSING vpImage<ImageDataType> &I,
const VISP_NAMESPACE_ADDRESSING vpHomogeneousMatrix &imageMworld, double Xscale = 3000, double Yscale = 3000,
const VISP_NAMESPACE_ADDRESSING vpColor &color = VISP_NAMESPACE_ADDRESSING vpColor::red, int nbRenderingLinesPerSegment = 10,
double visibilityDistance = std::numeric_limits<double>::infinity());
template <class ImageDataType>
VISP_EXPORT void displayExtremities(const usBSpline3D &spline, const vpImage<ImageDataType> &I,
const vpHomogeneousMatrix &imageMworld, double Xscale = 3000, double Yscale = 3000,
const vpColor &color = vpColor::red,
VISP_EXPORT void displayExtremities(const usBSpline3D &spline, const VISP_NAMESPACE_ADDRESSING vpImage<ImageDataType> &I,
const VISP_NAMESPACE_ADDRESSING vpHomogeneousMatrix &imageMworld, double Xscale = 3000, double Yscale = 3000,
const VISP_NAMESPACE_ADDRESSING vpColor &color = VISP_NAMESPACE_ADDRESSING vpColor::red,
double visibilityDistance = std::numeric_limits<double>::infinity());
template <class ImageDataType>
VISP_EXPORT void display(const usBSpline3D &spline, const vpImage<ImageDataType> &I,
const vpHomogeneousMatrix &imageMworld, double Xscale = 3000, double Yscale = 3000,
const vpColor &color = vpColor::red, int nbRenderingLines = 10,
VISP_EXPORT void display(const usBSpline3D &spline, const VISP_NAMESPACE_ADDRESSING vpImage<ImageDataType> &I,
const VISP_NAMESPACE_ADDRESSING vpHomogeneousMatrix &imageMworld, double Xscale = 3000, double Yscale = 3000,
const VISP_NAMESPACE_ADDRESSING vpColor &color = VISP_NAMESPACE_ADDRESSING vpColor::red, int nbRenderingLines = 10,
double visibilityDistance = std::numeric_limits<double>::infinity());
template <class ImageDataType>
VISP_EXPORT void displayCurvatureFromShape(const usBSpline3D &spline, const vpImage<ImageDataType> &I,
const vpHomogeneousMatrix &imageMworld, double Xscale = 3000,
double Yscale = 3000, const vpColor &color = vpColor::black);
VISP_EXPORT void displayCurvatureFromShape(const usBSpline3D &spline, const VISP_NAMESPACE_ADDRESSING vpImage<ImageDataType> &I,
const VISP_NAMESPACE_ADDRESSING vpHomogeneousMatrix &imageMworld, double Xscale = 3000,
double Yscale = 3000, const VISP_NAMESPACE_ADDRESSING vpColor &color = VISP_NAMESPACE_ADDRESSING vpColor::black);

} // namespace usGeometryDisplayTools

Expand Down
49 changes: 25 additions & 24 deletions modules/ustk_core/include/visp3/ustk_core/usGeometryTools.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@

#include <vector>

#include <visp3/core/vpConfig.h>
#include <visp3/core/vpColVector.h>
#include <visp3/core/vpConfig.h>

Expand All @@ -44,60 +45,60 @@

namespace usGeometryTools
{
VISP_EXPORT double getPointPlaneDistance(const vpColVector &point, const usOrientedPlane3D &plane);
VISP_EXPORT bool IsPointInFrontOfPlane(const vpColVector &point, const usOrientedPlane3D &plane);
VISP_EXPORT double getPointPlaneDistance(const VISP_NAMESPACE_ADDRESSING vpColVector &point, const usOrientedPlane3D &plane);
VISP_EXPORT bool IsPointInFrontOfPlane(const VISP_NAMESPACE_ADDRESSING vpColVector &point, const usOrientedPlane3D &plane);
VISP_EXPORT bool DoesSegmentCrossPlane(const usPolynomialCurve3D &poly, const usOrientedPlane3D &plane);
VISP_EXPORT bool DoesSegmentCrossPlane(const usBSpline3D &spline, const usOrientedPlane3D &plane);
VISP_EXPORT bool DoesSegmentCrossPlaneDirect(const usPolynomialCurve3D &poly, const usOrientedPlane3D &plane);
VISP_EXPORT bool DoesSegmentCrossPlaneDirect(const usBSpline3D &spline, const usOrientedPlane3D &plane);
VISP_EXPORT vpColVector getPlaneCurveCrossingPoint(const usPolynomialCurve3D &poly, const usOrientedPlane3D &plane,
VISP_EXPORT VISP_NAMESPACE_ADDRESSING vpColVector getPlaneCurveCrossingPoint(const usPolynomialCurve3D &poly, const usOrientedPlane3D &plane,
double threshold, double *t = nullptr);
VISP_EXPORT vpColVector getPlaneCurveCrossingPoint(const usBSpline3D &spline, const usOrientedPlane3D &plane,
VISP_EXPORT VISP_NAMESPACE_ADDRESSING vpColVector getPlaneCurveCrossingPoint(const usBSpline3D &spline, const usOrientedPlane3D &plane,
double threshold, double *t = nullptr);
VISP_EXPORT vpColVector projectPointOnPlane(const vpColVector &point, const usOrientedPlane3D &plane,
const vpColVector &direction = vpColVector());
VISP_EXPORT vpColVector projectPointOnCurve(const vpColVector &point, const usPolynomialCurve3D &poly,
VISP_EXPORT VISP_NAMESPACE_ADDRESSING vpColVector projectPointOnPlane(const VISP_NAMESPACE_ADDRESSING vpColVector &point, const usOrientedPlane3D &plane,
const VISP_NAMESPACE_ADDRESSING vpColVector &direction = VISP_NAMESPACE_ADDRESSING vpColVector());
VISP_EXPORT VISP_NAMESPACE_ADDRESSING vpColVector projectPointOnCurve(const VISP_NAMESPACE_ADDRESSING vpColVector &point, const usPolynomialCurve3D &poly,
double threshold = -1, double *t = nullptr);
VISP_EXPORT vpColVector projectPointOnCurve(const vpColVector &point, const usBSpline3D &spline, double threshold = -1,
VISP_EXPORT VISP_NAMESPACE_ADDRESSING vpColVector projectPointOnCurve(const VISP_NAMESPACE_ADDRESSING vpColVector &point, const usBSpline3D &spline, double threshold = -1,
int *index = nullptr, double *t = nullptr);
VISP_EXPORT usOrientedPlane3D getNormalPlane(const usPolynomialCurve3D &p, double l);

VISP_EXPORT usPolynomialCurve3D convertBSplineToPolynomial(const usBSpline3D &spline, int order);
VISP_EXPORT usBSpline3D convertPolynomialToBSpline(const usPolynomialCurve3D &poly, int nbSegments, int order);

VISP_EXPORT vpPoseVector findPointCloudRelativePose(std::vector<vpColVector> &P1, std::vector<vpColVector> &P2,
VISP_EXPORT VISP_NAMESPACE_ADDRESSING vpPoseVector findPointCloudRelativePose(std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &P1, std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &P2,
double *res = nullptr); // return transform from P1 to P2 (P2 = H *
// P1) (here P1 and P2 have the same size
// and are already matched one by one)
VISP_EXPORT vpTranslationVector findPointCloudRelativePosition(std::vector<vpColVector> &P1,
std::vector<vpColVector> &P2,
const vpRotationMatrix &worldRprobe,
VISP_EXPORT VISP_NAMESPACE_ADDRESSING vpTranslationVector findPointCloudRelativePosition(std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &P1,
std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &P2,
const VISP_NAMESPACE_ADDRESSING vpRotationMatrix &worldRprobe,
double *res = nullptr); // return translation from P1 to
// P2 (P2 = P1 + T) (here P1 and
// P2 have the same size and are
// already matched one by one)
VISP_EXPORT vpRotationMatrix findPointCloudRelativeRotation(std::vector<vpColVector> &P1, std::vector<vpColVector> &P2,
VISP_EXPORT VISP_NAMESPACE_ADDRESSING vpRotationMatrix findPointCloudRelativeRotation(std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &P1, std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &P2,
double *res = nullptr); // return rotation from P1 to P2 (P2
// = R * P1) (here P1 and P2 have
// the same size and are already
// matched one by one)

VISP_EXPORT vpPoseVector ICPPointCloudRelativePose(
std::vector<vpColVector> &P1, std::vector<vpColVector> &P2, double *res = nullptr,
vpPoseVector *initialGuess =
VISP_EXPORT VISP_NAMESPACE_ADDRESSING vpPoseVector ICPPointCloudRelativePose(
std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &P1, std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &P2, double *res = nullptr,
VISP_NAMESPACE_ADDRESSING vpPoseVector *initialGuess =
nullptr); // return transform from P1 to P2 (P2 = H * P1) (P1 and P2 can have different sizes)
VISP_EXPORT vpTranslationVector ICPPointCloudRelativePosition(
std::vector<vpColVector> &P1, std::vector<vpColVector> &P2, const vpRotationMatrix &worldRprobe,
VISP_EXPORT VISP_NAMESPACE_ADDRESSING vpTranslationVector ICPPointCloudRelativePosition(
std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &P1, std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &P2, const VISP_NAMESPACE_ADDRESSING vpRotationMatrix &worldRprobe,
double *res = nullptr,
vpTranslationVector *initialGuess =
VISP_NAMESPACE_ADDRESSING vpTranslationVector *initialGuess =
nullptr); // return translation from P1 to P2 (P2 = P1 + T) (P1 and P2 can have different sizes)
VISP_EXPORT vpRotationMatrix ICPPointCloudRelativeRotation(
std::vector<vpColVector> &P1, std::vector<vpColVector> &P2, double *res = nullptr,
vpRotationMatrix *initialGuess =
VISP_EXPORT VISP_NAMESPACE_ADDRESSING vpRotationMatrix ICPPointCloudRelativeRotation(
std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &P1, std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &P2, double *res = nullptr,
VISP_NAMESPACE_ADDRESSING vpRotationMatrix *initialGuess =
nullptr); // return rotation from P1 to P2 (P2 = R * P1) (P1 and P2 can have different sizes)

VISP_EXPORT bool fitCircleTo2DPointCloud(const std::vector<vpColVector> &points, vpColVector &center, double &r);
VISP_EXPORT bool fitSphereTo3DPointCloud(const std::vector<vpColVector> &points, vpColVector &center, double &r);
VISP_EXPORT bool fitCircleTo2DPointCloud(const std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &points, VISP_NAMESPACE_ADDRESSING vpColVector &center, double &r);
VISP_EXPORT bool fitSphereTo3DPointCloud(const std::vector<VISP_NAMESPACE_ADDRESSING vpColVector> &points, VISP_NAMESPACE_ADDRESSING vpColVector &center, double &r);

} // namespace usGeometryTools

Expand Down
Loading
Loading