Running Infield Correction

Introduction

카메라에서 Infield Verification 또는 Correction을 실행하기 위해 다음을 사용할 수 있습니다.

  • Zivid Studio

  • CLI tool

  • SDK

Infield Correction을 처음 실행하는 경우 Zivid Studio를 사용하는 것이 좋습니다.

Infield Correction functionality overview

  • Last correction Infield Correction이 카메라에 기록된 마지막 날짜와 시간을 보여줍니다.

  • Capture & Measure 는 Zivid 보정 보드가 놓인 위치에서 포인트 클라우드의 로컬 Dimension Trueness 오류를 결정하기 위해 캡처합니다.

  • Current Camera Metrics Capture & Measure 로 마지막으로 캡처된 항목의 로컬 차원 Dimension trueness 오류와 모든 캡처의 평균 및 최대값을 보여줍니다.

  • Current trueness Capture & Measure 로 수행한 마지막으로 캡처된 항목의 로컬 차원 Dimension Trueness 오류를 보여줍니다.

  • Average trueness 지금까지 Capture & Measure 로 수행된 모든 캡처에 대한 Local Dimension Trueness 오류의 평균을 보여줍니다.

  • Maximum trueness 지금까지 Capture & Measure 로 수행된 모든 캡처에 대한 Local Dimension Trueness 오류의 최대값을 보여줍니다.

  • Expected Post-Correction Metrics 는 이미지가 캡처된 작동 거리에 대한 1σ 통계적 불확실성 내에서 추정된 보정 후 오류를 보여줍니다.

  • Save Correction to CameraCapture & Measure 로 찍은 Zivid 칼리브레이션 보드의 캡처에서 결정된 포인트 클라우드의 정확도를 개선하기 위한 파라미터를 카메라에 기록합니다.

  • Reset Camera Correction 는 이전 올바른 인스턴스에 적용된 모든 Infield Correction을 제거합니다. 새로운 Infield Correction을 하기 전에 재설정을 할 필요는 없습니다.

DESCRIPTION
Tool for verifying, computing and updating infield correction parameters on a Zivid camera

SYNOPSIS
        ZividExperimentalInfieldCorrection.exe (verify|correct|read|reset) [-h]

OPTIONS
        verify      verify camera correction quality based on a single capture
        correct     calculate infield correction based on a series of captures at different distances and positions
        read        get information about the correction currently on the connected camera
        reset       reset correction on connected camera to factory settings

설치 중에 Zivid가 PATH를 추가한 경우 CLI 도구는 PATH에 있으며, 그렇지 않은 경우 CLI 도구는 C:\Program Files\Zivid\bin 에 있습니다.

CLI 도구는 기본 PATH에 있습니다.

  • verify : 이 기능은 단일 캡처를 사용하여 Zivid 교정 보드가 배치된 지점의 포인트 클라우드의 로컬 치수 Dimension Trueness 오류를 확인합니다.

  • correct: 이 기능은 Zivid 보정 보드의 캡처를 사용하여 포인트 클라우드의 정확도를 개선하는 데 필요한 매개변수를 결정하는 데 사용됩니다. 이렇게 하면 이미지가 캡처된 작동 거리에 대해 1σ 통계적 불확실성 내에서 보정 후 오류가 반환됩니다.

  • reset: 재설정을 사용하면 이전의 올바른 경우에 적용된 모든 Infield Correction 값이 제거됩니다. 새로운 Infield Correction을 수행하기 전에 재설정을 수행할 필요는 없습니다.

  • read: 읽기 기능은 Infield Correction이 카메라에 마지막으로 기록된 시간을 반환합니다.

Verify

보드를 원하는 위치에 놓습니다. 라이브 캡처 모드에서 Zivid Studio를 사용하여 보드를 올바르게 정렬할 것을 권장합니다. Infield Correction 데이터 세트에서 첫 번째 캡처를 위해 캡처하려는 가장 가까운 거리에 체커보드를 배치합니다. 보드를 카메라의 좌표계와 최대한 평행하게 만들고 전체 보드가 카메라 프레임에 표시되는지 확인하십시오.

../../../_images/infield-in-studio-live.png

그런 다음 Infield Correction 도구를 엽니다. 툴바에서 ToolsInfield Correction 클릭합니다.

../../../_images/infield-in-studio-toolbar.png

연결된 카메라의 로컬 치수 Dimension Trueness 오류를 확인하려면 Capture & Measure 클릭하세요.

../../../_images/infield-in-studio-capture-and-measure.png

결과는 Current Camera Metrics 아래에 표시됩니다:

../../../_images/infield-in-studio-capture-and-measure-with-metrics.png
Potential Issues

보드가 카메라에서 너무 멀리 떨어져 있거나 캡처 품질이 좋지 않아 충분한 데이터를 제공할 수 없는 경우 잠재적인 설정 문제에 대해 아래와 같이 알려줍니다.

  1. 보드가 X, Y 또는 Z 평면에서 너무 기울어져 있습니다.

  2. 모든 특징점을 감지할 수 없습니다.

  3. 기준 마커가 표시되지 않습니다.

  4. 보드 이미지의 품질이 너무 낮아 충분한 데이터를 제공할 수 없습니다.

../../../_images/infield-in-studio-issue-1.png ../../../_images/infield-in-studio-issue-2.png ../../../_images/infield-in-studio-issue-3.png ../../../_images/infield-in-studio-issue-4.png

명령어을 사용하여 입력 인수 verify 로 확인 기능을 실행합니다(Zivid Studio에서 카메라와의 연결을 끊는 것을 잊지 마십시오).

ZividExperimentalInfieldCorrection verify

Potential Issues

보드가 카메라에서 너무 멀리 떨어져 있거나 캡처 품질이 좋지 않아 충분한 데이터를 제공할 수 없는 경우 잠재적인 설정 문제에 대해 아래와 같이 알려줍니다.

  1. 보드가 X, Y 또는 Z 평면에서 너무 기울어져 있습니다.

  2. 모든 특징점을 감지할 수 없습니다.

  3. 기준 마커가 표시되지 않습니다.

  4. 보드 이미지의 품질이 너무 낮아 충분한 데이터를 제공할 수 없습니다.

SDK에서 카메라의 로컬 치수 Dimension Trueness 오류를 확인하려면 먼저 카메라에 연결하세요. (Zivid Studio에서 카메라 연결을 해제하는 것을 잊지 마세요).

소스로 이동

소스

std::cout << "Connecting to camera" << std::endl;
auto camera = zivid.connectCamera();
소스로 이동

소스

Console.WriteLine("Connecting to camera");
var camera = zivid.ConnectCamera();
소스로 이동

소스

print("Connecting to camera")
camera = app.connect_camera()

그런 다음 Zivid 칼리브레이션 보드를 캡처하여 데이터를 수집합니다.

소스로 이동

소스

std::cout << "Capturing calibration board" << std::endl;
const auto detectionResult = Zivid::Calibration::detectCalibrationBoard(camera);
소스로 이동

소스

Console.WriteLine("Capturing calibration board");
var detectionResult = Zivid.NET.Calibration.Detector.DetectCalibrationBoard(camera);
소스로 이동

소스

print("Capturing calibration board")
detection_result = zivid.calibration.detect_calibration_board(camera)

ZDF 파일에서 확인

ZDF 파일에서 카메라 정확도를 확인하는 것이 유용한 이유는 무엇입니까?

시스템이 생산 중이라고 가정해 보겠습니다. 시스템이 실행되는 동안 카메라의 정확도를 확인하려고 합니다. 동시에 로봇과 카메라가 주요 작업(예: 빈 피킹) 이외의 작업에 사용되는 시간을 최소화하려고 합니다. 정확도 캡처, 감지 및 추정으로 구성된 전체 현장 검증 라이브를 실행하는 대신 결과를 디스크의 ZDF 파일에 캡처하고 저장할 수만 있습니다. 로봇과 카메라가 주요 작업으로 돌아가면 생산에 사용된 PC가 아닌 다른 PC를 사용하여 ZDF 파일을 로드하고 오프라인에서 정확도를 확인할 수 있습니다. 또한 조사를 위해 이러한 ZDF 파일을 Zivid Customer Success에 보낼 수 있습니다.

ZDF 파일에서 카메라 정확도를 확인하려면 먼저 칼리브레이션 보드를 캡처합니다.

소스로 이동

소스

std::cout << "Capturing calibration board" << std::endl;
const auto frame = Zivid::Calibration::captureCalibrationBoard(camera);
소스로 이동

소스

Console.WriteLine("Capturing calibration board");
var frame = Zivid.NET.Calibration.Detector.CaptureCalibrationBoard(camera);
소스로 이동

소스

print("Capturing calibration board")
with zivid.calibration.capture_calibration_board(camera) as frame:

그런 다음 프레임을 디스크에 저장합니다.

소스로 이동

소스

const auto dataFile = "FrameWithCalibrationBoard.zdf";
frame.save(dataFile);
소스로 이동

소스

var dataFile = "FrameWithCalibrationBoard.zdf";
frame.Save(dataFile);
소스로 이동

소스

data_file = "FrameWithCalibrationBoard.zdf"
frame.save(data_file)

ZDF 파일에서 프레임을 로드합니다.

소스로 이동

소스

std::cout << "Reading frame from file: " << dataFile << ", for offline infield verification" << std::endl;
const auto loadedFrame = Zivid::Frame(dataFile);
소스로 이동

소스

Console.WriteLine("Reading ZDF frame from file: " + dataFile + ", for offline infield verification");
var loadedFrame = new Zivid.NET.Frame(dataFile);
소스로 이동

소스

print(f"Reading frame from file: {data_file}, for offline infield verification")
with zivid.Frame(data_file) as frame:

그런 다음 프레임에서 칼리브레이션 보드 특징점을 감지합니다.

소스로 이동

소스

std::cout << "Detecting calibration board" << std::endl;
const auto detectionResult = Zivid::Calibration::detectCalibrationBoard(loadedFrame);
소스로 이동

소스

Console.WriteLine("Detecting calibration board");
var detectionResult = Zivid.NET.Calibration.Detector.DetectCalibrationBoard(loadedFrame);
소스로 이동

소스

print("Detecting calibration board")
detection_result = zivid.calibration.detect_calibration_board(frame)

참고

captureCalibrationBoard(camera) 로 캡처한 프레임은 capture(camera) 의 결과 프레임과 동일하지 않습니다. detectFeaturePointscaptureCalibrationBoard(camera) 에서 반환된 프레임 개체만 지원합니다.

그런 다음 데이터를 준비하고 Infield Verification에 적합한지 확인합니다.

소스로 이동

소스

const auto input = Zivid::Experimental::Calibration::InfieldCorrectionInput{ detectionResult };
if(!input.valid())
{
    throw std::runtime_error(
        "Capture not valid for infield verification! Feedback: " + input.statusDescription());
}
소스로 이동

소스

var input = new Zivid.NET.Experimental.Calibration.InfieldCorrectionInput(detectionResult);
if (!input.Valid)
{
    throw new Exception("Capture not valid for infield verification! Feedback: " + input.StatusDescription());
}
소스로 이동

소스

infield_input = zivid.experimental.calibration.InfieldCorrectionInput(detection_result)
if not infield_input.valid():
    raise RuntimeError(
        f"Capture not valid for infield verification! Feedback: {infield_input.status_description()}"
    )

마지막으로 검증 결과를 보여줍니다.

소스로 이동

소스

std::cout << "Successful measurement at " << detectionResult.centroid() << std::endl;
const auto verification = Zivid::Experimental::Calibration::verifyCamera(input);
std::cout << "Estimated dimension trueness error at measured position: " << std::setprecision(2) << std::fixed
          << verification.localDimensionTrueness() * 100.0F << "%" << std::endl;
소스로 이동

소스

Console.WriteLine("Successful measurement at " + detectionResult.Centroid().ToString());
var verification = Zivid.NET.Experimental.Calibration.Calibrator.VerifyCamera(input);
Console.WriteLine("Estimated dimenstion trueness error at measured position: " + (verification.LocalDimensionTrueness * 100).ToString("0.00") + "%");
소스로 이동

소스

print(f"Successful measurement at {detection_result.centroid()}")
camera_verification = zivid.experimental.calibration.verify_camera(infield_input)
print(
    f"Estimated dimension trueness error at measured position: {camera_verification.local_dimension_trueness() * 100:.3f}%"
)

Potential Issues

보드가 카메라에서 너무 멀리 떨어져 있거나 캡처 품질이 좋지 않아 충분한 데이터를 제공할 수 없는 경우 잠재적인 설정 문제에 대해 아래와 같이 알려줍니다.

  1. 보드가 X, Y 또는 Z 평면에서 너무 기울어져 있습니다.

  2. 모든 특징점을 감지할 수 없습니다.

  3. 기준 마커가 표시되지 않습니다.

  4. 보드 이미지의 품질이 너무 낮아 충분한 데이터를 제공할 수 없습니다.

Correct

카메라에서 Infield Correction을 수행하려면 Guidelines for Performing Infield Correction 에 설명된 대로 다양한 거리와 시야각의 다양한 위치에서 보드를 사용하여 Capture & Measure 을 클릭하여 데이터를 수집합니다.

../../../_images/infield-in-studio-capture-and-measure.png

Infield 수정을 위해 캡처를 수행하면, 주어진 캡처 수에 대해 예상되는 치수 정확도 오류가 표시됩니다(수정을 적용하려는 경우).

../../../_images/infield-in-studio-expected-metrics.png

이 프로세스를 완료하여 반환되는 정보에는 다음 내용이 포함됩니다.

  1. 주요 FOV에 대해 추정된 새 최대 Dimension Trueness 오차입니다.

  2. 보정 이미지가 촬영된 거리에 따라 이 오류가 예상되는 범위입니다.

보정 결과에 만족하면 보정 매개변수를 카메라에 적용하도록 선택합니다.

Clear Measurements

측정값을 지우고 infield 캡처 수집으로 다시 시작하려면 Capture 섹션에서 세 개의 점을 클릭하십시오. 그런 다음 Clear Measurements 클릭합니다.

../../../_images/infield-in-studio-clear-measurements.png

참고

Camera Metrics 의 값보다 Expected Post-Correction Metrics 의 값이 더 크게 나오는 것은 예상치 못한 일이 아닙니다. 이는 Expected Post-Correction Metrics 가 Infield Correction 데이터 세트에 사용된 대부분의 FOV와 거리 범위에 대해 제공되기 때문입니다. 반면에 Camera Metrics 는 캘리브레이션 보드가 커버하는 FOV와 보드까지의 거리에 대한 캡처에 대해 계산된 local dimension trueness 오차입니다.

마지막으로 Save Correction to Camera 클릭하여 카메라에 Infield correction을 적용합니다.

../../../_images/infield-in-studio-save.png
Potential Issues

보드가 카메라에서 너무 멀리 떨어져 있거나 캡처 품질이 좋지 않아 충분한 데이터를 제공할 수 없는 경우 잠재적인 설정 문제에 대해 아래와 같이 알려줍니다.

  1. 보드가 X, Y 또는 Z 평면에서 너무 기울어져 있습니다.

  2. 모든 특징점을 감지할 수 없습니다.

  3. 기준 마커가 표시되지 않습니다.

  4. 보드 이미지의 품질이 너무 낮아 충분한 데이터를 제공할 수 없습니다.

../../../_images/infield-in-studio-issue-1.png ../../../_images/infield-in-studio-issue-2.png ../../../_images/infield-in-studio-issue-3.png ../../../_images/infield-in-studio-issue-4.png

command line을 사용하여 입력 인수 correct 로 확인 기능을 실행합니다(Zivid Studio에서 카메라와의 연결을 끊는 것을 잊지 마십시오).

ZividExperimentalInfieldCorrection correct

Potential Issues

보드가 카메라에서 너무 멀리 떨어져 있거나 캡처 품질이 좋지 않아 충분한 데이터를 제공할 수 없는 경우 잠재적인 설정 문제에 대해 아래와 같이 알려줍니다.

  1. 보드가 X, Y 또는 Z 평면에서 너무 기울어져 있습니다.

  2. 모든 특징점을 감지할 수 없습니다.

  3. 기준 마커가 표시되지 않습니다.

  4. 보드 이미지의 품질이 너무 낮아 충분한 데이터를 제공할 수 없습니다.

참고

각 캡처 측정에 대해 얻은 값보다 예상 보정 후 Dimension Trueness 오류 값이 더 크게 나오는 것은 흔한 일입니다. 이는 예상 보정 후 지표가 infield 보정 데이터셋에서 사용된 FOV 대부분과 거리 범위에 대해 제공되기 때문입니다. 반면, 캡처 측정값은 칼리브레이션 보드로 적용되는 FOV와 보드까지의 거리에서 캡처에 대해 계산된 로컬 치수 trueness 오류입니다.

SDK에서 카메라에 대해 Infield correction을 수행하려면 먼저 카메라에 연결합니다(Zivid Studio에서 카메라와의 연결을 해제하는 것을 잊지 마십시오).

소스로 이동

소스

std::cout << "Connecting to camera" << std::endl;
auto camera = zivid.connectCamera();
소스로 이동

소스

Console.WriteLine("Connecting to camera");
var camera = zivid.ConnectCamera();
소스로 이동

소스

print("Connecting to camera")
camera = app.connect_camera()

그런 다음 카메라를 Zivid 캘리브레이션 보드로 향하게 하고 Infield correction을 위한 데이터를 수집합니다.

소스로 이동

소스

std::vector<Zivid::Experimental::Calibration::InfieldCorrectionInput> dataset;
std::cout << "Please point the camera at a Zivid infield calibration board. " << std::endl;

const std::string printLine = "------------------------------------------------------------------------";
while(true)
{
    std::cout << printLine << std::endl;
    if(yesNoPrompt("Capture (y) or finish (n)?"))
    {
        std::cout << "Capturing calibration board" << std::endl;
        const auto detectionResult = Zivid::Calibration::detectCalibrationBoard(camera);
        const auto input = Zivid::Experimental::Calibration::InfieldCorrectionInput{ detectionResult };

        if(input.valid())
        {
            dataset.emplace_back(input);
            std::cout << "Valid measurement at: " << input.detectionResult().centroid() << std::endl;
        }
        else
        {
            std::cout << "****INVALID****" << std::endl;
            std::cout << "Feedback: " << input.statusDescription() << std::endl;
        }
        std::cout << printLine << std::endl;
    }
    else
    {
        std::cout << "End of capturing stage." << std::endl;
        std::cout << printLine << std::endl;
        break;
    }
    std::cout << "You have collected " << dataset.size() << " valid measurements so far." << std::endl;
}
소스로 이동

소스

var dataset = new List<Zivid.NET.Experimental.Calibration.InfieldCorrectionInput>();
Console.WriteLine("Please point the camera at a Zivid infield calibration board.");

const string printLine = "------------------------------------------------------------------------";
while (true)
{
    Console.WriteLine(printLine);
    if (YesNoPrompt("Capture (y) or finish (n)?"))
    {
        Console.WriteLine("Capturing calibration board");
        var detectionResult = Zivid.NET.Calibration.Detector.DetectCalibrationBoard(camera);
        var input = new Zivid.NET.Experimental.Calibration.InfieldCorrectionInput(detectionResult);

        if (input.Valid)
        {
            dataset.Add(input);
            Console.WriteLine("Valid measurement at: " + input.DetectionResult.Centroid().ToString());
        }
        else
        {
            Console.WriteLine("****INVALID****");
            Console.WriteLine("Feedback: " + input.StatusDescription());
        }
        Console.WriteLine(printLine);
    }
    else
    {
        Console.WriteLine("End of capturing stage.");
        Console.WriteLine(printLine);
        break;
    }
    Console.WriteLine("You have collected " + dataset.Count + " valid measurements so far.");
}
소스로 이동

소스

dataset = []
print("Please point the camera at a Zivid infield calibration board. ")

print_line = "------------------------------------------------------------------------"
while True:
    print(print_line)
    if _yes_no_prompt("Capture (y) or finish (n)? "):
        print("Capturing calibration board")
        detection_result = zivid.calibration.detect_calibration_board(camera)
        infield_input = zivid.experimental.calibration.InfieldCorrectionInput(detection_result)

        if infield_input.valid():
            dataset.append(infield_input)
        else:
            print("****INVALID****")
            print(f"Feedback: {infield_input.status_description()}")

        print(print_line)
    else:
        print("End of capturing stage.")
        print(print_line)
        break

    print(f"You have collected {len(dataset)} valid measurements so far.")

소스로 이동

소스

std::cout << "Computing new camera correction..." << std::endl;
const auto correction = Zivid::Experimental::Calibration::computeCameraCorrection(dataset);
소스로 이동

소스

Console.WriteLine("Computing new camera correction...");
var correction = Zivid.NET.Experimental.Calibration.Calibrator.ComputeCameraCorrection(dataset);
소스로 이동

소스

print("Computing new camera correction...")
correction = zivid.experimental.calibration.compute_camera_correction(dataset)

새로운 보정을 적용하기 전에 예상 치수 정확도 오류를 추정하세요.

소스로 이동

소스

const auto accuracyEstimate = correction.accuracyEstimate();
std::cout
    << "If written to the camera, this correction can be expected to yield a dimension accuracy error of "
    << std::fixed << std::setprecision(2) << 100.0F * accuracyEstimate.dimensionAccuracy()
    << "% or better in the range of z=[" << static_cast<int>(std::round(accuracyEstimate.zMin())) << ","
    << static_cast<int>(std::round(accuracyEstimate.zMax()))
    << "] across the full FOV. Accuracy close to where the correction data was collected is likely better."
    << std::endl;
소스로 이동

소스

var accuracyEstimate = correction.AccuracyEstimate;
Console.WriteLine("If written to the camera, this correction can be expected to yield a dimension accuracy error of "
        + (accuracyEstimate.DimensionAccuracy * 100).ToString("0.00") + "% or better in the range of z=["
        + accuracyEstimate.ZMin.ToString("0.00") + "," + accuracyEstimate.ZMax.ToString("0.00")
        + "] across the full FOV. Accuracy close to where the correction data was collected is likely better.");
소스로 이동

소스

accuracy_estimate = correction.accuracy_estimate()

print(
    "If written to the camera, this correction can be expected to yield a dimension accuracy error of",
    f"{accuracy_estimate.dimension_accuracy() * 100:.3f}% or better in the range of z=[{accuracy_estimate.z_min():.3f}, {accuracy_estimate.z_max():.3f}] across the full FOV.",
    "Accuracy close to where the correction data was collected is likely better.",
)

이 프로세스를 완료하여 반환되는 정보에는 다음 내용이 포함됩니다.

  1. 주요 FOV에 대해 추정된 새 최대 Dimension Trueness 오차입니다.

  2. 보정 이미지가 촬영된 거리에 따라 이 오류가 예상되는 범위입니다.

보정 결과에 만족하면 보정 매개변수를 카메라에 적용하도록 선택합니다.

참고

각 캡처 측정에 대해 얻은 값보다 예상 보정 후 Dimension Trueness 오류 값이 더 크게 나오는 것은 흔한 일입니다. 이는 예상 보정 후 지표가 infield 보정 데이터셋에서 사용된 FOV 대부분과 거리 범위에 대해 제공되기 때문입니다. 반면, 캡처 측정값은 칼리브레이션 보드로 적용되는 FOV와 보드까지의 거리에서 캡처에 대해 계산된 로컬 치수 trueness 오류입니다.

마지막으로 카메라에 Infield correction을 적용합니다.

소스로 이동

소스

std::cout << "Writing camera correction..." << std::endl;
Zivid::Experimental::Calibration::writeCameraCorrection(camera, correction);
소스로 이동

소스

Console.WriteLine("Writing camera correction...");
Zivid.NET.Experimental.Calibration.Calibrator.WriteCameraCorrection(camera, correction);
소스로 이동

소스

print("Writing correction to camera")
zivid.experimental.calibration.write_camera_correction(camera, correction)

Potential Issues

보드가 카메라에서 너무 멀리 떨어져 있거나 캡처 품질이 좋지 않아 충분한 데이터를 제공할 수 없는 경우 잠재적인 설정 문제에 대해 아래와 같이 알려줍니다.

  1. 보드가 X, Y 또는 Z 평면에서 너무 기울어져 있습니다.

  2. 모든 특징점을 감지할 수 없습니다.

  3. 기준 마커가 표시되지 않습니다.

  4. 보드 이미지의 품질이 너무 낮아 충분한 데이터를 제공할 수 없습니다.

Read

마지막 보정이 카메라에 기록된 날짜와 시간을 확인할 수 있습니다.

Camera 섹션은 항상 마지막 보정이 카메라에 적용된 때를 보여줍니다.

../../../_images/infield-in-studio-last-correction.png

입력 인수 read 사용하여 카메라에 마지막 보정이 적용된 시기를 확인하십시오.

ZividExperimentalInfieldCorrection read

읽기 기능을 사용하여 카메라에 마지막 보정이 적용된 시점을 확인하십시오.

소스로 이동

소스

if(Zivid::Experimental::Calibration::hasCameraCorrection(camera))
{
    const auto timestamp = Zivid::Experimental::Calibration::cameraCorrectionTimestamp(camera);
    const auto time = std::chrono::system_clock::to_time_t(timestamp);
    std::cout << "Timestamp of current camera correction: " << std::put_time(std::gmtime(&time), "%FT%TZ")
              << std::endl;
}
else
{
    std::cout << "This camera has no infield correction written to it." << std::endl;
}
소스로 이동

소스

if (Zivid.NET.Experimental.Calibration.Calibrator.HasCameraCorrection(camera))
{
    var timestamp = Zivid.NET.Experimental.Calibration.Calibrator.CameraCorrectionTimestamp(camera);
    Console.WriteLine("Timestamp of curent camera correction: " + timestamp.ToString());
}
else
{
    Console.WriteLine("This camera has no infield correction written to it.");
}
소스로 이동

소스

if zivid.experimental.calibration.has_camera_correction(camera):
    timestamp = zivid.experimental.calibration.camera_correction_timestamp(camera)
    print(f"Timestamp of current camera correction: {timestamp.strftime(r'%Y-%m-%d %H:%M:%S')}")
else:
    print("This camera has no infield correction written to it.")

Reset

카메라에 적용된 보정을 제거할 수 있습니다. 새 것을 테스트하고 적용하기 전에 수정 사항을 제거할 필요는 없습니다.

Camera 섹션에서 세 개의 점을 클릭합니다. 그런 다음 Reset Camera Correction 클릭합니다.

../../../_images/infield-in-studio-reset-correction.png

입력 인수 reset 사용하여 카메라에 적용된 보정을 제거하십시오.

ZividExperimentalInfieldCorrection reset

재설정 기능을 사용하여 카메라에 적용된 보정을 제거하십시오.

소스로 이동

소스

std::cout << "Reset infield correction on the camera" << std::endl;
Zivid::Experimental::Calibration::resetCameraCorrection(camera);
소스로 이동

소스

Console.WriteLine("Reset infield correction on the camera");
Zivid.NET.Experimental.Calibration.Calibrator.ResetCameraCorrection(camera);
소스로 이동

소스

print("Reset infield correction on the camera")
zivid.experimental.calibration.reset_camera_correction(camera)

참고

Zivid는 새 카메라가 배송되기 전에 Infield correction을 수행합니다. 이 재설정은 또한 수정 사항을 지우고 공장 보정만 갖도록 카메라를 재설정합니다. 최적의 성능을 위해 환경에서 Infield correction을 수행하는 것이 좋습니다.

Version History

SDK

Changes

2.11.0

Python에 대한 지원이 추가되었습니다.