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
impl Metadata
Sourcepub fn summary(&self) -> String
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§
Auto Trait Implementations§
impl Freeze for Metadata
impl RefUnwindSafe for Metadata
impl Send for Metadata
impl Sync for Metadata
impl Unpin for Metadata
impl UnwindSafe for Metadata
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more