Metadata

Struct Metadata 

Source
pub struct Metadata {
Show 63 fields pub title: Option<String>, pub lens_name: Option<String>, pub timestamp: Option<NaiveDateTime>, pub diff_from_utc: Option<i32>, pub img_attributes: Option<u32>, pub user_interface_mode: Option<u32>, pub color_composite_mode: Option<u32>, pub img_layer_number: Option<u32>, pub run_mode: Option<u32>, pub peak_mode: Option<u32>, pub sharpening_level: Option<u32>, pub speed: Option<u32>, pub distance: Option<u32>, pub pitch: Option<u32>, pub optical_zoom: Option<f64>, pub objective_magnification: Option<f64>, pub lens_id: Option<u32>, pub num_aperture: Option<u32>, pub head_type: Option<u32>, pub number_of_lines: Option<u32>, pub line0_position: Option<u32>, pub pmt_gain_mode: Option<u32>, pub pmt_gain: Option<u32>, pub pmt_gain_2: Option<u32>, pub pmt_offset: Option<u32>, pub nd_filter: Option<u32>, pub light_filter_type: Option<u32>, pub persist_count: Option<u32>, pub shutter_speed_mode: Option<u32>, pub shutter_speed: Option<u32>, pub white_balance_mode: Option<u32>, pub white_balance_red: Option<u32>, pub white_balance_blue: Option<u32>, pub camera_gain: Option<u32>, pub omit_color_img: Option<u32>, pub plane_compensation: Option<u32>, pub xy_length_unit: Option<u32>, pub z_length_unit: Option<u32>, pub xy_decimal_place: Option<u32>, pub z_decimal_place: Option<u32>, pub x_length_per_pixel: Option<u32>, pub y_length_per_pixel: Option<u32>, pub z_length_per_digit: Option<u32>, pub gamma_reverse: Option<u32>, pub gamma: Option<u32>, pub gamma_correction_offset: Option<u32>, pub ccd_bw_offset: Option<u32>, pub light_lut_mode: Option<u32>, pub light_lut_in0: Option<u32>, pub light_lut_out0: Option<u32>, pub light_lut_in1: Option<u32>, pub light_lut_out1: Option<u32>, pub light_lut_in2: Option<u32>, pub light_lut_out2: Option<u32>, pub light_lut_in3: Option<u32>, pub light_lut_out3: Option<u32>, pub light_lut_in4: Option<u32>, pub light_lut_out4: Option<u32>, pub upper_position: Option<u32>, pub lower_position: Option<u32>, pub light_effective_bit_depth: Option<u32>, pub height_effective_bit_depth: Option<u32>, pub extra: HashMap<String, String>,
}
Expand description

Complete metadata extracted from VK6/VK7 files Based on LAYOUT_MEASUREMENT_CONDITIONS from Surfalize

Fields§

§title: Option<String>§lens_name: Option<String>§timestamp: Option<NaiveDateTime>§diff_from_utc: Option<i32>§img_attributes: Option<u32>§user_interface_mode: Option<u32>§color_composite_mode: Option<u32>§img_layer_number: Option<u32>§run_mode: Option<u32>§peak_mode: Option<u32>§sharpening_level: Option<u32>§speed: Option<u32>§distance: Option<u32>§pitch: Option<u32>§optical_zoom: Option<f64>§objective_magnification: Option<f64>§lens_id: Option<u32>§num_aperture: Option<u32>§head_type: Option<u32>§number_of_lines: Option<u32>§line0_position: Option<u32>§pmt_gain_mode: Option<u32>§pmt_gain: Option<u32>§pmt_gain_2: Option<u32>§pmt_offset: Option<u32>§nd_filter: Option<u32>§light_filter_type: Option<u32>§persist_count: Option<u32>§shutter_speed_mode: Option<u32>§shutter_speed: Option<u32>§white_balance_mode: Option<u32>§white_balance_red: Option<u32>§white_balance_blue: Option<u32>§camera_gain: Option<u32>§omit_color_img: Option<u32>§plane_compensation: Option<u32>§xy_length_unit: Option<u32>§z_length_unit: Option<u32>§xy_decimal_place: Option<u32>§z_decimal_place: Option<u32>§x_length_per_pixel: Option<u32>§y_length_per_pixel: Option<u32>§z_length_per_digit: Option<u32>§gamma_reverse: Option<u32>§gamma: Option<u32>§gamma_correction_offset: Option<u32>§ccd_bw_offset: Option<u32>§light_lut_mode: Option<u32>§light_lut_in0: Option<u32>§light_lut_out0: Option<u32>§light_lut_in1: Option<u32>§light_lut_out1: Option<u32>§light_lut_in2: Option<u32>§light_lut_out2: Option<u32>§light_lut_in3: Option<u32>§light_lut_out3: Option<u32>§light_lut_in4: Option<u32>§light_lut_out4: Option<u32>§upper_position: Option<u32>§lower_position: Option<u32>§light_effective_bit_depth: Option<u32>§height_effective_bit_depth: Option<u32>§extra: HashMap<String, String>

Implementations§

Source§

impl Metadata

Source

pub fn summary(&self) -> String

Get a summary of the most important metadata fields as a formatted string

Examples found in repository?
examples/show_metadata.rs (line 21)
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8    let path = Path::new("tests/data/sample.vk6");
9    
10    if !path.exists() {
11        eprintln!("Error: Please place a VK6 file at {:?}", path);
12        eprintln!("You can obtain VK6 files from Keyence VK-X series microscopes");
13        return Ok(());
14    }
15
16    // Read the VK6 file with RGB image
17    println!("Reading VK6 file...");
18    let surface = read_vk6(path, true)?;
19
20    // Display quick summary
21    println!("\n{}", surface.metadata.summary());
22
23    // Display comprehensive metadata
24    println!("\n=== COMPREHENSIVE METADATA ===\n");
25
26    println!("Basic Information:");
27    println!("  Title: {:?}", surface.metadata.title);
28    println!("  Lens Name: {:?}", surface.metadata.lens_name);
29    println!("  Timestamp: {:?}", surface.metadata.timestamp);
30    println!("  UTC Offset: {:?}", surface.metadata.diff_from_utc);
31
32    println!("\nImage Attributes:");
33    println!("  Image Attributes: {:?}", surface.metadata.img_attributes);
34    println!("  User Interface Mode: {:?}", surface.metadata.user_interface_mode);
35    println!("  Color Composite Mode: {:?}", surface.metadata.color_composite_mode);
36    println!("  Image Layer Number: {:?}", surface.metadata.img_layer_number);
37    println!("  Omit Color Image: {:?}", surface.metadata.omit_color_img);
38
39    println!("\nMeasurement Modes:");
40    println!("  Run Mode: {:?}", surface.metadata.run_mode);
41    println!("  Peak Mode: {:?}", surface.metadata.peak_mode);
42    println!("  Sharpening Level: {:?}", surface.metadata.sharpening_level);
43    println!("  Speed: {:?}", surface.metadata.speed);
44    println!("  Distance: {:?}", surface.metadata.distance);
45    println!("  Pitch: {:?}", surface.metadata.pitch);
46
47    println!("\nOptical Settings:");
48    println!("  Optical Zoom: {:?}", surface.metadata.optical_zoom);
49    println!("  Objective Magnification: {:?}", surface.metadata.objective_magnification);
50    println!("  Lens ID: {:?}", surface.metadata.lens_id);
51    println!("  Numerical Aperture: {:?}", surface.metadata.num_aperture);
52    println!("  Head Type: {:?}", surface.metadata.head_type);
53
54    println!("\nLine Measurement:");
55    println!("  Number of Lines: {:?}", surface.metadata.number_of_lines);
56    println!("  Line 0 Position: {:?}", surface.metadata.line0_position);
57
58    println!("\nPMT Settings:");
59    println!("  PMT Gain Mode: {:?}", surface.metadata.pmt_gain_mode);
60    println!("  PMT Gain: {:?}", surface.metadata.pmt_gain);
61    println!("  PMT Gain 2: {:?}", surface.metadata.pmt_gain_2);
62    println!("  PMT Offset: {:?}", surface.metadata.pmt_offset);
63
64    println!("\nFilter Settings:");
65    println!("  ND Filter: {:?}", surface.metadata.nd_filter);
66    println!("  Light Filter Type: {:?}", surface.metadata.light_filter_type);
67
68    println!("\nShutter & Exposure:");
69    println!("  Persist Count: {:?}", surface.metadata.persist_count);
70    println!("  Shutter Speed Mode: {:?}", surface.metadata.shutter_speed_mode);
71    println!("  Shutter Speed: {:?}", surface.metadata.shutter_speed);
72
73    println!("\nWhite Balance & Color:");
74    println!("  White Balance Mode: {:?}", surface.metadata.white_balance_mode);
75    println!("  White Balance Red: {:?}", surface.metadata.white_balance_red);
76    println!("  White Balance Blue: {:?}", surface.metadata.white_balance_blue);
77    println!("  Camera Gain: {:?}", surface.metadata.camera_gain);
78
79    println!("\nCompensation:");
80    println!("  Plane Compensation: {:?}", surface.metadata.plane_compensation);
81
82    println!("\nUnits & Decimal Places:");
83    println!("  XY Length Unit: {:?}", surface.metadata.xy_length_unit);
84    println!("  Z Length Unit: {:?}", surface.metadata.z_length_unit);
85    println!("  XY Decimal Place: {:?}", surface.metadata.xy_decimal_place);
86    println!("  Z Decimal Place: {:?}", surface.metadata.z_decimal_place);
87
88    println!("\nResolution (raw values in picometers):");
89    println!("  X Length per Pixel: {:?} pm", surface.metadata.x_length_per_pixel);
90    println!("  Y Length per Pixel: {:?} pm", surface.metadata.y_length_per_pixel);
91    println!("  Z Length per Digit: {:?} pm", surface.metadata.z_length_per_digit);
92
93    println!("\nResolution (calculated in micrometers):");
94    println!("  Step X: {:.6} µm/pixel", surface.step_x);
95    println!("  Step Y: {:.6} µm/pixel", surface.step_y);
96    if let Some(z_len) = surface.metadata.z_length_per_digit {
97        println!("  Step Z: {:.6} µm/digit", z_len as f64 * 1e-6);
98    }
99
100    println!("\nGamma Correction:");
101    println!("  Gamma Reverse: {:?}", surface.metadata.gamma_reverse);
102    println!("  Gamma: {:?}", surface.metadata.gamma);
103    println!("  Gamma Correction Offset: {:?}", surface.metadata.gamma_correction_offset);
104
105    println!("\nCCD Settings:");
106    println!("  CCD BW Offset: {:?}", surface.metadata.ccd_bw_offset);
107
108    println!("\nLight LUT (Look-Up Table):");
109    println!("  Light LUT Mode: {:?}", surface.metadata.light_lut_mode);
110    println!("  LUT Point 0: In={:?}, Out={:?}", surface.metadata.light_lut_in0, surface.metadata.light_lut_out0);
111    println!("  LUT Point 1: In={:?}, Out={:?}", surface.metadata.light_lut_in1, surface.metadata.light_lut_out1);
112    println!("  LUT Point 2: In={:?}, Out={:?}", surface.metadata.light_lut_in2, surface.metadata.light_lut_out2);
113    println!("  LUT Point 3: In={:?}, Out={:?}", surface.metadata.light_lut_in3, surface.metadata.light_lut_out3);
114    println!("  LUT Point 4: In={:?}, Out={:?}", surface.metadata.light_lut_in4, surface.metadata.light_lut_out4);
115
116    println!("\nPosition:");
117    println!("  Upper Position: {:?}", surface.metadata.upper_position);
118    println!("  Lower Position: {:?}", surface.metadata.lower_position);
119
120    println!("\nEffective Bit Depth:");
121    println!("  Light Effective Bit Depth: {:?}", surface.metadata.light_effective_bit_depth);
122    println!("  Height Effective Bit Depth: {:?}", surface.metadata.height_effective_bit_depth);
123
124    println!("\n=== DATA SUMMARY ===");
125    println!("Height map shape: {:?}", surface.height.dim());
126    println!("Height map min: {:.6} µm", surface.height.iter().fold(f64::INFINITY, |a, &b| a.min(b)));
127    println!("Height map max: {:.6} µm", surface.height.iter().fold(f64::NEG_INFINITY, |a, &b| a.max(b)));
128    println!("RGB image present: {}", surface.rgb_image.is_some());
129    if let Some(ref rgb) = surface.rgb_image {
130        println!("RGB image shape: {:?}", rgb.dim());
131    }
132
133    Ok(())
134}

Trait Implementations§

Source§

impl Clone for Metadata

Source§

fn clone(&self) -> Metadata

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Metadata

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.