Color Mode
색상 모드 설정은 색상 이미지가 계산되는 방식을 제어합니다. 색상 모드 설정에는 다음과 같은 가능한 값이 있습니다.
ToneMapping
UseFirstAcquisition
Automatic
ToneMapping
모든 획득을 사용하여 하나의 병합되고 정규화된 컬러 이미지를 생성합니다. multi-acquisition HDR 캡처의 경우 캡처된 이미지의 동적 범위는 일반적으로 8비트 컬러 이미지 범위보다 높습니다. 톤 매핑은 배율 인수를 적용하여 HDR 색상 데이터를 8비트 색상 출력 범위에 매핑합니다. 단일 획득 캡처에 톤 매핑을 사용하여 캡처한 컬러 이미지를 전체 8비트 출력으로 정규화할 수도 있습니다. ToneMapping
사용할 때 장면에서 개체를 이동, 추가 또는 제거하면 반복되는 캡처에서 색상 값이 일치하지 않을 수 있습니다. 색상을 최대한 제어하려면 UseFirstAcquisition
모드를 사용하십시오.
UseFirstAcquisition
은 제공된 첫 번째 획득에서 획득한 색상 데이터를 사용합니다. 캡처가 둘 이상의 획득으로 구성된 경우 나머지 획득은 컬러 이미지에 사용되지 않습니다. 톤 매핑이 수행되지 않습니다. 이 옵션은 컬러 이미지에 대한 대부분의 제어를 제공하며 색상 값은 동일한 설정으로 반복 캡처하는 동안 일관됩니다.
Automatic
이 기본 옵션입니다.Automatic
은 단일 획득 캡처 및 모든 획득에 동일한(중복된) 획득 설정이 있는 다중 획득 캡처에서UseFirstAcquisition
과 동일합니다.Automatic
은 획득 설정이 다른 다중 획득 HDR 캡처에 대한ToneMapping
과 동일합니다.
참고
SDK 2.7부터 Color Mode에 UseFirstAcquisition
을 설정하여 HDR 캡처에 대한 톤 매핑을 비활성화할 수 있습니다.
단일 획득 캡처의 경우 톤 매핑을 사용하여 어두운 이미지를 밝게 할 수 있습니다.
Single acquisition capture with Color Mode set to |
Single acquisition capture with Color Mode set to |
다중 획득의 경우 HDR 톤 매핑을 사용하여 높은 동적 범위 색상을 보다 제한된 동적 범위 출력에 매핑할 수 있습니다.
Single acquisition capture of the first of three HDR acquisitions with Color Mode set to |
Single acquisition capture of the second of three HDR acquisitions with Color Mode set to |
Single acquisition capture of the third of three HDR acquisitions with Color Mode set to |
HDR with three acquisitions with Color Mode set to |
HDR capture with UseFirstAcquisition
다중 획득 HDR에 톤 매핑을 사용하지 않고 대신 획득 중 하나의 컬러 이미지를 사용하는 것이 가능합니다. 색상을 사용하려는 획득을 식별합니다. 그런 다음 획득이 HDR 캡처에 대한 획득 설정 시퀀스의 첫 번째인지 확인하고 색상 모드를 UseFirstAcquisition
으로 설정합니다. 위의 예에서 결과 컬러 이미지는 세 가지 HDR 획득 중 첫 번째를 사용하여 단일 캡처의 컬러 이미지처럼 보입니다.
힌트
Zivid Studio에서 … → Move to top 을 클릭하여 첫번째 순서의 획득으로 만드십시오.
HDR 캡처가 컬러 이미지를 가져오는 획득을 변경하려면 획득 설정을 재정렬하기만 하면 됩니다. UseFirstAcquisition
색상 모드는 반복된 캡처에서 색상을 일관되게 유지하는 데 권장되며, 예를 들어 2D 이미지의 색상 또는 질감을 기반으로 개체 분류에 유용합니다. 구현 예에 대한 자세한 설명은 How to deal with Color Inconsistency from HDR 을 확인하십시오.
Color Mode를 포함하여 Zivid SDK로 processing settings을 지정하는 방법을 확인하십시오.
std::cout << "Configuring settings for capture:" << std::endl;
Zivid::Settings settings{
Zivid::Settings::Engine::phase,
Zivid::Settings::Sampling::Color::rgb,
Zivid::Settings::Sampling::Pixel::blueSubsample2x2,
Zivid::Settings::RegionOfInterest::Box::Enabled::yes,
Zivid::Settings::RegionOfInterest::Box::PointO{ 1000, 1000, 1000 },
Zivid::Settings::RegionOfInterest::Box::PointA{ 1000, -1000, 1000 },
Zivid::Settings::RegionOfInterest::Box::PointB{ -1000, 1000, 1000 },
Zivid::Settings::RegionOfInterest::Box::Extents{ -1000, 1000 },
Zivid::Settings::RegionOfInterest::Depth::Enabled::yes,
Zivid::Settings::RegionOfInterest::Depth::Range{ 200, 2000 },
Zivid::Settings::Processing::Filters::Smoothing::Gaussian::Enabled::yes,
Zivid::Settings::Processing::Filters::Smoothing::Gaussian::Sigma{ 1.5 },
Zivid::Settings::Processing::Filters::Noise::Removal::Enabled::yes,
Zivid::Settings::Processing::Filters::Noise::Removal::Threshold{ 7.0 },
Zivid::Settings::Processing::Filters::Noise::Suppression::Enabled::yes,
Zivid::Settings::Processing::Filters::Noise::Repair::Enabled::yes,
Zivid::Settings::Processing::Filters::Outlier::Removal::Enabled::yes,
Zivid::Settings::Processing::Filters::Outlier::Removal::Threshold{ 5.0 },
Zivid::Settings::Processing::Filters::Reflection::Removal::Enabled::yes,
Zivid::Settings::Processing::Filters::Reflection::Removal::Mode::global,
Zivid::Settings::Processing::Filters::Cluster::Removal::Enabled::yes,
Zivid::Settings::Processing::Filters::Cluster::Removal::MaxNeighborDistance{ 10 },
Zivid::Settings::Processing::Filters::Cluster::Removal::MinArea{ 100 },
Zivid::Settings::Processing::Filters::Experimental::ContrastDistortion::Correction::Enabled::yes,
Zivid::Settings::Processing::Filters::Experimental::ContrastDistortion::Correction::Strength{ 0.4 },
Zivid::Settings::Processing::Filters::Experimental::ContrastDistortion::Removal::Enabled::no,
Zivid::Settings::Processing::Filters::Experimental::ContrastDistortion::Removal::Threshold{ 0.5 },
Zivid::Settings::Processing::Filters::Hole::Repair::Enabled::yes,
Zivid::Settings::Processing::Filters::Hole::Repair::HoleSize{ 0.2 },
Zivid::Settings::Processing::Filters::Hole::Repair::Strictness{ 1 },
Zivid::Settings::Processing::Resampling::Mode::upsample2x2,
Zivid::Settings::Processing::Color::Balance::Red{ 1.0 },
Zivid::Settings::Processing::Color::Balance::Green{ 1.0 },
Zivid::Settings::Processing::Color::Balance::Blue{ 1.0 },
Zivid::Settings::Processing::Color::Gamma{ 1.0 },
Zivid::Settings::Processing::Color::Experimental::Mode::automatic
};
std::cout << settings << std::endl;
Console.WriteLine("Configuring settings for capture:");
var settings = new Zivid.NET.Settings()
{
Engine = Zivid.NET.Settings.EngineOption.Phase,
Sampling = { Color = Zivid.NET.Settings.SamplingGroup.ColorOption.Rgb, Pixel = Zivid.NET.Settings.SamplingGroup.PixelOption.BlueSubsample2x2 },
RegionOfInterest = { Box = {
Enabled = true,
PointO = new Zivid.NET.PointXYZ{ x = 1000, y = 1000, z = 1000 },
PointA = new Zivid.NET.PointXYZ{ x = 1000, y = -1000, z = 1000 },
PointB = new Zivid.NET.PointXYZ{ x = -1000, y = 1000, z = 1000 },
Extents = new Zivid.NET.Range<double>(-1000, 1000),
},
Depth =
{
Enabled = true,
Range = new Zivid.NET.Range<double>(200, 2000),
}
},
Processing = { Filters = { Smoothing = { Gaussian = { Enabled = true, Sigma = 1.5 } },
Noise = { Removal = { Enabled = true, Threshold = 7.0 },
Suppression = { Enabled = true },
Repair ={ Enabled = true } },
Outlier = { Removal = { Enabled = true, Threshold = 5.0 } },
Reflection = { Removal = { Enabled = true, Mode = ReflectionFilterModeOption.Global} },
Cluster = { Removal = { Enabled = true, MaxNeighborDistance = 10, MinArea = 100} },
Hole = { Repair = { Enabled = true, HoleSize = 0.2, Strictness = 1 } },
Experimental = { ContrastDistortion = { Correction = { Enabled = true,
Strength = 0.4 },
Removal = { Enabled = true,
Threshold = 0.5 } } } },
Resampling = { Mode = Zivid.NET.Settings.ProcessingGroup.ResamplingGroup.ModeOption.Upsample2x2},
Color = { Balance = { Red = 1.0, Green = 1.0, Blue = 1.0 },
Gamma = 1.0,
Experimental = { Mode = ColorModeOption.Automatic } } }
};
Console.WriteLine(settings);
print("Configuring settings for capture:")
settings = zivid.Settings()
settings.engine = zivid.Settings.Engine.phase
settings.sampling.color = zivid.Settings.Sampling.Color.rgb
settings.sampling.pixel = zivid.Settings.Sampling.Pixel.blueSubsample2x2
settings.region_of_interest.box.enabled = True
settings.region_of_interest.box.point_o = [1000, 1000, 1000]
settings.region_of_interest.box.point_a = [1000, -1000, 1000]
settings.region_of_interest.box.point_b = [-1000, 1000, 1000]
settings.region_of_interest.box.extents = [-1000, 1000]
settings.region_of_interest.depth.enabled = True
settings.region_of_interest.depth.range = [200, 2000]
filters = settings.processing.filters
filters.smoothing.gaussian.enabled = True
filters.smoothing.gaussian.sigma = 1.5
filters.noise.removal.enabled = True
filters.noise.removal.threshold = 7.0
filters.noise.suppression.enabled = True
filters.noise.repair.enabled = True
filters.outlier.removal.enabled = True
filters.outlier.removal.threshold = 5.0
filters.reflection.removal.enabled = True
filters.reflection.removal.mode = zivid.Settings.Processing.Filters.Reflection.Removal.Mode.global_
filters.cluster.removal.enabled = True
filters.cluster.removal.max_neighbor_distance = 10
filters.cluster.removal.min_area = 100
filters.experimental.contrast_distortion.correction.enabled = True
filters.experimental.contrast_distortion.correction.strength = 0.4
filters.experimental.contrast_distortion.removal.enabled = False
filters.experimental.contrast_distortion.removal.threshold = 0.5
filters.hole.repair.enabled = True
filters.hole.repair.hole_size = 0.2
filters.hole.repair.strictness = 1
resampling = settings.processing.resampling
resampling.mode = zivid.Settings.Processing.Resampling.Mode.upsample2x2
color = settings.processing.color
color.balance.red = 1.0
color.balance.blue = 1.0
color.balance.green = 1.0
color.gamma = 1.0
settings.processing.color.experimental.mode = zivid.Settings.Processing.Color.Experimental.Mode.automatic
print(settings)
Version History
SDK |
Changes |
---|---|
2.7.0 |
Tone mapping API는 Color Mode API로 대체됩니다. |
2.3.0 |
Tone mapping API가 추가되었습니다. |