The recommendation is to use Presets(预设值) available in Zivid Studio and as .yml files (see below).
Presets are designed to work well for most cases right away, making them a great starting point.
If needed, you can easily fine-tune the settings for better results.
You can edit the YAML files in any text editor or code the settings manually.
constautosettingsFile="Settings.yml";std::cout<<"Loading settings from file: "<<settingsFile<<std::endl;constautosettingsFromFile=Zivid::Settings(settingsFile);
std::cout<<"Configuring settings for capture:"<<std::endl;Zivid::Settings2Dsettings2D{Zivid::Settings2D::Sampling::Color::rgb,Zivid::Settings2D::Sampling::Pixel::all,Zivid::Settings2D::Processing::Color::Balance::Blue{1.0},Zivid::Settings2D::Processing::Color::Balance::Green{1.0},Zivid::Settings2D::Processing::Color::Balance::Red{1.0},Zivid::Settings2D::Processing::Color::Gamma{1.0},Zivid::Settings2D::Processing::Color::Experimental::Mode::automatic,};Zivid::Settingssettings{Zivid::Settings::Color{settings2D},Zivid::Settings::Engine::phase,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::Cluster::Removal::Enabled::yes,Zivid::Settings::Processing::Filters::Cluster::Removal::MaxNeighborDistance{10},Zivid::Settings::Processing::Filters::Cluster::Removal::MinArea{100},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::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::Smoothing::Gaussian::Enabled::yes,Zivid::Settings::Processing::Filters::Smoothing::Gaussian::Sigma{1.5},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::Resampling::Mode::upsample2x2,Zivid::Settings::Diagnostics::Enabled::no,};setSamplingPixel(settings,camera);std::cout<<settings<<std::endl;std::cout<<"Configuring base acquisition with settings same for all HDR acquisition:"<<std::endl;constautobaseAcquisition=Zivid::Settings::Acquisition{};std::cout<<baseAcquisition<<std::endl;constautobaseAquisition2D=Zivid::Settings2D::Acquisition{};std::cout<<"Configuring acquisition settings different for all HDR acquisitions"<<std::endl;autoexposureValues=getExposureValues(camera);conststd::vector<double>aperture=std::get<0>(exposureValues);conststd::vector<double>gain=std::get<1>(exposureValues);conststd::vector<std::chrono::microseconds>exposureTime=std::get<2>(exposureValues);conststd::vector<double>brightness=std::get<3>(exposureValues);for(size_ti=0;i<aperture.size();++i){std::cout<<"Acquisition "<<i+1<<":"<<std::endl;std::cout<<" Exposure Time: "<<exposureTime.at(i).count()<<std::endl;std::cout<<" Aperture: "<<aperture.at(i)<<std::endl;std::cout<<" Gain: "<<gain.at(i)<<std::endl;std::cout<<" Brightness: "<<brightness.at(i)<<std::endl;constautoacquisitionSettings=baseAcquisition.copyWith(Zivid::Settings::Acquisition::Aperture{aperture.at(i)},Zivid::Settings::Acquisition::Gain{gain.at(i)},Zivid::Settings::Acquisition::ExposureTime{exposureTime.at(i)},Zivid::Settings::Acquisition::Brightness{brightness.at(i)});settings.acquisitions().emplaceBack(acquisitionSettings);}constautoacquisitionSettings2D=baseAquisition2D.copyWith(Zivid::Settings2D::Acquisition::Aperture{2.83},Zivid::Settings2D::Acquisition::ExposureTime{microseconds{10000}},Zivid::Settings2D::Acquisition::Brightness{1.8},Zivid::Settings2D::Acquisition::Gain{1.0});settings.color().value().acquisitions().emplaceBack(acquisitionSettings2D);
Console.WriteLine("Configuring settings for capture:");varsettings2D=newZivid.NET.Settings2D(){Sampling={Color=Zivid.NET.Settings2D.SamplingGroup.ColorOption.Rgb,Pixel=Zivid.NET.Settings2D.SamplingGroup.PixelOption.All,},Processing={Color={Balance={Blue=1.0,Green=1.0,Red=1.0,},Gamma=1.0,Experimental={Mode=Zivid.NET.Settings2D.ProcessingGroup.ColorGroup.ExperimentalGroup.ModeOption.Automatic},},},};varsettings=newZivid.NET.Settings(){Engine=Zivid.NET.Settings.EngineOption.Phase,RegionOfInterest={Box={Enabled=true,PointO=newZivid.NET.PointXYZ{x=1000,y=1000,z=1000},PointA=newZivid.NET.PointXYZ{x=1000,y=-1000,z=1000},PointB=newZivid.NET.PointXYZ{x=-1000,y=1000,z=1000},Extents=newZivid.NET.Range<double>(-1000,1000),},Depth={Enabled=true,Range=newZivid.NET.Range<double>(200,2000),},},Processing={Filters={Cluster={Removal={Enabled=true,MaxNeighborDistance=10,MinArea=100}},Hole={Repair={Enabled=true,HoleSize=0.2,Strictness=1},},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},},Smoothing={Gaussian={Enabled=true,Sigma=1.5},},Experimental={ContrastDistortion={Correction={Enabled=true,Strength=0.4},Removal={Enabled=true,Threshold=0.5},},},},Resampling={Mode=Zivid.NET.Settings.ProcessingGroup.ResamplingGroup.ModeOption.Upsample2x2},},Diagnostics={Enabled=false},};settings.Color=settings2D;SetSamplingPixel(refsettings,camera);Console.WriteLine(settings);Console.WriteLine("Configuring base acquisition with settings same for all HDR acquisitions:");varbaseAcquisition=newZivid.NET.Settings.Acquisition{};Console.WriteLine(baseAcquisition);varbaseAcquisition2D=newZivid.NET.Settings2D.Acquisition{};Console.WriteLine("Configuring acquisition settings different for all HDR acquisitions:");Tuple<double[],Duration[],double[],double[]>exposureValues=GetExposureValues(camera);double[]aperture=exposureValues.Item1;Duration[]exposureTime=exposureValues.Item2;double[]gain=exposureValues.Item3;double[]brightness=exposureValues.Item4;for(inti=0;i<aperture.Length;i++){Console.WriteLine("Acquisition {0}:",i+1);Console.WriteLine(" Exposure Time: {0}",exposureTime[i].Microseconds);Console.WriteLine(" Aperture: {0}",aperture[i]);Console.WriteLine(" Gain: {0}",gain[i]);Console.WriteLine(" Brightness: {0}",brightness[i]);varacquisitionSettings=baseAcquisition.CopyWith(s=>{s.Aperture=aperture[i];s.ExposureTime=exposureTime[i];s.Gain=gain[i];s.Brightness=brightness[i];});settings.Acquisitions.Add(acquisitionSettings);}varacquisitionSettings2D=baseAcquisition2D.CopyWith(s=>{s.Aperture=2.83;s.ExposureTime=Duration.FromMicroseconds(1000);s.Gain=1.0;s.Brightness=1.8;});settings.Color.Acquisitions.Add(acquisitionSettings2D);
print("Configuring settings for capture:")settings_2d=zivid.Settings2D()settings_2d.sampling.color=zivid.Settings2D.Sampling.Color.rgbsettings_2d.sampling.pixel=zivid.Settings2D.Sampling.Pixel.allsettings_2d.processing.color.balance.red=1.0settings_2d.processing.color.balance.blue=1.0settings_2d.processing.color.balance.green=1.0settings_2d.processing.color.gamma=1.0settings_2d.processing.color.experimental.mode=zivid.Settings2D.Processing.Color.Experimental.Mode.automaticsettings=zivid.Settings()settings.engine=zivid.Settings.Engine.phasesettings.region_of_interest.box.enabled=Truesettings.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=Truesettings.region_of_interest.depth.range=[200,2000]settings.processing.filters.cluster.removal.enabled=Truesettings.processing.filters.cluster.removal.max_neighbor_distance=10settings.processing.filters.cluster.removal.min_area=100settings.processing.filters.hole.repair.enabled=Truesettings.processing.filters.hole.repair.hole_size=0.2settings.processing.filters.hole.repair.strictness=1settings.processing.filters.noise.removal.enabled=Truesettings.processing.filters.noise.removal.threshold=7.0settings.processing.filters.noise.suppression.enabled=Truesettings.processing.filters.noise.repair.enabled=Truesettings.processing.filters.outlier.removal.enabled=Truesettings.processing.filters.outlier.removal.threshold=5.0settings.processing.filters.reflection.removal.enabled=Truesettings.processing.filters.reflection.removal.mode=(zivid.Settings.Processing.Filters.Reflection.Removal.Mode.global_)settings.processing.filters.smoothing.gaussian.enabled=Truesettings.processing.filters.smoothing.gaussian.sigma=1.5settings.processing.filters.experimental.contrast_distortion.correction.enabled=Truesettings.processing.filters.experimental.contrast_distortion.correction.strength=0.4settings.processing.filters.experimental.contrast_distortion.removal.enabled=Falsesettings.processing.filters.experimental.contrast_distortion.removal.threshold=0.5settings.processing.resampling.mode=zivid.Settings.Processing.Resampling.Mode.upsample2x2settings.diagnostics.enabled=Falsesettings.color=settings_2d_set_sampling_pixel(settings,camera)print(settings)print("Configuring acquisition settings different for all HDR acquisitions")exposure_values=_get_exposure_values(camera)foraperture,gain,exposure_time,brightnessinexposure_values:settings.acquisitions.append(zivid.Settings.Acquisition(aperture=aperture,exposure_time=exposure_time,brightness=brightness,gain=gain,))settings_2d.acquisitions.append(zivid.Settings2D.Acquisition(aperture=2.83,exposure_time=timedelta(microseconds=10000),brightness=1.8,gain=1.0,))
Now we can capture a 2D and 3D image (point cloud with color).
Whether there is a single acquisition or multiple acquisitions (HDR) is given by the number of acquisitions in settings.
The Zivid::Frame contains the point cloud, the color image, the capture, and the camera information (all of which are stored on the compute device memory).
The Zivid.NET.Frame contains the point cloud, the color image, the capture, and the camera information (all of which are stored on the compute device memory).
The zivid.Frame contains the point cloud, the color image, the capture, and the camera information (all of which are stored on the compute device memory).
In the next code example, the point cloud is exported to the .ply format.
For other exporting options, see Point Cloud for a list of supported formats.
constautoimageFile="ImageRGB.png";std::cout<<"Saving 2D color image (linear RGB color space) to file: "<<imageFile<<std::endl;imageRGBA.save(imageFile);