<?xml version="1.0" encoding="UTF-8"?>
<?xml-model
    href="https://pds.nasa.gov/pds4/pds/v1/PDS4_PDS_1E00.sch"
    schematypens="http://purl.oclc.org/dsdl/schematron"?>

<!-- PDS4 Local Data Dictionary Extended Ingest File for Imaging Node            -->
<Ingest_LDD 
  xmlns="http://pds.nasa.gov/pds4/pds/v1" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://pds.nasa.gov/pds4/pds/v1 https://pds.nasa.gov/pds4/pds/v1/PDS4_PDS_1E00.xsd">
  
  <name>Imaging</name>
  <ldd_version_id>1.9.2.0</ldd_version_id>
  <dictionary_type>Discipline</dictionary_type>
  <full_name>Trent Hare</full_name>
  <steward_id>img</steward_id>
  <namespace_id>img</namespace_id>
  <comment> This dictionary contains high level classes and attributes used in imaging and
    spectrometer products. It also contains classes with attributes used during active mission
    operations. Many of these classes are designed to be extended into local mission dictionaries.

    ## CHANGE LOG ##
    1.4.0.0
    - upgraded to v1900 of the IM
    - removed specific Autoexposure algorithm classes and introduced generic Algorithm_Parameter
    class
    - new/improved definitions for Companding_Parameters, Downsampling_Parameters,
    Exposure_Parameters
    - removed the following attributes: Data_Correction.data_correction_subtype
    - removed the following classes because they were insufficiently multi-mission:
    - Derived_Product_Parameters
    - Frame_Parameters
    - Product_Identification
    - Stereo_Product_Parameters
    - Vector_Range_Origin
    - added exposure_type enumeration
    - new flat_field_algorithm attribute
    - changed compression_type to compression_class and compression_mode_name to compression_type
    - added new enumerations for compression_class and compression_type
    - added new Instrument_Device_Currents class

    1.5.0.0
    - upgraded to v1A10 of the IM
    - removed old blocks of commented out XML

    1.5.1.0
    - changed unit of bandwidth attribute from Units_of_Frequency to Units_of_Length

    1.6.0.0
    - Upgraded to v1B00 of the IM.
    - Re-organized attributes into alphabetical order.
    - Re-organized classes to make most commonly used parts of label easier to find.
    - Created new classes for housekeeping data (Instrument_State_Parameters, Commanded_Parameters)
    and placed them at the bottom.
    - Re-wrote numerous class and attribute definitions, to make dictionary easier for users to
    understand.
    - Renamed some classes and attributes to remove redundant words.
    - Re-designed data correction classes (such as Flat_Field_Correction, Radiometric_Correction,
    etc.) and
    other data processing classes such as Companding, Downsampling, etc. to share a common base
    class.
    - Renamed Compression class and related attributes to Onboard_Compression_*. This is to make it
    clear
    that any image compression was performed for data storage/transmission. PDS4 does not allow
    compressed images.
    - Renamed Filter_Parameters to Optical_Filter

    1.6.1.0
    - Added Brightness_Correction class and associated subclasses/attributes
    - Added Pointing_Correction class and associated subclasses/attributes (moved from IMG_SURFACE
    LDD)
    - Added attributes to Color_Processing class: color_dn_scaling_method, color_dn_scaling_factor
    - Corrected typo in local_reference_type_check_optical_filter rule

    1.7.0.0
    - Upgraded to v1D00 of core IM.
    - Added Illumination class and associated subclasses/attributes.
    - Added Video class to Commanded_Parameters. (bugfix)

    1.7.1.0, T.Hare
    - Added filter
    - Added atmospheric_opacity and atmospheric_opacity_reference under Radiometric_Correction class
    - Added detector_to_image_flip
    - Changed Flat_Field_Correction from 0:1 to 0:* (unbounded)
    - Added Spatial_Filter and Image_Filter classes and 6 new children (*filter_window*)
    - Under Video added frame_index and gop_start_index
    - Under Sampling added saturated_pixel_count, valid_pixel_count and missing pixel_count
    attributes
    - Added Image_Mask, Image_Mask_File clases and under mask_type, horizon_mask_elevation
    attributes.
    anded new Image_Mask added under both Imaging and Commanded_Parameters classes
    - Added mask_transparent_value attribute to Image_Mask_File class

    1.7.2.0 P.Geissler
    - added classes Companding_Table and Companding_Table_Mapping to accomodate attributes:
    input_dn_min, input_dn_max, and output_dn
    - added the missing y_center attribute. Fixed saturated_pixel_count, missing_pixel_count,
    valid_pixel_count

    1.7.3.0, T.Hare
    - Fixes for new enforced rules at LDDTool v11.2.2
    - No longer can one use *_type as non enumerated so changing:
    radiometric_type, mask_type, and subframe_type to have enumerations
    - Add "Sun Subframe Or Full" and None to subframe_type
    - If an optional attribute, don't set nilable to true,
    so setting current_value, erase_count and voltage_value to nilable=false
    - Added abstract_flag and element_flag for all Classes with defaults of false
    - Changed Companding, Detector, Exposure, Focus, Onboard_Compression, Optical_Filter,
    Subframe, and Instrument_State to element_flag = true (allows to be exposed class)
    - update lots of indentations in the classes to be more consistent
    - Add focus_distance to Focus.
    - Add Manual Last, Auto Last, and None to exposure_type
    - Change the minimum for icer_quality to 0 and updated definition
    - Add bad_pixel_replacement_flag, bad_pixel_replacement_table, instrument_idle_timeout,
    early_image_return to Detector
    - Add exposure_table, exposure_table_update_flag to Autoexposure
    - Add exposure_scale_factor, exposure_coadd_count, exposure_readout_count to Exposure
    - Add early_scaling to Companding

    1.8.0.0 T.Hare
    - Update to PDS IM 1.E.0.0
    - Added GZIP and LZO to onboard_compression_type enumeration options
    - Added Optical_Properties class with focal_length, f_number, zoom_position attributes
    - Added focus_initialization_flag attribute under the Focus class
    - Updated Subframe class for first_line, first_sample, lines, and samples attributes to have
    minOccurs=0
    - Updated img_temperature_value to allow nillable=true
    - Added auto_exposure_lower_threshold, auto_exposure_lower_limit, auto_exposure_upper_threshold,
    auto_exposure_upper_limit, auto_exposure_roi_lines, auto_exposure_roi_samples,
    auto_exposure_roi_first_line, auto_exposure_roi_first_sample attributes to Autoexposure
    - Added Image_Compression_Segment under JPEG_Parameters class
    - Renamed attribute bad_pixel_replacement_table to bad_pixel_replacement_table_id and updated
    definition
    - Added Special_Point class and special_line, special_sample attributes
    - Added High_Dynamic_Range and High_Dynamic_Range_Exposure classes
    and attibutes hdr_acquisition_mode, hdr_frame_count, hdr_clexposure_count ipping_threshold,
    exposure_time_delta
    - Added observation_number under Frame class and parameter_table_id under Detector class
    - Added valid_minimum_pixel and valid_maximum_pixel under Autoexposure class
    - Created Thumbnail, Row_Sum, Col_Sum, Reference_Pixel, Histogram classes and attributes added
    to Imaging and Commanded_Parameters class
    - Added delta_focus_count attribute for Focus_Stack class
    - set LED_Illumination_Source to min occurance=0 to any

    1.8.1.0 T.Hare
    - Updated exposure_count set minimum to 0
    - Added Image_Compression_Segment class to LOCO_Parameters
    - Added illumination_state attribute to LED_Illumination_Source class
    - Allow motor_count to be negative
    - Allow jpeg_quality to 0
    - Added segment_count to LOCO_Parameters class
    - Added onboard_compression_venue to Onboard_Compression class
    - Added 'Lossless' as a valid for onboard_compression_type attribute
    - Allow decomposition_stages to have a minimum of 0
    - Updated exposure_time_delta to Units_of_Time
    - Updated High_Dynamic_Range_Exposure to be unbounded

    1.8.2.0 T.Hare
    - Added Tiling Class and uts attributes
    - Added "StarPixel Lossless" and "StarPixel Flexible" as compression types under
    onboard_compression_type
    for Hayabusa2 ONC and TIR instruments. For more see:
    https://www.mdpi.com/1424-8220/15/10/24926/htm
    - Added Spatial_Filter and Image_Filter under Imaging and Commanded_Parameters (both were not
    yet added)
    - Updated attrbiutes under Spatial/Image_Filter to be Units_of_None
    - Updated horizon_mask_elevation attribute to be allowed as a direct child under Image_Mask
    - Add array_band_number attribute to Optical_Filter
    - Add original_sample_bits to Sampling class

    1.8.3.0 T.Hare
    - Added illumination_mode as an optional child of lllumination

    1.8.4.0 T.Hare
    - Added "Always" and "None" as additional valids for shutter_subtraction_mode
    - Added frame_index to Focus_Stack class

    1.8.5.0 T.Hare
    - Added choice between Internal_Reference/External_Reference in Video class, created reference
    rules for it also
    - Added rule for Tile Internal_Reference for reference type to be "data_to_tile_source_data"
    - Added "H.264 Frame" enumeration to onboard_compression_type
    - Updated definition to specify only unsigned integer are valid to have a sample_bit_mask (need
    to still add rule)
    - Updated definition for tile_num_bands

    1.8.6.0. T.Hare
    - Added StarPixel_Lossless_Parameters and StarPixel_Flexible_Parameters class and attributes:
    starpixel_initial_subsampling_interval, starpixel_degradation segment_corrupted_flag, and two
    rules
    - Updated to main (required github move)
    - Changed filter_position_count to allow for negative values
    - Changed exposure_duration_count to ASCII_Real (for Mars2020 helicopter)
    - Allow frame_index to be negative as seen returned during M2020 mission
    - Added responsivity_std (to Class Radiometric_Correction) to describe the 1-sigma standard
    deviation in the "responsivity_pan" radiometric coefficients. Added for M2020 Mastcam-Z
    - Added new enumeration radiance factor for radiometric_type and add iof_conversion_coefficient
    and iof_conversion_coefficient_std to the Radiometric_Correction class
    - Added effective_wavelength to Radiometric_Correction class
    - Added new Data_Quality Class and required several required classes and attributes to support
    it.
    - Allowed responsivity_r,g,b,pan,std attributes to be nillable

    1.8.7.0 T.Hare
    - Fixed ordering, moved Tiling class under Thumbnail in Imaging Class to match other classes
    (and alpha ordering).

    1.8.8.0 T. Hare
    - change height_pixels and width_pixels to real from integer as required for the Voyager labels.
    Minimum for both set to 0.

    1.8.9.0 T. Hare
    - Added ISO Class to the Detector Class with iso_number and iso_mode_id attributes.
    - Added White_Balance Class to Data_Processing Class with existing attributes active_flag,
    processing_venue, processing_algorithm and new attribute white_balance_color_temp.

    1.9.0.0 T. Hare
    - Changed crosstrack_summing and downtrack_summing to Units_of_Misc to support pixels and
    set the default to specified_unit_id=pixel
    - added to Autoexposure class: auto_exposure_target_msv, auto_exposure_max_delta,
    auto_exposure_alpha
    to support the CADRE rovers.
    - for CADRE SACA camera add "any" to Video cardinality and pre_video_delay and frame-source_id
    attributes

    1.9.1.0 T. Hare
    - For CLPS SCALPSS instrument (on several missions), create and add attributes:
      - image_corrupt_flag under Data_Quality class
      - auto_expose_target_dn under Autoexposure class
      - gain_count under Detector class
      - gain_db under Detector class
      - analog_offset_count under Detector class
      - analog_offset_percent under Detector class
    - For CLPS SCALPSS instrument (on several missions), add attributes:
      - frame_count under Detector class
    - Add data_received under Data_Quality class
    - Updated White_Balance class to fix placement bug adding Data_Processing
    - Updated Image_Mask adding Data_Processing and remove redundant attributes from there
    - Added Shutter Class under Detector with new shutter attributes.
      - Currently only global or rolling are defined.

    1.9.2.0 T. Hare
    - Mars2020 Mastcam-Z updates, new attribute inband_fsun and iof_conversion_correction 
    added to Radiometric_Correction class.
    - Add analog_offset_voltage under Detector class for a JUICE instrument (for Thomas C.). 
    - Update analog_offset definition.
    - Add compression type Wavelet to onboard_compression_type within Onboard_Compression class
    - Add a Bayer RGYB to color_filter_array_type for Color_Filter_Array Class
    - replace non-UTF8 qutoes with typical double quotes.

  </comment>
  <last_modification_date_time>2025-04-14T13:43Z</last_modification_date_time>

  <!--                     -->
  <!--  Attributes: BEGIN  -->
  <!--                     -->
  <DD_Attribute>
    <name>active_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>active_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The active_flag attribute indicates whether or not the data processing described by the parent class 
      is active. In general, the presence of the parent class implies it is active and thus active_flag is optional. 
      The primary purpose for active_flag is to either explicitly indicate a correction is not active (for example, 
      if it normally is but was explicitly turned off), or to be able to provide parameters for historical reasons 
      that may no longer be relevant to a current correction.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>analog_offset</name>
    <version_id>1.0</version_id>
    <local_identifier>analog_offset</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The analog_offset attribute identifies the analog value that is
      subtracted from the signal prior to the analog/digital conversion.  This
      is a unitless integer and should generally be avoided in favor of
      analog_offset_count, if the value is a raw DN value, or one of the other
      analog_offset attributes if it has a physical unit
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>analog_offset_count</name>
    <version_id>1.0</version_id>
    <local_identifier>analog_offset_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>T. Hare</submitter_name>
    <definition>Raw counts for analog offset.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>analog_offset_percent</name>
    <version_id>1.0</version_id>
    <local_identifier>analog_offset_percent</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>T. Hare</submitter_name>
    <definition>Multiplier applied to pixel depth to get black level (also known as 
      analog_offset). For example: 4% = .04 * 256 = 10.24 for 8-bit images 
      or 4% * 4096 = 163.84 for 12-bit images.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>analog_offset_voltage</name>
    <version_id>1.0</version_id>
    <local_identifier>analog_offset_voltage</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>B. Deen</submitter_name>
    <definition>Specifies the analog voltage value that is
      subtracted from the signal prior to the analog/digital conversion.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Voltage</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>array_band_number</name>
    <version_id>1.0</version_id>
    <local_identifier>array_band_number</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The array_band_number is the image plane (band) in the array that corresponds to 
      the optical filter with which the image was acquired.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>auto_exposure_alpha</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_alpha</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>B. Deen</submitter_name>
    <definition>auto_exposure_alpha is a weighting parameter that decides whether to prefer
      exposure changes more or gain changes. Values closer to 1 mean exposure changes are
      preferred more. For example, this will be used by the CADRE rovers which have a different 
      autoexposure algorithm called "ModalAI MSV 2022".</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>auto_exposure_max_delta</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_max_delta</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>B. Deen</submitter_name>
    <definition>The maximum exposure change that is allowed across image frames. Limiting
      the change makes it more friendly to feature tracking algorithms, in that successive
      scenes do not vary greatly in brightness. For example, this will be used by the 
      CADRE rovers which have a different autoexposure algorithm called "ModalAI MSV 2022".</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_Time</unit_of_measure_type>
      <specified_unit_id>ms</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>auto_expose_target_dn</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_expose_target_dn</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>T. Hare</submitter_name>
    <definition>Target DN for an autoexpose algorithm. Specific definition is algorithm-dependent,
      but often means the desired average DN after autoexposure completes.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>auto_exposure_target_msv</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_target_msv</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>B. Deen</submitter_name>
    <definition>The algorithm attempts to make the Mean Sample Value (MSV) of the image match
      for this value. For example, this will be used by the CADRE rovers as the setpoint for the
      algorithm called "ModalAI MSV 2022".</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>auto_exposure_data_cut</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_data_cut</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The auto_exposure_data_cut attribute specifies the DN value which a specified
      fraction of pixels is permitted to exceed. The fraction is specified using the 
      auto_exposure_data_fraction attribute.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>max_auto_exposure_iteration_count</name>
    <version_id>1.0</version_id>
    <local_identifier>max_auto_exposure_iteration_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The max_auto_exposure_iteration_count attribute specifies the maximum 
      number of exposure iterations the instrument will perform in order to obtain 
      the requested exposure.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>auto_exposure_percent</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_percent</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The auto_exposure_percent attribute specifies the auto-exposure early-termination
      percent. If the desired DN (auto_exposure_data_cut) is within this percentage of the 
      measured DN (the DN at which the percentage of pixels above that DN equals or exceeds 
      the auto_exposure_pixel_fraction), then the auto exposure algorithm is terminated and 
      the calculated time is accepted.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>auto_exposure_pixel_fraction</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_pixel_fraction</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The auto_exposure_pixel_fraction attribute specifies the percentage 
      of pixels whose DN values may exceed the auto_expsoure_data_cut.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>auto_exposure_lower_threshold</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_lower_threshold</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the lower threshold DN value for which a specified number of pixels 
      is permitted to exceed. The auto_exposure_lower_limit defines the number of pixels 
      allowed to exceed this threshold.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>auto_exposure_lower_limit</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_lower_limit</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the maximum number of pixels that are allowed to be below 
      the lower threshold defined by auto_exposure_lower_limit.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>auto_exposure_upper_threshold</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_upper_threshold</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the upper threshold DN value for which a specified number of 
      pixels is permitted to exceed. The auto_exposure_upper_limit defines the number 
      of pixels allowed to exceed this threshold.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>auto_exposure_upper_limit</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_upper_limit</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the maximum number of pixels that are allowed to be above 
      the upper threshold defined by auto_exposure_upper_limit.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>auto_exposure_roi_lines</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_roi_lines</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the number of lines in the autoexposure region of interest.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>auto_exposure_roi_samples</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_roi_samples</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the number of samples in the autoexposure region of interest.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>auto_exposure_roi_first_line</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_roi_first_line</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the (1-based) starting line for the autoexposure region of interest.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>auto_exposure_roi_first_sample</name>
    <version_id>1.0</version_id>
    <local_identifier>auto_exposure_roi_first_sample</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the (1-based) starting sample for the autoexposure region of interest.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>autofocus_step_count</name>
    <version_id>1.0</version_id>
    <local_identifier>autofocus_step_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition> The autofocus_step_count attribute specifies the number of steps (images) to be taken by an 
      autofocus algorithm.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>autofocus_step_size</name>
    <version_id>1.0</version_id>
    <local_identifier>autofocus_step_size</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition>The autofocus_step_size attribute specifies the size in motor counts of each (or the initial) step taken 
      by the focus adjustment mechanism in an autofocus algorithm.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>bad_pixel_replacement_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>bad_pixel_replacement_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>If true, specifies whether or not bad pixel replacement processing was requested or completed.
      See bad_pixel_replacement_table_id.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>bad_pixel_replacement_table_id</name>
    <version_id>1.0</version_id>
    <local_identifier>bad_pixel_replacement_table_id</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the table used to replace bad pixels. A bad pixel table typically lists the location 
      of each bad pixel on a detector. The specific table used is mission-specific.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>bandwidth</name>
    <version_id>1.0</version_id>
    <local_identifier>bandwidth</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The bandwidth attribute provides a measure of the spectral width of a filter. For a root-mean-square detector 
      this is the effective bandwidth of the filter, i.e. the full width of an ideal square filter having a flat response over 
      the bandwidth and zero response elsewhere. Another common method for measuring bandwidth is Full Width at Half Maximum, 
      which is the width of a "bump" on a curve or function. It is given by the distance between points on the curve at which the function
      reaches half of its maximum value.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Length</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>best_focus_distance</name>
    <version_id>1.0</version_id>
    <local_identifier>best_focus_distance</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition>The best_focus_distance attribute specifies the estimated distance to best focus.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Length</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>brightness_scale</name>
    <version_id>1.0</version_id>
    <local_identifier>brightness_scale</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The brightness_scale attribute defines the multiplicative factor used
      for a linear brightness correction.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>brightness_offset</name>
    <version_id>1.0</version_id>
    <local_identifier>brightness_offset</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The brightness_offset attribute defines the additive factor used for a
      linear brightness correction.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>center_filter_wavelength</name>
    <version_id>1.0</version_id>
    <local_identifier>center_filter_wavelength</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The center_filter_wavelength attribute provides the wavelength of the center of the passband, or the peak 
      transmissivity, for an instrument filter.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Length</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>color_component</name>
    <version_id>1.0</version_id>
    <local_identifier>color_component</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>For single-band images, this defines which component
      of the color space is represented by this band.  This keyword is not
      needed for 3-band images, as all bands are represented.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>All</value>
        <value_meaning>Used for 3-band images, or (preferred) the keyword may be absent.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Red</value>
        <value_meaning>Red band of one of the RGB types.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Green</value>
        <value_meaning>Green band of one of the RGB types.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Blue</value>
        <value_meaning>Blue band of one of the RGB types.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>XYZ_X</value>
        <value_meaning>X (uppercase) value of CIE_XYZ.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>XYZ_Y</value>
        <value_meaning>Y (uppercase) value of CIE_XYZ.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>XYZ_Z</value>
        <value_meaning>Z (uppercase) value of CIE_XYZ.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>xyY_x</value>
        <value_meaning>x (lowercase) value of CIE_xyY.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>xyY_y</value>
        <value_meaning>y (lowercase) value of CIE_xyY.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>xyY_YY</value>
        <value_meaning>Capital Y value of CIE_xyY. The Y is repeated in order to
          distinguish it from xyY_y on a case-insensitive basis.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Hue</value>
        <value_meaning>Hue component of HSI</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Saturation</value>
        <value_meaning>Saturation component of HSI</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Intensity</value>
        <value_meaning>Intensity component of HSI</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>color_dn_scaling_factor</name>
    <version_id>1.0</version_id>
    <local_identifier>color_dn_scaling_factor</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The color_dn_scaling_factor attribute specifies the actual value used to scale 
      the color values. This value is determined using the color_dn_scaling_method.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>color_dn_scaling_method</name>
    <version_id>1.0</version_id>
    <local_identifier>color_dn_scaling_method</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The color_dn_scaling_method attribute defines how the color values are scaled. 
      EXPOSURE_NORMALIZED_COLOR means that the color values have been normalized based on exposure 
      time, so neighboring images in a mosaic will have the same color values. DN_COLOR means that 
      the color values are based on the raw DNs, so images take full advantage of the available
      dynamic range but may not match with neighbors in a mosaic.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>color_filter_array_state</name>
    <version_id>1.0</version_id>
    <local_identifier>color_filter_array_state</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>Specifies whether the image still has a CFA pattern ("Encoded"), 
      the CFA pattern has been removed ("Decoded") or it never had a pattern ("No CFA").</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Encoded</value>
        <value_meaning>Indicates the CFA pattern is still present in the image. The image
          should be a single band, with each pixel containing the appropriate
          color value as determined by the color_filter_array_type. An encoded
          image is not directly viewable as color; it must be decoded first.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Decoded</value>
        <value_meaning>Indicates the image has been processed such that it no longer contains
          the CFA pattern. This generally means the image is color, but it
          could also mean that processing has been applied to remove the effects
          of the CFA pattern and still be a single band, or that the result is a
          multispectral image. The algorithm used to decode the pattern is
          indicated by the processing_algorithm attribute in the Color_Filter_Array class.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>No CFA</value>
        <value_meaning>Indicates the image is not and has never been CFA encoded. In
          this case, Color_Filter_Array would simply not be present in
          the label. This value is present in case it needs to be explicitly
          stated that there is no CFA.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>color_filter_array_type</name>
    <version_id>1.1</version_id>
    <local_identifier>color_filter_array_type</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Defines the type of Color Filter Array (CFA) used to encode multiple
      colors in a single exposure. The most common example of this is the
      Bayer pattern. This is optional if there is no CFA. Additional attributes, 
      specific to each CFA type, define whether or not the CFA pattern has been removed, 
      and if so, how (e.g. bayer_algorithm).</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Bayer RGGB</value>
        <value_meaning>The Bayer CFA pattern contains one red, one blue, and two green pixels
          in each 2x2 square of pixels. The RGGB type indicates the phasing of
          the colors, in the order upper left, upper right, lower left, and lower
          right. RGGB is the most common phasing but others are possible.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Bayer RGYB</value>
        <value_meaning>The Bayer CFA pattern contains one red, one green, one yellow, 
          and one blue pixel in each 2x2 square of pixels. The RGYB type indicates 
          the phasing of the colors, in the order upper left, upper right, lower left, 
          and lower right.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>None</value>
        <value_meaning>No color filter array</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>color_space</name>
    <version_id>1.0</version_id>
    <local_identifier>color_space</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Defines the color space in which this product is 
      expressed. Some color spaces (e.g. XYZ or xyY) are independent of 
      illuminant, while for others (e.g. sRGB or pRGB) the illuminant matters. 
      It is expected that the defined color spaces will increase over time.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>iRGB</value>
        <value_meaning>Instrument RGB. This is Red, Green, Blue color as it comes 
          from the instrument, without any color correction.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>sRGB</value>
        <value_meaning>Standard RGB, as defined by XXXXX. Corrected Red, Green, Blue 
          color using a standard 5000K illuminant.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>pRGB</value>
        <value_meaning>Planetary RGB. Corrected Red, Green, Blue color using an 
          approximation of the actual illuminant at the planetary surface. For 
          Mars missions this is typically 3000-4000K.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>wRGB</value>
        <value_meaning>White Balanced RGB. Red, Green, Blue with a simple white 
          balance applied.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>CIE_XYZ</value>
        <value_meaning>Tristimulus values defined by CIE.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>CIE_xyY</value>
        <value_meaning>Chromaticity and luminance coordinates defined by CIE.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>HSI</value>
        <value_meaning>Hue, Saturation, Intensity</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>color_subsampling_mode</name>
    <version_id>1.0</version_id>
    <local_identifier>color_subsampling_mode</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The color_subsampling_mode attribute specifies the JPEG color subsampling mode 
      used during compression. Valid values: '4:2:2' - 4:2:2 chroma subsampling, which is the 
      typical case, '4:4:4' - 4:4:4 chroma sampling, which indicates no subsampling, 
      'Grayscale' - indicates a grayscale image</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>4:4:4</value>
        <value_meaning>Indicates 4:4:4 chroma sampling. Each of the three Y'CbCr components have 
          the same sample rate, thus there is no chroma subsampling</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>4:2:2</value>
        <value_meaning>indicates 4:2:2 chroma subsampling. The typical case. The two chroma components 
          are sampled at half the sample rate of luma: the horizontal chroma resolution is halved. 
          This reduces the bandwidth of an uncompressed video signal by one-third with little to no 
          visual difference.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Grayscale</value>
        <value_meaning>indicates a grayscale image</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>delta_focus_count</name>
    <version_id>1.0</version_id>
    <local_identifier>delta_focus_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Defines the amount of change in focus for each image in the z-stack. The 
      units should be the same as focus_position_count, which is often motor counts.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>input_dn_max</name>
    <version_id>1.0</version_id>
    <local_identifier>input_dn_max</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Paul Geissler</submitter_name>
    <definition>The input_dn_max attribute provides the value of the maximum DN in
       the input image that is assigned a specific DN in the output image during companding.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>input_dn_min</name>
    <version_id>1.0</version_id>
    <local_identifier>input_dn_min</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Paul Geissler</submitter_name>
    <definition>The input_dn_min attribute provides the value of the minimum DN in
       the input image that is assigned a specific DN in the output image during companding.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>output_dn</name>
    <version_id>1.0</version_id>
    <local_identifier>output_dn</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Paul Geissler</submitter_name>
    <definition>The output_dn attribute provides the value of the DN in the output image 
       that is assigned to a given range of DN in the input image during companding.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>companding_state</name>
    <version_id>1.0</version_id>
    <local_identifier>companding_state</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The companding_state attribute specifies whether the data is or has had its bit
      depth reduced, for example conversion from 12 to 8 bits via a lookup
      table or bit scaling. Valid values: None - values have not been companded.
      Companded - values are currently companded. Expanded - values have been companded but are now 
      expanded back to original size.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>None</value>
        <value_meaning>values have not been companded</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Companded</value>
        <value_meaning>values are currently companded</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Expanded</value>
        <value_meaning>values have been companded but are now expanded back to original size</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>crosstrack_summing</name>
    <version_id>1.1</version_id>
    <local_identifier>crosstrack_summing</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The crosstrack_summing attribute provides the number of detector pixel values in the
      crosstrack direction that have been averaged to produce the final output pixel.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>1</minimum_value>
      <unit_of_measure_type>Units_of_Misc</unit_of_measure_type>
      <specified_unit_id>pixel</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>current_value</name>
    <version_id>1.0</version_id>
    <local_identifier>current_value</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The current_value attribute provides provides the current, in the specified units, of an 
      imaging instrument or some part of the imaging instrument.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Current</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>decomposition_stages</name>
    <version_id>1.1</version_id>
    <local_identifier>decomposition_stages</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition> The decomposition_stages attribute identifies the number of stages of decomposition.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>deferred_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>deferred_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The deferred_flag attribute specifies whether compression was done at the time of image 
      acquisition, or was deferred until later (typically at downlink time). </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>detector_to_image_rotation</name>
    <version_id>1.0</version_id>
    <local_identifier>detector_to_image_rotation</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The detector_to_image_rotation attribute specifies the clockwise rotation, in
      degrees, that was applied to an image along its optical path through an instrument, from
      detector to final image orientation. Note that if both this attribute and detector_to_image_flip 
      exist, the flip is assumed to have happened before the rotation.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0.0</minimum_value>
      <maximum_value>360.0</maximum_value>
      <unit_of_measure_type>Units_of_Angle</unit_of_measure_type>
      <specified_unit_id>deg</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>detector_to_image_flip</name>
    <version_id>1.0</version_id>
    <local_identifier>detector_to_image_flip</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The detector_to_image_flip attribute indicates whether and how the image was 
      flipped (mirror image) along its optical path through an instrument, from detector to 
      final image orientation. "Horizontal" means a left-to-right flip, while "Vertical" 
      means a top-to-bottom-flip. Note that if both this attribute and detector_to_image_rotation 
      exist, the flip is assumed to have happened before the rotation.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Horizontal</value>
        <value_meaning>Horizontal means a left-to-right flip</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Vertical</value>
        <value_meaning>Vertical means a top-to-bottom-flip</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>None</value>
        <value_meaning>None, meaning no flip applied, is optionally added for completeness. Otherwise this 
          attribute can simply not be included.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>device_id</name>
    <version_id>1.0</version_id>
    <local_identifier>device_id</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The device_id attribute supplies the identifier of an imaging instrument, 
      an imaging instrument device, or some point on the instrument or device.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>device_name</name>
    <version_id>1.0</version_id>
    <local_identifier>device_name</local_identifier>
    <nillable_flag>true</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The device_name attribute supplies the formal
      name for an imaging instrument, an imaging instrument device, or some point on the instrument or device.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>device_state</name>
    <version_id>1.0</version_id>
    <local_identifier>device_state</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The device_state attribute indicates the state of a sensor or other device associated with the imaging instrument. 
      These states are interpreted in an instrument-specific way.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>download_priority</name>
    <version_id>1.0</version_id>
    <local_identifier>download_priority</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The download_priority attribute specifies which data to downlink/transmit, based on order of importance. 
      The ranking and meaning of specific values will vary depending on the mission, and should be defined in the
      mission software interface specification (SIS).</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>downtrack_summing</name>
    <version_id>1.1</version_id>
    <local_identifier>downtrack_summing</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The downtrack_summing attribute provides the number of detector pixel values in the
      downtrack direction that have been averaged to produce the final output pixel.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>1</minimum_value>
      <unit_of_measure_type>Units_of_Misc</unit_of_measure_type>
      <specified_unit_id>pixel</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>early_image_return</name>
    <version_id>1.0</version_id>
    <local_identifier>early_image_return</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Indicates is there was a deferral of on-board post-processing of an image. For MSL, returns the 
      image early to an onboard client. Early processing includes rotation, bad pixels, flat field, early scaling, 
      and camera model production.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>early_scaling</name>
    <version_id>1.0</version_id>
    <local_identifier>early_scaling</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>If true, indicates that the companding was or should be done "early" in the onboard 
      processing chain, for instruments where there is an option. For MSL, early processing is where the image 
      is prepared for use by any client, including those on board, such as rotation, bad pixels, flat field, 
      early scaling, and camera model production. Contrast that with late processing, which includes 
      compression and telemetry generation, and processing for thumbnails, subframes, histograms, 
      and row/column sums.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>effective_wavelength</name>
    <version_id>1.0</version_id>
    <local_identifier>effective_wavelength</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Defines the weighted average of the system response and solar spectrum.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Length</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>encoded_display_gamma</name>
    <version_id>1.0</version_id>
    <local_identifier>encoded_display_gamma</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Defines the gamma value encoded in this image. 
      Gamma correction is used to nonlinearly compress the intensities in an 
      image, and most display systems assume that images are encoded with an 
      sRGB gamma. Note that this is a string value because the most common 
      gamma correction ("sRGB") is not precisely expressible as a gamma 
      exponent. A numeric value indicates a gamma exponent.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>erase_count</name>
    <version_id>1.1</version_id>
    <local_identifier>erase_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The erase_count specifies the number of times a detector has been or will be flushed
      of data in raw counts, dependent on the parent class for the attribute.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>error_pixel_count</name>
    <version_id>1.0</version_id>
    <local_identifier>error_pixel_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition> The error_pixel_count attribute specifies the number of pixels that are outside 
      a valid DN range, after all decompression and post decompression processing has been completed. </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>exposure_count</name>
    <version_id>1.1</version_id>
    <local_identifier>exposure_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The exposure count attribute provides the number of exposures taken during a certain interval,
      such as the duration of one command.  For example, this may include the number of exposures 
      needed by an autoexpose algorithm.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>exposure_duration</name>
    <version_id>1.0</version_id>
    <local_identifier>exposure_duration</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The exposure_duration attribute provides the amount of time the
      instrument sensor was gathering light from the scene, such as between
      opening and closing of a shutter, or between flushing and readout of a CCD.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_Time</unit_of_measure_type>
      <specified_unit_id>ms</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>exposure_duration_count</name>
    <version_id>1.1</version_id>
    <local_identifier>exposure_duration_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The exposure_duration_count attribute specifies
      the value, in raw counts, for the amount of time the instrument
      sensor was gathering light from the scene, such as between
      opening and closing of a shutter, or between flushing and
      readout of a CCD. This is the raw count either commanded or
      taken directly from telemetry as reported by the spacecraft.
      This attribute is the same as the exposure_duration but in DN
      counts instead of time, and the translation of
      exposure_duration_count to exposure_duration will differ by
      mission.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>exposure_duration_threshold_count</name>
    <version_id>1.0</version_id>
    <local_identifier>exposure_duration_threshold_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The exposure_duration_threshold specifies the exposure time threshold in raw counts, 
      when shutter_subtraction_mode = 'Conditional'.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>exposure_scale_factor</name>
    <version_id>1.0</version_id>
    <local_identifier>exposure_scale_factor</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies a multiplier to the base exposure time. The base exposure time is either 
      user-commanded or is read from the onboard exposure time table. The resulting number is used by the 
      cameras as the actual commanded exposure time. This scale factor is commonly used during multi-spectral 
      imaging, when the base exposure time is known for one filter and exposure_scale_factor is used to scale 
      the exposure time to levels appropriate for the other filters.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>exposure_table</name>
    <version_id>1.0</version_id>
    <local_identifier>exposure_table</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Identifies the exposure table to be used, or that was used. The exposure table 
      provides the seed exposure value to use for each camera for the autoexposure algorithm.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>exposure_coadd_count</name>
    <version_id>1.0</version_id>
    <local_identifier>exposure_coadd_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the total number of exposures summed (co-added) together to obtain 
      the final image. Co-adding increases the signal-to-noise ratio.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_characters>0</minimum_characters>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>exposure_readout_count</name>
    <version_id>1.0</version_id>
    <local_identifier>exposure_readout_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the number of times an exposure, or part of an exposure, 
      has been read from the camera. Multiple readouts could be due to tiling of 
      the image, among other reasons.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_characters>0</minimum_characters>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>exposure_table_update_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>exposure_table_update_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>If true, specifies whether or not to update the autoexposure table based on the results of this exposure.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>exposure_type</name>
    <version_id>1.0</version_id>
    <local_identifier>exposure_type</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The exposure_type attribute indicates the exposure setting on a camera. Valid values: 
      'Manual' - manual exposure setting, 'Auto' - autoexposure is applied by the camera, 'Test' - test 
      exposure setting telling the camera to return a fixed-pattern test image.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Manual</value>
        <value_meaning>Manual exposure setting.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Manual Last</value>
        <value_meaning>Use same exposure as the prior image.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Auto</value>
        <value_meaning>Autoexposure is applied by the camera.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Auto Last</value>
        <value_meaning>Autoexposure using prior image as a seed.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Test</value>
        <value_meaning>Test exposure setting telling the camera to return a fixed-pattern test image.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>None</value>
        <value_meaning>No exposure requested.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>exposure_time_delta</name>
    <version_id>1.0</version_id>
    <local_identifier>exposure_time_delta</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the change in exposure time for this exposure compared to the previous. 
      Should be 0 for the first item in the list.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_Time</unit_of_measure_type>
      <specified_unit_id>ms</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>filter_id</name>
    <version_id>0.1</version_id>
    <local_identifier>filter_id</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition> The filter_id attribute provides a short string identifier for an instrument filter
      through which an image or measurement was acquired or which is associated with a given
      instrument mode. </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <minimum_characters>1</minimum_characters>
      <maximum_characters>16</maximum_characters>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>filter_name</name>
    <version_id>1.0</version_id>
    <local_identifier>filter_name</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The filter_name attribute provides the name, described in the mission documentation, 
      of the optical filter through which an image or measurement was acquired.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>UTF8_Short_String_Preserved</value_data_type>
      <minimum_characters>1</minimum_characters>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>filter_number</name>
    <version_id>1.0</version_id>
    <local_identifier>filter_number</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The filter_number attribute provides the numeric identifier of an instrument filter
      through which an image or measurement was acquired or which is associated with a given
      instrument mode.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>filter_position_count</name>
    <version_id>1.0</version_id>
    <local_identifier>filter_position_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The filter position count is the position in motor counts of the filter wheel motor.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>filter_window_line</name>
    <version_id>1.0</version_id>
    <local_identifier>filter_window_line</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The size in pixels of the window used for filtering in the 
      line dimension. If the window varies across the image, this could contain 
      the average window or initial window, as needed by the specific algorithm.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>filter_window_sample</name>
    <version_id>1.0</version_id>
    <local_identifier>filter_window_sample</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The size in pixels of the window used for filtering in the 
      sample dimension. If the window varies across the image, this could contain 
      the average window or initial window, as needed by the specific algorithm.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>first_line</name>
    <version_id>1.0</version_id>
    <local_identifier>first_line</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth Rye</submitter_name>
    <definition>The first_line attribute indicates the line within a source image that corresponds
      to the first line in a sub-image.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>1</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>first_sample</name>
    <version_id>1.0</version_id>
    <local_identifier>first_sample</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth Rye</submitter_name>
    <definition> The first_sample attribute indicates the sample within a source image that
      corresponds to the first sample in a sub-image. </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>1</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>focus_merge_blending_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>focus_merge_blending_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition>The focus_merge_blending_flag attribute indicates whether intra-stack image 
      blending has been performed during a focus merge operation. A value of 'false' means images 
      were merged without blending.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>focus_merge_registration_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>focus_merge_registration_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition>The focus_merge_registration_flag attribute indicates whether intra-stack image 
      registration has been performed during a focus merge operation. A value of 'true' indicates 
      that intra-stack image registration has been performed during the focus merge operation, while
      'false' indicates that images have been merged without translation.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>focus_mode</name>
    <version_id>1.0</version_id>
    <local_identifier>focus_mode</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition>The focus_mode attribute specifies the type of focus command, for example:
      Autofocus, Manual, ZStack, or Relative (focus adjustment based on a previous autofocus).</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <!--
   comments: this will be free text, some examples below

   ZSTACK - Images were acquired at multiple autofocus positions.
   RELATIVE - A focus adjustment was made relative to a previous position.
   
   (SuperCam)
   NO_FOCUS - Doesn't move focus
   MANUAL - Positions focus based on other parameters (focus_distance for SuperCam)
   BASELINE - Uses SuperCam laser to find optimal focus position
   AF_OFFSET - Applies offset from last autofocus solution
   
   (Mastcam-Z and SHERLOC)
   AUTOFOCUS - Autofocus mode
   EARLY_TERMINATION - Stops the autofocus before the full number of steps has been reached if a peak is detected
   THRESHOLD - Causes the focus to not be changed if a test image is within a certain percentage of the last image taken with autofocus (5% for Mastcam-Z and SHERLOC)
   EARLY_TERMINATION_AND_THRESHOLD - combination of both
-->
    </DD_Value_Domain>
  </DD_Attribute>
  <DD_Attribute>
    <name>focus_position</name>
    <version_id>1.0</version_id>
    <local_identifier>focus_position</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The focus_position attribute defines, in a camera-specific way, the
      focus metric that should be used for geometric processing of the data
      (e.g. for creating camera models). This will often be the focus motor
      count.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>focus_position_count</name>
    <version_id>1.0</version_id>
    <local_identifier>focus_position_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition>The focus_position_count attribute specifies a commanded focus, or the initial focus 
      position used by the autofocus algorithm.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>focus_stack_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>focus_stack_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition> The focus_stack_flag attribute indicates whether or not focus stack image products 
      were created during the autofocus imaging step.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>focus_initialization_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>focus_initialization_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies whether the instrument focus mechanism should be (or was) initialized before use.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>focal_length</name>
    <version_id>1.0</version_id>
    <local_identifier>focal_length</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Defines the focal length of the optics used in acquiring the image.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Length</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>f_number</name>
    <version_id>1.0</version_id>
    <local_identifier>f_number</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Defines the f/number for the optics used in acquiring the image.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Length</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>frame_count</name>
    <version_id>1.0</version_id>
    <local_identifier>frame_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition> The frame_count attribute indicates the total number of image frames acquired,
      such as for a video or focus stack observation.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>frame_id</name>
    <version_id>1.0</version_id>
    <local_identifier>frame_id</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The frame_id attribute specifies an identification for a particular instrument measurement frame. A frame 
      consists of a sequence of measurements made over a specified time interval, and may include measurements from different 
      instrument modes. These sequences repeat from cycle to cycle and sometimes within a cycle.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>frame_index</name>
    <version_id>1.1</version_id>
    <local_identifier>frame_index</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>When in a Video class, the frame_index attribute specifies the 
      sequence number of this frame in the context of the entire video, 
      i.e. the first frame of the video would be index 1, up to frame_count.
      
      When in a Focus_Stack class, the frame_index attribute specifies the 
      index of the first frame used to make up the focus stack.
      
      M2020 requested to allow negative values which has been seen as returned values during the mission.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>frame_interval</name>
    <version_id>1.0</version_id>
    <local_identifier>frame_interval</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The frame_interval attribute defines the time between the start of successive frames in a video product.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_Time</unit_of_measure_type>
      <specified_unit_id>ms</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>frame_rate</name>
    <version_id>1.0</version_id>
    <local_identifier>frame_rate</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition> The frame_rate attribute specifies the calculated frame rate for video products.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Frame_Rate</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>frame_type_name</name>
    <version_id>1.1</version_id>
    <local_identifier>frame_type_name</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition> The frame_type_name attribute specifies whether the image was commanded as part of a
      stereo pair or as a single left or right monoscopic image. If frame_type = 'Stereo', a left and a
      right image should be present.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Mono</value>
        <value_meaning> image was commanded as a single left or right monoscopic image
        </value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Stereo</value>
        <value_meaning> image was commanded as part of a stereo pair </value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>focus_distance</name>
    <version_id>1.0</version_id>
    <local_identifier>focus_distance</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The nominal focus distance for the instrument (e.g. in meters or mm). 
      This is often the commanded value, or autofocus seed value, but can also be used 
      to indicate a nominal distance where the connotation of "best" is not appropriate 
      (see best_focus_distance).</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Length</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>frame_source_id</name>
    <version_id>1.0</version_id>
    <local_identifier>frame_source_id</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>B. Deen</submitter_name>
    <definition>frame_source_id is a mission-specific ID string identifying the source of the video. For 
      example, for the CADRE rover's SACA instrument, it would be a camera ID.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>gain_count</name>
    <version_id>1.0</version_id>
    <local_identifier>gain_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>T. Hare</submitter_name>
    <definition>Raw counts for gain.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>gain_db</name>
    <version_id>1.0</version_id>
    <local_identifier>gain_db</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>T. Hare</submitter_name>
    <definition>Gain is the amount of amplification that is applied to a pixel by the A/D
      converter. For example, an increase in gain can result in a brighter image but also an
      increase in noise.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>gain_number</name>
    <version_id>1.0</version_id>
    <local_identifier>gain_number</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The gain_number attribute specifies the gain value used in the analog to digital 
      conversion. The gain value is a multiplicative factor used in the analog to digital conversion.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>gain_mode_id</name>
    <version_id>1.0</version_id>
    <local_identifier>gain_mode_id</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The gain_mode_id attribute identifies the gain state of an instrument. Gain is a
      constant value which is multiplied with an instrument's output signal to increase or decrease
      the level of that output. These modes may vary by mission so the permissible values should be set 
      by the mission dictionaries.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
 
  <DD_Attribute>
    <name>gop_frame_count</name>
    <version_id>1.0</version_id>
    <local_identifier>gop_frame_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition>The gop_frame_count attribute indicates, for video products compressed into a 
      group of images (Group Of Pictures or GOP), the number of images in a GOP. This is not necessarily
      the total number of frames in the observation (see frame_count), as the observation may
      consist of a number of GOPs.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>gop_frame_index</name>
    <version_id>1.0</version_id>
    <local_identifier>gop_frame_index</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition>Videos can be broken into Groups of Pictures (GOP)s, which group a 
      number of frames together. The gop_frame_index attribute specifies the frame index 
      within a Group Of Pictures (GOP) starting at 1. This is distinct from frame_index, 
      which is the index into the video as a whole.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>gop_start_index</name>
    <version_id>1.0</version_id>
    <local_identifier>gop_start_index</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Videos can be broken into Groups of Pictures (GOP)s, which group a number 
      of frames together. The gop_start_index attribute specifies the index of the first 
      frame of the GOP (starting at 1). 
      Thus, frame_index = gop_start_index + gop_frame_index - 1.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
 
   <DD_Attribute>
    <name>hdr_acquisition_mode</name>
    <version_id>1.0</version_id>
    <local_identifier>hdr_acquisition_mode</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies how the HDR frames were acquired.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Single</value>
        <value_meaning>Single exposure.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Multiframe</value>
        <value_meaning>HDR is processed using several separately-acquired images.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Piecewise</value>
        <value_meaning>HDR is processed onboard the camera.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>None</value>
        <value_meaning>No HDR processing.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>hdr_frame_count</name>
    <version_id>1.0</version_id>
    <local_identifier>hdr_frame_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the number of frames that go into the HDR product.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>hdr_clipping_threshold</name>
    <version_id>1.0</version_id>
    <local_identifier>hdr_clipping_threshold</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the threshold for pixel clipping.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

   <DD_Attribute>
    <name>height_pixels</name>
    <version_id>1.1</version_id>
    <local_identifier>height_pixels</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The height_pixels attribute provides the vertical dimension, in pixels.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_Misc</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>icer_quality</name>
    <version_id>1.0</version_id>
    <local_identifier>icer_quality</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>For ICER, the quality is the "minloss" parameter, which specifies the minimum 
      number of bit planes that will not be encoded in each subband. Note that ICER may stop 
      due a byte quota before minloss is achieved, so the actual quality may be less than specified. 
      Unlike JPEG, a lower number means higher quality.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <maximum_value>18</maximum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>id</name>
    <version_id>1.0</version_id>
    <local_identifier>id</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth Rye</submitter_name>
    <definition>The id attribute supplies a short name (identifier) 
      for the associated value in a group of related values. 
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>illuminant</name>
    <version_id>1.0</version_id>
    <local_identifier>illuminant</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Defines the illuminant that was used in order to process this image. 
      The valid values are open-ended but examples of valid values include: None, D65, 3000K, 5000K.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>illumination_mode</name>
    <version_id>1.0</version_id>
    <local_identifier>illumination_mode</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>illumination_mode describes what mode the illumination device is in. It 
      could be used to indicate a common name for a particular configuration of activated 
      lights, where there are many such devices. Current examples used include:
      Red, Green, Blue, White, UV, SLI-A Dense, SLI-B Sparse, Other, Off</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>illumination_wavelength</name>
    <version_id>1.0</version_id>
    <local_identifier>illumination_wavelength</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The illumination_wavelength attribute provides the wavelength of an LED that was used to illuminate this image.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Length</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>illumination_state</name>
    <version_id>1.0</version_id>
    <local_identifier>illumination_state</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The illumination_state attribute provides if the LED was On or Off.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>On</value>
        <value_meaning>Illumination state (LED) is On.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Off</value>
        <value_meaning>Illumination state (LED) is Off.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>image_corrupt_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>image_corrupt_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>T. Hare</submitter_name>
    <definition>Indicates whether or not this image was corrupted after it was acquired (i.e. it was
      corrupted somewhere downstream not part of acquisition). Valid values are "true",
      "false", "1" (one, as true), and "0" (zero, as false).</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>inband_fsun</name>
    <version_id>1.0</version_id>
    <local_identifier>inband_fsun</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>This is the average solar flux at the top of the planetary atmosphere (or surface 
      if there is no atmosphere) weighted by the system spectral response of the camera for the 
      image in question. "Inband" means it is limited to the part of the spectrum that is in 
      the passband of the camera, and "fsun" is mathematically written as F subscript sun. The 
      value is in units of spectral radiance, and is calculated by dividing the weighted in-band 
      integrated radiance of the sun by the bandpass of the camera (taking into account filter, 
      zoom, and any other relevant settings).
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Spectral_Radiance</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>interframe_delay</name>
    <version_id>1.1</version_id>
    <local_identifier>interframe_delay</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The interframe_delay attribute provides the time between the end of one frame and the 
      beginning of the next frame in a video product.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_Time</unit_of_measure_type>
      <specified_unit_id>ms</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>instrument_idle_timeout</name>
    <version_id>1.0</version_id>
    <local_identifier>instrument_idle_timeout</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the amount of time in seconds the instrument may be idle before powering off the instrument.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_Time</unit_of_measure_type>
      <specified_unit_id>s</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>iof_conversion_coefficient</name>
    <version_id>1.0</version_id>
    <local_identifier>iof_conversion_coefficient</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The iof_conversion_coefficient is a direct conversion factor from units of 
    radiance to units of reflectance, calculated by plotting the observed reflected radiance 
    of a calibration target versus modeled reflectance values.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
 
  <DD_Attribute>
    <name>iof_conversion_coefficient_std</name>
    <version_id>1.0</version_id>
    <local_identifier>iof_conversion_coefficient_std</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>1-sigma standard deviation for the radiance factor (IOF) conversion coefficient.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>iof_conversion_correction</name>
    <version_id>1.0</version_id>
    <local_identifier>iof_conversion_correction</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>The iof_conversion_correction attribute is the correction factor applied to I/F. 
      Can be used to account for differences in time of day between the calibration target and 
      image acquisitions. For Mars2020 Mastcam-Z, this factor accounts for the differences in 
      time of day between calibration target and image acquisitions and is only used when the 
      factor is between 0.9 and 1.1.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>iso_number</name>
    <version_id>1.0</version_id>
    <local_identifier>iso_number</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the ISO level set for the camera. ISO Sensitivity is a 
      standard set by the International Organization for Standardization (ISO) that 
      represents sensitivity to light as a numerical value as it pertains to either 
      film or a digital sensor. A lower ISO value means less sensitivity to light, 
      while a higher ISO means more sensitivity. The most common ISO values are 100, 
      200, 400, 800, 1600, and 3000. The lowest ISO setting or base ISO is typically 
      100, although some cameras go as low as 50 or even 25. Some older cameras will 
      start at ISO 200. This should generally conform to ISO 12232:2019</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>iso_mode_id</name>
    <version_id>1.0</version_id>
    <local_identifier>iso_mode_id</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The iso_mode_id attribute is a mission specific definition of how
      the ISO value is actually used. For example, this could be set as "ISO 12232:2019" 
      if the iso_number attribute follows the ISO standard 12232:2019, otherwise how it
      used should be defined here.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>jpeg_parameter</name>
    <version_id>1.0</version_id>
    <local_identifier>jpeg_parameter</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The jpeg_parameter attribute is a JPEG specific variable which
      specifies on-board compression determination by image quality or by compression factor, based
      on a selected on-board compression mode. </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>jpeg_quality</name>
    <version_id>1.1</version_id>
    <local_identifier>jpeg_quality</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The jpeg_quality attribute is a JPEG specific variable which
      identifies the resultant or targeted image quality index for on-board data compression.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <maximum_value>100</maximum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>lines</name>
    <version_id>1.0</version_id>
    <local_identifier>lines</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth Rye</submitter_name>
    <definition>The lines attribute indicates the total number of
      data instances along the vertical axis of an image or sub-image.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>1</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>line_fov</name>
    <version_id>1.0</version_id>
    <local_identifier>line_fov</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The line_fov attribute specifies the angular measure of the field of
      view of an imaged scene, as measured in the image line direction
      (generally vertical).</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0.0</minimum_value>
      <maximum_value>360.0</maximum_value>
      <unit_of_measure_type>Units_of_Angle</unit_of_measure_type>
      <specified_unit_id>deg</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>maximum_focus_distance</name>
    <version_id>1.0</version_id>
    <local_identifier>maximum_focus_distance</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition>The maximum_focus_distance attribute specifies the estimated distance to the 
      farthest pixel with less than 1 pixel of gaussian blur.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Length</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>minimum_focus_distance</name>
    <version_id>1.0</version_id>
    <local_identifier>minimum_focus_distance</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition>The minimum_focus_distance attribute specifies the estimated distance to the 
      nearest pixel with less than 1 pixel of gaussian blur.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Length</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>missing_pixel_count</name>
    <version_id>1.0</version_id>
    <local_identifier>missing_pixel_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition> The missing_pixel_count attribute identifies the total number of missing pixels
      defined by the image or image segment.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>max_filter_window_line</name>
    <version_id>1.0</version_id>
    <local_identifier>max_filter_window_line</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The maximum size in pixels of the window used for filtering in the 
      line dimension. If the window is constant across the image, filter_window_line 
      should be used instead.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>max_filter_window_sample</name>
    <version_id>1.0</version_id>
    <local_identifier>max_filter_window_sample</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The maximum size in pixels of the window used for filtering in the 
      sample dimension. If the window is constant across the image, filter_window_sample 
      should be used instead.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>min_filter_window_line</name>
    <version_id>1.0</version_id>
    <local_identifier>min_filter_window_line</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The minimum size in pixels of the window used for filtering in the 
      line dimension. If the window is constant across the image, filter_window_line 
      should be used instead.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>min_filter_window_sample</name>
    <version_id>1.0</version_id>
    <local_identifier>min_filter_window_sample</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The minimum size in pixels of the window used for filtering in the 
      sample dimension. If the window is constant across the image, filter_window_sample 
      should be used instead.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>motor_count</name>
    <version_id>1.1</version_id>
    <local_identifier>motor_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The motor_count attribute specifies the raw motor counts for the
      specified device, which indicates the position of the associated
      mechanism in a device-specific way.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>observation_number</name>
    <version_id>1.0</version_id>
    <local_identifier>observation_number</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Identifies which observation of many this data product pertains to.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>onboard_compression_class</name>
    <version_id>1.1</version_id>
    <local_identifier>onboard_compression_class</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The onboard_compression_class attribute
      identifies the type of on-board compression used for data
      storage and transmission. Note that the onboard_compression_type 
      identifies the specific compression algorithm used (for example, ICER), 
      whereas the onboard_compression_class gives a simple indicator of the type of 
      compression mode. Valid values: 'Lossless', 'Lossy', 'Uncompressed'.
      </definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Lossless</value>
        <value_meaning>Lossless compression means that after compression and decompression, 
          the data is the same (bit-for-bit) as the original.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Lossy</value>
        <value_meaning>Lossy compression means that the data after decompression differs in some way 
          from the data before compression.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Uncompressed</value>
        <value_meaning>Uncompressed data is also lossless, but use of the "Uncompressed" value indicates 
          that data was not compressed.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>onboard_compression_mode</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_compression_mode</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The onboard_compression_mode attribute identifies the method used for on-board compression, performed
      for the purpose of data storage and transmission. The value for this attributes represents the raw integer 
      value for compression, which is then translated to the full name captured by the onboard_compression_type attribute.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>onboard_compression_quality</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_compression_quality</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The onboard_compression_quality attribute is an indication of compression quality, 
      in the range of 0.0 to 1.0. Losslessly compressed or uncompressed data have a value of 1.0. 
      Other values are assigned in a manner specific to the compression mode,
      but with the property that a higher value means better quality.
      Although the values are not directly comparable across compression
      types, this facilitates comparison of compression quality across images
      independent of compression mode.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <maximum_value>1.0</maximum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>onboard_compression_rate</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_compression_rate</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The onboard_compression_rate attribute provides the average number of bits needed
      to represent a pixel for image that was compressed on-board for data storage and transmission.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>onboard_compression_ratio</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_compression_ratio</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The onboard_compression_ratio attribute provides the ratio of the size, in bytes, of the
      original uncompressed data object to its compressed form (original size / compressed size). 
      Onboard compression is performed for data storage and transmission.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0.0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>onboard_compression_type</name>
    <version_id>1.1</version_id>
    <local_identifier>onboard_compression_type</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The onboard_compression_type attribute identifies the type of on-board
      compression used for data storage and transmission. Valid Values: 'GZIP', 'ICER', 
      'H.264 Frame', 'LOCO', 'LZO', 'JPEG', 'JPEG Progressive', 'MSSS Lossless', 
      'Lossless', 'None',
      'StarPixel Lossless', 'StarPixel Flexible', and 'Wavelet'.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <minimum_characters>1</minimum_characters>
      <maximum_characters>255</maximum_characters>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>GZIP</value>
        <value_meaning>GNU Gzip lossless compression using Lempel-Ziv coding (LZ77)</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>H.264 Frame</value>
        <value_meaning>Frame extracted from a video encoded using the H.264 codec</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>ICER</value>
        <value_meaning>ICER Adaptive Variable-Length Coding (ICER)</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>ICT</value>
        <value_meaning>Integer Cosine Transform</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>LOCO</value>
        <value_meaning>Low-Complexity Lossless Compression</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>LZO</value>
        <value_meaning>Lempel-Ziv-Oberhumer, a type of lossless data compression focused on decompression speed.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>JPEG</value>
        <value_meaning>Joint Photographic Experts Group, an industry standard lossy compression algorithm.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>JPEG Progressive</value>
        <value_meaning>interlaced progressive JPEG format, in which data is compressed in multiple 
          passes of progressively higher detail.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>MSSS Lossless</value>
        <value_meaning>Lossless compression algorithm developed by Malin Space Science Systems.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Lossless</value>
        <value_meaning>Lossless compression method was used.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>None</value>
        <value_meaning>No on-board compression was used.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>StarPixel Flexible</value>
        <value_meaning>StarPixel Flexible is a lossy hardware enabled compression, for example used for both
           Hayabusa2 ONC and TIR instruments. for more: https://www.mdpi.com/1424-8220/15/10/24926/htm</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>StarPixel Lossless</value>
        <value_meaning>StarPixel Lossless is a lossless hardware enabled compression, for example used for both
           Hayabusa2 ONC and TIR instruments. for more: https://www.mdpi.com/1424-8220/15/10/24926/htm</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Wavelet</value>
        <value_meaning>Wavelet compression works by identifying repeating patterns in the content and representing them mathematically.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>onboard_compression_venue</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_compression_venue</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition> The onboard_compression_venue attribute specifies where the 
      onboard compression was performed.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <minimum_characters>1</minimum_characters>
      <maximum_characters>255</maximum_characters>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Hardware</value>
        <value_meaning>Compression was applied on the hardward platform</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Software</value>
        <value_meaning>Compression was applied in software</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>onboard_R_r</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_R_r</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the factor that has been multiplied by the R pixel value  
      after de-Bayering (demosaicking) takes place. This value is summed with the 
      multiplied G and B pixel values to produce the output Red value.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>onboard_R_g</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_R_g</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the factor that has been multiplied by the G pixel value  
      after de-Bayering (demosaicking) takes place. This value is summed with the 
      multiplied R and B pixel values to produce the output Red value.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>onboard_R_b</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_R_b</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the factor that has been multiplied by the B pixel value  
      after de-Bayering (demosaicking) takes place. This value is summed with the 
      multiplied R and G pixel values to produce the output Red value.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>onboard_B_r</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_B_r</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the factor that has been multiplied by the R pixel value  
      after de-Bayering (demosaicking) takes place. This value is summed with the 
      multiplied G and B pixel values to produce the output Blue value.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>onboard_B_g</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_B_g</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the factor that has been multiplied by the G pixel value  
      after de-Bayering (demosaicking) takes place. This value is summed with the 
      multiplied R and B pixel values to produce the output Blue value.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>  
  
  <DD_Attribute>
    <name>onboard_B_b</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_B_b</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the factor that has been multiplied by the B pixel value  
      after de-Bayering (demosaicking) takes place. This value is summed with the 
      multiplied R and G pixel values to produce the output Blue value.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>onboard_G_r</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_G_r</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the factor that has been multiplied by the R pixel value  
      after de-Bayering (demosaicking) takes place. This value is summed with the 
      multiplied G and B pixel values to produce the output Green value.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>onboard_G_g</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_G_g</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the factor that has been multiplied by the G pixel value  
      after de-Bayering (demosaicking) takes place. This value is summed with the 
      multiplied R and B pixel values to produce the output Green value.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>onboard_G_b</name>
    <version_id>1.0</version_id>
    <local_identifier>onboard_G_b</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the factor that has been multiplied by the B pixel value  
      after de-Bayering (demosaicking) takes place. This value is summed with the 
      multiplied R and G pixel values to produce the output Green value.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>original_sample_bits</name>
    <version_id>1.0</version_id>
    <local_identifier>original_sample_bits</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The original_sample_bits specifies the number of bits actually acquired by the 
      sensor, before companding or other manipulations. Contrast this with img:sample_bits, 
      which describes the current state of the image. Generally in a companded image, sample_bits 
      will be less than original_sample_bits, while in a decompanded image they would be equal.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>parameter_table_id</name>
    <version_id>1.0</version_id>
    <local_identifier>parameter_table_id</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies which table of parameters to use, or were used. Tables are defined in a mission- and instrument-specific manner.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>pointing_model_name</name>
    <version_id>1.0</version_id>
    <local_identifier>pointing_model_name</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The pointing_model_name attribute specifies which of several "pointing models" were
      used to transform the camera model based on updated pointing information. These updates are
      typically derived from mosaic seam corrections. This attribute and the associated
      Pointing_Model_Index classes define what the updated pointing information is, providing enough
      information to re-create the camera model from calibration data. If present, this attribute
      overrides the default pointing based on telemetry. The special value "NONE" shall be
      interpreted the same as if the attribute is absent (i.e. the default pointing model should be
      used). New model names can be created at any time; the models themselves should be described
      in a mission-specific ancillary file. See also the geom:solution_id attribute within the
      geom:Camera_Model_Parameters class.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>pointing_model_solution_id</name>
    <version_id>1.0</version_id>
    <local_identifier>pointing_model_solution_id</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The pointing_model_solution_id attribute specifies the identifier of the pointing
      correction solution used to derive the model specified via the enclosing
      Pointing_Correction class. This identifier should also appear in the pointing
      correction file referenced by the Data_Correction_File. If there is only one identifier in the
      correction file, then pointing_model_solution_id may be omitted. The
      pointing_model_solution_id attribute may be reused in the context of pointing corrections,
      although uniqueness is recommended. The pointing correction solution ID namespace is separate
      from the coordinate system namespace.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>pre_video_delay</name>
    <version_id>1.0</version_id>
    <local_identifier>pre_video_delay</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>B. Deen</submitter_name>
    <definition>pre_video_delay indicates the delay, generally in milliseconds or seconds, before the video starts.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_Time</unit_of_measure_type>
      <specified_unit_id>ms</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>processing_algorithm</name>
    <version_id>1.0</version_id>
    <local_identifier>processing_algorithm</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The processing_algorithm attribute specifies the name of the algorithm 
      used to perform the processing specified by the enclosing class. Algorithm 
      names should be defined in the project documentation, and/or in the enclosing 
      class definition.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>processing_venue</name>
    <version_id>1.0</version_id>
    <local_identifier>processing_venue</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The processing_venue attribute specifies where the processing described by the 
      parent class was performed.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Onboard Hardware</value>
        <value_meaning>Processing was done by hardware onboard the spacecraft, 
          such as inside the camera.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Onboard Software</value>
        <value_meaning>processing was done by flight software onboard the spacecraft.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Onboard Both</value>
        <value_meaning>Processing was done onboard by both hardware and software.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Onboard</value>
        <value_meaning>Processing was done onboard (hardware or software is unspecified).</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Ground</value>
        <value_meaning>Processing was done on the ground. </value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Ground Refined</value>
        <value_meaning>Onboard processing was reversed and new ground processing was applied. 
          For example, removing a synthetic flat field from onboard processing and replacing it with 
          a true flat field.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>None</value>
        <value_meaning>Processing has not been done.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>product_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>product_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Indicates whether the product in the enclosing class was requested for downlink
      (when in Commanded_Parameters), or whether this product actually is the type in question
      (when in Imaging). For example, Commanded_Parameters.Histogram.product_flag = true indicates 
      that a histogram was requested as part of the command that created the data product being 
      labeled, while Imaging.Histogram.product_flag = true indicates that this data product itself 
      is (or contains) a histogram.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
    
  <DD_Attribute>
    <name>progressive_stage</name>
    <version_id>1.0</version_id>
    <local_identifier>progressive_stage</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>In cases where each pass of a progressive JPEG is downlinked separately,
      the progressive_stage attribute indicates the highest pass number contained in
      this image, which indicates the available level of detail.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>mask_type</name>
    <version_id>1.1</version_id>
    <local_identifier>mask_type</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>This identifies the type of mask file. Two enumerations are given, but
    these can be expanded if needed.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>image</value>
        <value_meaning>Most masks are of "image" type, this means it is an image of the same 
        size as the current image containing mask information at each pixel.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>description</value>
        <value_meaning>A mask_type listed as "description" indicates that the file, e.g., a
        text or xml based file, describes the mask in some other way depending on the 
        processing_algorithm.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>horizon_mask_elevation</name>
    <version_id>1.0</version_id>
    <local_identifier>horizon_mask_elevation</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the elevation above which the image is masked off.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>-90.0</minimum_value>
      <maximum_value>90.0</maximum_value>
      <unit_of_measure_type>Units_of_Angle</unit_of_measure_type>
      <specified_unit_id>deg</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>mask_transparent_value</name>
    <version_id>1.0</version_id>
    <local_identifier>mask_transparent_value</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the pixel value in the mask that will represent transparent (or NoData/null) for
      the characterized image. This is normally defined as 0 in the mask layer. Once defined, any other value
      in the mask represents opaque or translucent (in other words, valid) in the characterized image.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>pixel_readout_time</name>
    <version_id>1.0</version_id>
    <local_identifier>pixel_readout_time</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>R. Deen</submitter_name>
    <definition>Specifies the time between readout of each adjacent pixel. 
      It is the time from the start of one pixel to the start of the next. 
      </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_Time</unit_of_measure_type>
      <specified_unit_id>ms</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>line_readout_time</name>
    <version_id>1.0</version_id>
    <local_identifier>line_readout_time</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>R. Deen</submitter_name>
    <definition>Specifies the time between readout of the same pixel on 
      adjacent lines. It it the time from the start of one pixel to the 
      start of the same pixel on the following line.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_Time</unit_of_measure_type>
      <specified_unit_id>ms</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>frame_readout_time</name>
    <version_id>1.0</version_id>
    <local_identifier>frame_readout_time</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>R. Deen</submitter_name>
    <definition>Specifies the time it takes for readout of the entire camera 
      frame. This is the time from readout of the first pixel to the readout of 
      the last pixel and does not include exposure time or other delays.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_Time</unit_of_measure_type>
      <specified_unit_id>ms</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>r0</name>
    <version_id>1.0</version_id>
    <local_identifier>r0</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The r0 attribute specifies the 0th-order polynomial coefficient of the function
      used to describe an algorithmic flat field. See Radial_Flat_Field_Function for the formula.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>r1</name>
    <version_id>1.0</version_id>
    <local_identifier>r1</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The r1 attribute specifies the 1st-order polynomial coefficient of the function
      used to describe an algorithmic flat field. See Radial_Flat_Field_Function for the formula.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>r2</name>
    <version_id>1.0</version_id>
    <local_identifier>r2</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The r2 attribute specifies the 2nd-order polynomial coefficient of the function
      used to describe an algorithmic flat field. See Radial_Flat_Field_Function for the formula.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>r3</name>
    <version_id>1.0</version_id>
    <local_identifier>r3</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The r3 attribute specifies specifies the 3rd-order polynomial coefficient of the function
      used to describe an algorithmic flat field. See Radial_Flat_Field_Function for the formula.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>radiometric_zenith_scaling_factor</name>
    <version_id>1.0</version_id>
    <local_identifier>radiometric_zenith_scaling_factor</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Defines the scaling factor used for Scaled Radiance or Scaled Spectral Radiance.
      Scaled radiance is created by dividing radiance by this factor, which scales the radiance to what 
      it would be if the sun were at the zenith with a clear atmosphere.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>radiometric_type</name>
    <version_id>1.2</version_id>
    <local_identifier>radiometric_type</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The radiometric_type defines the specific type of radiance measurement. 
      Possible values include "Radiance", "Radiance Factor", "Spectral Radiance", 
      "Scaled Spectral Radiance", and "No CFA". Note: There are many more possible 
      values, and this definition can be updated to include more examples over time.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Radiance Factor</value>
        <value_meaning>Radiance Factor also known as I/F or IOF. Some images are scaled to absolute 
          radiance units, then divided by the absolute radiance of the Sun at the top of the planet's
          atmosphere to generate radiance factor, or "I over F" values, where I is the radiance from
          the surface (scene) and F is the radiance from the Sun at the top of the planet's atmosphere. 
        </value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Spectral Radiance</value>
        <value_meaning>Radiometric correction results are expressed in units of Spectral 
        Radiance (generally W/m^2/sr/nm).</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Scaled Spectral Radiance</value>
        <value_meaning>Radiometric correction results are expressed as Spectral Radiance, 
        but have subsequently been scaled in some way to compensate for photometric effects 
        (for example, adjusting the brightness as if the sun was at zenith or correcting for 
        the impact of atmospheric opacity (tau)).</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>No CFA</value>
        <value_meaning>Indicates the image is not and has never been CFA encoded. In
          this case, Color_Filter_Array would simply not be present in
          the label. This value is present in case it needs to be explicitly
          stated that there is no CFA.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>raw_count</name>
    <version_id>1.0</version_id>
    <local_identifier>raw_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The raw_count attribute provides the value of some parameter measured by a
      spacecraft or instrument sensor in the raw units reported by that sensor. A separate attribute
      should be included alongside the raw_count that translates this value into the appropriate
      engineering units. i.e. temperature_value in degrees C or voltage_value in Volts</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>readout_rate</name>
    <version_id>1.0</version_id>
    <local_identifier>readout_rate</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition>The readout_rate attribute specifies the clock rate at which values are read from the sensor.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Frequency</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>readout_direction_pixel</name>
    <version_id>1.0</version_id>
    <local_identifier>readout_direction_pixel</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>R. Deen</submitter_name>
    <definition>Specifies the direction in which adjacent pixels are 
      read from a camera. Directions are relative to the image as displayed 
      (thus there may be an interaction with disp:Display_Direction).</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Left to Right</value>
        <value_meaning>pixels are read left to right.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Right to Left</value>
        <value_meaning>pixels are read right to left.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Top to Bottom</value>
        <value_meaning>pixels are read top to bottom.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Bottom to Top</value>
        <value_meaning>pixels are read bottom to top.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>readout_direction_line</name>
    <version_id>1.0</version_id>
    <local_identifier>readout_direction_line</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>R. Deen</submitter_name>
    <definition>Specifies the direction in which lines are read from a 
      camera. Directions are relative to the image as displayed 
      (thus there may be an interaction with 
      disp:Display_Direction).</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Left to Right</value>
        <value_meaning>pixels are read left to right.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Right to Left</value>
        <value_meaning>pixels are read right to left.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Top to Bottom</value>
        <value_meaning>pixels are read top to bottom.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Bottom to Top</value>
        <value_meaning>pixels are read bottom to top.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>responsivity_factor_b</name>
    <version_id>1.0</version_id>
    <local_identifier>responsivity_factor_b</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the factor that has been applied to the B cell  
      of the Bayer pattern, before de-Bayering (demosaicking) takes place.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>responsivity_factor_g</name>
    <version_id>1.0</version_id>
    <local_identifier>responsivity_factor_g</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the factor that has been applied to the G cell  
      of the Bayer pattern, before de-Bayering (demosaicking) takes place.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>responsivity_factor_r</name>
    <version_id>1.0</version_id>
    <local_identifier>responsivity_factor_r</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the factor that has been applied to the R cell  
      of the Bayer pattern, before de-Bayering (demosaicking) takes place.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>responsivity_b</name>
    <version_id>1.1</version_id>
    <local_identifier>responsivity_b</local_identifier>
    <nillable_flag>true</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the conversion factor between DN and radiance units that has been applied 
      to the blue channel of an image.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>responsivity_g</name>
    <version_id>1.1</version_id>
    <local_identifier>responsivity_g</local_identifier>
    <nillable_flag>true</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the conversion factor between DN and radiance units that has been applied 
      to the green channel of an image.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>responsivity_pan</name>
    <version_id>1.1</version_id>
    <local_identifier>responsivity_pan</local_identifier>
    <nillable_flag>true</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the conversion factor between DN and radiance units that has been applied 
      to a panchromatic image.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>responsivity_r</name>
    <version_id>1.1</version_id>
    <local_identifier>responsivity_r</local_identifier>
    <nillable_flag>true</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>Specifies the conversion factor between DN and radiance units that has been applied 
      to the red channel of an image.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>responsivity_std</name>
    <version_id>1.1</version_id>
    <local_identifier>responsivity_std</local_identifier>
    <nillable_flag>true</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the 1-sigma standard deviation for the radiometric coefficients.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>atmospheric_opacity</name>
    <version_id>1.0</version_id>
    <local_identifier>atmospheric_opacity</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The atmospheric opacity (tau) value used in radiometric correction.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>atmospheric_opacity_reference</name>
    <version_id>1.0</version_id>
    <local_identifier>atmospheric_opacity_reference</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The atmospheric opacity (tau) target value to which the image was corrected.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>samples</name>
    <version_id>1.0</version_id>
    <local_identifier>samples</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth Rye</submitter_name>
    <definition> The samples attribute indicates the total number of data instances along the horizontal
      axis of an image or sub-image.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>1</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>sample_bit_mask</name>
    <version_id>1.1</version_id>
    <local_identifier>sample_bit_mask</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The sample_bit_mask attribute Specifies the active bits in a sample. Any bit mask is valid 
      in an non-raw product. Any 8-bit product, whether a scaled raw product or other, will have the value 
      "2#11111111" and be stored in one byte. Any 12-bit product, whether an unscaled raw product, or an ILUT partially-processed product
      (see companding_method), will have the value "2#0000111111111111" and be stored in two bytes. A 15-bit product 
      (e.g. Radiometrically-corrected Calibrated product type) will have the value "2#0111111111111111" and be stored in two bytes. 
      Any 32-bit integer product (e.g. Histogram Raw product) will have the value "2#11111111111111111111111111111111" 
      and be stored in four bytes. For floating-point data, sample_bit_mask is not valid and may be absent. If present, it 
      should be ignored. NOTE: In the PDS, the domain of sample_bit_mask is dependent upon the currently-described value 
      in the sample_bits attribute and only applies to unsigned integer values. Thus sample_bit_mask is not allowed for
      signed or floating-point types.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>sample_bits</name>
    <version_id>1.0</version_id>
    <local_identifier>sample_bits</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The sample_bits attribute specifies the logical or active number of bits in the data, 
      which is distinct from the physical number of bits (for example, encoding 12-bit data within 
      16-bit words). These logical bits are stored in the low order (least significant) bits, with 
      unused bits filled with 0 (or 1 for negative integers to preserve a two's complement representation). 
      This is distinct from the valid data range (specified by valid_minimum and valid_maximum in 
      Special_Constants class) because all values, including missing/invalid flag values, must fit 
      within the sample_bits. The intent is that the data should be able to be sent through a communication 
      channel that passes only sample_bits with no loss in fidelity.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>sample_fov</name>
    <version_id>1.0</version_id>
    <local_identifier>sample_fov</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The sample_fov attribute specifies the angular measure of the field of
      view of an imaged scene, as measured in the image sample direction
      (generally horizontal).</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0.0</minimum_value>
      <maximum_value>360.0</maximum_value>
      <unit_of_measure_type>Units_of_Angle</unit_of_measure_type>
      <specified_unit_id>deg</specified_unit_id>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>sampling_factor</name>
    <version_id>1.0</version_id>
    <local_identifier>sampling_factor</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The sampling_factor attribute provides the value N, where every Nth data point was 
      kept from the original data set by selection, averaging, or taking the median. When applied to 
      an image object, the single value represented in sampling_factor applies to both the lines and the samples.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>saturated_pixel_count</name>
    <version_id>1.0</version_id>
    <local_identifier>saturated_pixel_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The saturated_pixel_count attribute provides the number of pixels which were saturated. This can happen
      when the sensor acquired a value too low or too high to be measured accurately or if post-processing cause the output 
      pixel value to fall below or above the the output range of valid values for the data or data type.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>valid_pixel_count</name>
    <version_id>1.0</version_id>
    <local_identifier>valid_pixel_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The valid_pixel_count attribute provides the total number of pixels tagged as valid. This will 
      generally not include pixels flagged as saturated_pixel_count or missing_pixel_count.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
    
  <DD_Attribute>
    <name>sequence_number</name>
    <version_id>1.0</version_id>
    <local_identifier>sequence_number</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth Rye</submitter_name>
    <definition>The sequence_number attribute supplies the sequence 
      identifier for the associated value in a group of related values. 
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>segment_count</name>
    <version_id>1.0</version_id>
    <local_identifier>segment_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition> The segment_count attribute identifies the number of segments into
      which the image was partitioned for error containment purposes.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>segment_number</name>
    <version_id>1.0</version_id>
    <local_identifier>segment_number</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition> The segment_number attribute identifies which compression segment is described in
      the current Segment class. </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>segment_quality</name>
    <version_id>1.0</version_id>
    <local_identifier>segment_quality</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition> The segment_quality attribute identifies the resultant or targeted image quality index for on-board ICER data compression. Upon return by the ICER decompress function,
      the output quantity segment_quality provides an indication of the quality of the reconstructed segment. Specifically, the value returned is a double for which the integer values 
      correspond to attained min loss values, but in general is an interpolation between these values. Thus lower values of segment_quality correspond to higher reconstructed qualities, 
      and a value of indicates lossless compression. Note that the compressed stream does not directly contain the value of min loss that was given to the compressor, but the decompressor 
      does know how far along in the decompression process it got before it ran out of bits; this information is used to determine segment_quality. In rare circumstances the decompressor m
      ay not be able to determine segment_quality for a segment that it decompresses. In this case it sets segment_quality to 1.0. The reconstructed segment might be either lossy or lossless 
      when this occurs. The technical condition under which a quality value is not determined is that the decompressor runs out of the data for the segment before decoding any bit plane information. </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>segment_status</name>
    <version_id>1.0</version_id>
    <local_identifier>segment_status</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition> The segment_status attribute provides a bit mask which provides the status of
      decoding for the compression segment identified by segment_number. Upon return by the ICER decompress function, 
      the output quantity of segment_status contains a number indicating the decode status. The decode status may have one or more of the following flags set: 
      SHORTDATASEG FLAG (bit 0): If this flag is set, then the segment contained so little data that nothing could be reconstructed in the segment. 
      INCONSISTENTDATA FLAG (bit 1): If this flag is set, then one or more pieces of information in the segment header (specifically, image width, image height, n segs, wavelet filter, n decomps)    
                                     are inconsistent with the value(s) in the first (valid) segment. ICER will ignore the data in this segment.
      DUPLICATESEG FLAG (bit 2): If this flag is set, then the segment index given in the header equals that given by a previous segment. The decompressor will ignore the data in this segment. 
      BADBITPLANENUMBER FLAG (bit 3): If this flag is set, then an ICER internal parameter in the header for this segment has probably been corrupted. The decompressor will ignore the data in this segment. 
      BADBITPLANECOUNT FLAG (bit 4): If this flag is set, then an ICER internal parameter in the header for this segment has probably been corrupted. The decompressor will ignore the data in this segment. 
      BADDATA FLAG (bit 5): If this flag is set, then either the parameter combination given in the header for this segment are not allowed by ICER, or the segment number is bad. This probably indicates corrupted data. The decompressor will ignore the data in this segment. </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Numeric_Base2</value_data_type>
      <minimum_characters>1</minimum_characters>
      <maximum_characters>6</maximum_characters>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>segment_corrupted_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>segment_corrupted_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The segment_corrupted_flag specifies whether the segment is corrupted (or bad). Valid values are "true" or "false".
      If the value is true, the segment is corrupted, and if the value is false, the segment is not corrupted.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>shutter_subtraction_mode</name>
    <version_id>1.1</version_id>
    <local_identifier>shutter_subtraction_mode</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The shutter_subtraction_mode specifies whether shutter subtraction will be performed, or if it is dependent on the
      exposure_duration_threshold_count.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>True</value>
        <value_meaning>shutter subtraction will be performed</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Conditional</value>
        <value_meaning>the exposure_duration_threshold_count will determine whether or not shutter subtraction will be performed</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Always</value>
        <value_meaning>Always indicates the subtraction is, or will be, on regardless of other conditions</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>None</value>
        <value_meaning>shutter subtraction was not used</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>shutter_type</name>
    <version_id>1.0</version_id>
    <local_identifier>shutter_type</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>R. Deen</submitter_name>
    <definition>Specifies the type of shutter the camera uses. "Global" exposes all pixels at 
      the same time, so the image captures a consistent view of moving objects. "Rolling" scans 
      across the scene, meaning each pixel is exposed at a slightly different time, which can 
      introduce distortions for rapidly moving objects. This is generally a property of the camera 
      itself and does not vary from frame to frame.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Global</value>
        <value_meaning>shutter is of type global</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Rolling</value>
        <value_meaning>shutter is of type rolling</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Unknown</value>
        <value_meaning>shutter is of type unkown or not assigned</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>special_line</name>
    <version_id>1.0</version_id>
    <local_identifier>special_line</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Line number of the special point.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>special_sample</name>
    <version_id>1.0</version_id>
    <local_identifier>special_sample</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Sample number of the special point.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>starpixel_initial_subsampling_interval</name>
    <version_id>1.0</version_id>
    <local_identifier>starpixel_initial_subsampling_interval</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Shin-ya Murakami</submitter_name>
    <definition>
      The value gives exponent n for initial subsampling interval 2**n.
      See Takada+2007 (https://doi.org/10.1109/IGARSS.2007.4422835) for the detail.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <maximum_value>8</maximum_value>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>starpixel_degradation</name>
    <version_id>1.0</version_id>
    <local_identifier>starpixel_degradation</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Shin-ya Murakami</submitter_name>
    <definition>
      The value is degradation parameter. Then the value of the
      degradation parameter is higher, the quality of lossy compressed image
      will be worse, and the value is lower, the quality will be better.
      If value of degradation parameter is 0, there will be no degradation.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <maximum_value>32</maximum_value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>striping_count</name>
    <version_id>1.0</version_id>
    <local_identifier>striping_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the number of stripes (N) used during dark current mitigation within image acquisition. 
      Image "striping" is comprised of reading out the image in N different parts ("stripes"), often using a 
      hardware windowing mode, using N separate exposures (with identical exposure times). These successive 
      stripes correspond to physically different locations on the CCD. A commandable overlap (M rows) allows 
      each successive row to "cover" the image pixels towards the readout region.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>striping_overlap_rows</name>
    <version_id>1.0</version_id>
    <local_identifier>striping_overlap_rows</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the number of rows (M) of striping overlap used during dark current mitigation 
      within image acquisition. Image "striping" is comprised of reading out the image in N different 
      parts ("stripes"), often using a hardware windowing mode, using N separate exposures (with identical 
      exposure times). These successive stripes correspond to physically different locations on the CCD.
      A commandable overlap (M rows) allows each successive row to "cover" the image pixels towards 
      the readout region.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>subframe_type</name>
    <version_id>1.2</version_id>
    <local_identifier>subframe_type</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition> The subframe_type attribute specifies the method of subframing performed on the
      image. These methods may vary by mission so the permissible values should be set by the 
      mission dictionaries. The current enumerations were added for the MSL mission and can be 
      expanded if needed.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Software Only</value>
        <value_meaning>Software processsing only.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Hardware Compatible</value>
        <value_meaning>Use hardware only if compatible.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Hardware Else Software</value>
        <value_meaning>Use hardware then software.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Subframe Around Sun</value>
        <value_meaning>If the sun is found, send a subframed image of the sun. If sun is not 
        found, send back no image.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Sun Subframe Or Full</value>
        <value_meaning>If the sun is found, send a subframed image of the sun. If the sun is 
          not found, send back the entire image.</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>None</value>
        <value_meaning>No subframe requested.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>temperature_status</name>
    <version_id>1.0</version_id>
    <local_identifier>temperature_status</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The temperature_status attribute defines the status of the associated
      temperature measurement. The status is interpreted in a device-specific
      way, but generally 0 indicates a successful measurement.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>temperature_value</name>
    <version_id>1.0</version_id>
    <local_identifier>temperature_value</local_identifier>
    <nillable_flag>true</nillable_flag>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The temperature_value attribute provides the temperature, in the specified
      units, of some point on an imaging instrument or other imaging instrument device.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Temperature</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>tile_count</name>
    <version_id>1.0</version_id>
    <local_identifier>tile_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Defines the number of tiles in this set. Should be present and 
      equal to the number of Tile objects if Tile is used; optional if Tile is not used.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>tile_lines</name>
    <version_id>1.0</version_id>
    <local_identifier>tile_lines</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Defines the number of lines in a regular tile. Not used for irregular tiles.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>1</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>tile_num_bands</name>
    <version_id>1.1</version_id>
    <local_identifier>tile_num_bands</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specified the number of bands for this tile. The tile number of bands may not match the 
      number of bands for the overall image, in which case it reflects the number of bands the original 
      tile had before assembly, or the number of bands the tile should have after disassembly.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>tile_number</name>
    <version_id>1.0</version_id>
    <local_identifier>tile_number</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the tile number (array index), starting at 1.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>1</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>tile_samples</name>
    <version_id>1.0</version_id>
    <local_identifier>tile_samples</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Defines the number of samples in a regular tile. Not used for irregular tiles.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>1</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>tile_type</name>
    <version_id>1.0</version_id>
    <local_identifier>tile_type</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Defines the type of tiles. Regular tiles are the same size throughout 
      (although the last row or column of tiles might be smaller in order to fit the 
      image size) and should have tile_lines and tile_samples defined. Irregular tiles 
      may have different sizes per tile, described in each Tile class.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Irregular</value>
        <value_meaning>tiles sizes are not regular or the same size throughout</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Regular</value>
        <value_meaning>tiles sizes are the same size thorughout.</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>tile_upsample_method</name>
    <version_id>1.0</version_id>
    <local_identifier>tile_upsample_method</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies how tiles were upsampled (if needed) to create the full image. 
      Replication simply repeats the pixel value as many times as necessary, Bilinear is 
      bilinear interpolation, and None means upsampling was not necessary.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Bilinear</value>
        <value_meaning>Bilinear interpolation</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Replication</value>
        <value_meaning>Replication simply repeats the pixel value as many times as necessary</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>None</value>
        <value_meaning>None means upsampling was not necessary</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>tile_venue</name>
    <version_id>1.0</version_id>
    <local_identifier>tile_venue</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies where the tiling was done. Generally, Onboard indicates that this 
      image is a reassembly of tiles sent from the spacecraft, while Ground indicates a tile 
      decomposition after processing.</definition>
    <DD_Value_Domain>
      <enumeration_flag>true</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
      <DD_Permissible_Value>
        <value>Ground</value>
        <value_meaning>Ground indicates a tile decomposition after processing</value_meaning>
      </DD_Permissible_Value>
      <DD_Permissible_Value>
        <value>Onboard</value>
        <value_meaning>Onboard indicates that this image is a reassembly of tiles sent from the spacecraft</value_meaning>
      </DD_Permissible_Value>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>num_line_tiles</name>
    <version_id>1.0</version_id>
    <local_identifier>num_line_tiles</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Defines the number of tiles in the line direction for a 
      regular tile. Not used for irregular tiles.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>1</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>num_sample_tiles</name>
    <version_id>1.0</version_id>
    <local_identifier>num_sample_tiles</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Defines the number of tiles in the sample direction for a 
      regular tile. Not used for irregular tiles.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>1</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
 
  <DD_Attribute>
    <name>valid_maximum_pixel</name>
    <version_id>1.0</version_id>
    <local_identifier>valid_maximum_pixel</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent hare</submitter_name>
    <definition>Specifies the maximum pixel DN value for pixels used by the autoexposure algorithm.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>valid_minimum_pixel</name>
    <version_id>1.0</version_id>
    <local_identifier>valid_minimum_pixel</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies the minimum DN threshold for pixels used by the autoexposure algorithm.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>value_number</name>
    <version_id>1.0</version_id>
    <local_identifier>value_number</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth Rye</submitter_name>
    <definition>The value_number attribute provides the value with 
      no applicable units as named by the associated id, name, or sequence_number. 
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>value_string</name>
    <version_id>1.0</version_id>
    <local_identifier>value_string</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Elizabeth Rye</submitter_name>
    <definition>The value_string attribute provides the value with 
      no applicable units as named by the associated id, name, or sequence_number. 
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>video_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>video_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Danika F. Wellington</submitter_name>
    <definition> The video_flag attribute indicates whether or not video products were commanded. </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>voltage_value</name>
    <version_id>1.1</version_id>
    <local_identifier>voltage_value</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The voltage_value attribute provides provides the voltage, in the specified units, of an 
      imaging instrument or some part of the imaging instrument.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Voltage</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>wavelet_filter</name>
    <version_id>1.0</version_id>
    <local_identifier>wavelet_filter</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The wavelet_filter attribute specifies the filter used in the compression and decompression algorithm.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>width_pixels</name>
    <version_id>1.1</version_id>
    <local_identifier>width_pixels</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The width_pixels attribute provides the horizontal dimension, in pixels.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <minimum_value>0</minimum_value>
      <unit_of_measure_type>Units_of_Misc</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
 
  <DD_Attribute>
    <name>white_balance_color_temp</name>
    <version_id>1.0</version_id>
    <local_identifier>white_balance_color_temp</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The color temperature used to white-balance the image generally reported in Kelvin.
      For example, on Earth 5000-6500K might be set when there are clear skies with the sun overhead.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Temperature</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
   
  <DD_Attribute>
    <name>x_center</name>
    <version_id>1.0</version_id>
    <local_identifier>x_center</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The x_center attribute specifies the sample coordinate of the center
      of the function used to describe an algorithmic flat field. See Radial_Flat_Field_Function 
      for the formula.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Misc</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>y_center</name>
    <version_id>1.0</version_id>
    <local_identifier>y_center</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The y_center attribute specifies the line coordinate of the center
      of the function used to describe an algorithmic flat field. See Radial_Flat_Field_Function 
      for the formula.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Misc</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>zoom_position</name>
    <version_id>1.0</version_id>
    <local_identifier>zoom_position</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The zoom_position attribute defined, in a camera-specific way, the zoom 
      metric that should be used for geometric processing of the data (e.g. for 
      creating camera models). This will often be the zoom motor count.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>


  <!-- Start Attributes: for Data_Quality Class   -->
 
  <DD_Attribute>
    <name>above_aft_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>above_aft_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>A boolean value that denotes the camera mechanism was above allowable 
      flight temperature at time of acquisition.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>below_aft_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>below_aft_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>A boolean value that denotes the camera mechanism was above allowable 
      flight temperature at time of acquisition.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>data_received</name>
    <version_id>1.0</version_id>
    <local_identifier>data_received</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>T. Hare</submitter_name>
    <definition>This field defines if all parts of the data or image is received 
      without detected checksum or sequence errors. Example use case from MRO CTX is either
      "OK" if all fragments of the image were received or "ERROR" if not.</definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>dq_bayer_cell</name>
    <version_id>1.0</version_id>
    <local_identifier>dq_bayer_cell</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>Specifies the Bayer cell to which the data quality indicators apply. 
      bayer_cell can be used even if the image has been debayered, in which case it 
      refers to the original debayered image. Note that "green_1" and "green_2" can 
      be used to refer to specific green Bayer cells, or "green" refers to both greens
      together.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Short_String_Collapsed</value_data_type>
      <minimum_value>1</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>dq_band</name>
    <version_id>1.0</version_id>
    <local_identifier>dq_band</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>Specifies the sequence number in the data array to which the data 
      quality indicators apply.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <minimum_value>1</minimum_value>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>full_well_limit_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>full_well_limit_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>A boolean value that denotes we have reached/exceeded the full well 
      value of the CCD detector.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>missing_temperature_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>missing_temperature_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>A boolean value that denotes temperature data was missing at time 
      of image acquisition.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>no_signal_count</name>
    <version_id>1.0</version_id>
    <local_identifier>no_signal_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>Integer number of pixels that received no signal above bias.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>out_of_focus_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>out_of_focus_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>A boolean value that denotes this image failed to find focus. Focus 
      was commanded using autofocus or manual. 
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>pixel_count</name>
    <version_id>1.0</version_id>
    <local_identifier>pixel_count</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>Integer number of pixels currently to list the total number of pixels as used 
      in Hot_Pixel, Saturated_Pixel, and Nonlinear_Pixel classes.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_NonNegative_Integer</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>saturated_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>saturated_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>A boolean value that denotes that there exists pixels within the 
      image that have reached or exceeded the maximum pixel value. 
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>sequence_terminated_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>sequence_terminated_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>A boolean value that denotes that there exists pixels within the 
      image that have reached or exceeded the maximum pixel value. 
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>threshold_factor</name>
    <version_id>1.0</version_id>
    <local_identifier>threshold_factor</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Multiplicative factor used to isolate pixels that are X times 
      greater than theie nearest neighbors.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>threshold_value</name>
    <version_id>1.0</version_id>
    <local_identifier>threshold_value</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Value used to define a level that triggers a defined behavior.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Real</value_data_type>
      <unit_of_measure_type>Units_of_Spectral_Radiance</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>
  
  <DD_Attribute>
    <name>wrong_filter_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>wrong_filter_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>A boolean value that denotes the commanded filter does not match 
      the actual filter used to acquire the image.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>wrong_pointing_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>wrong_pointing_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>A boolean value that denotes this image has the wrong 
      pointing as pre-determined through planned observations or image footprints. 
      For example, the rover faulted while driving and did not make it to the intended
      location and therefore the images have the wrong pointing. 
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>wrong_zoom_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>wrong_zoom_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>A boolean value that denotes the commanded zoom does not match 
      the actual zoom value. For example, commanded at 110mm but acquired at 63mm. 
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <DD_Attribute>
    <name>zero_value_pixels_flag</name>
    <version_id>1.0</version_id>
    <local_identifier>zero_value_pixels_flag</local_identifier>
    <nillable_flag>false</nillable_flag>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>A boolean value that denotes this image has pixels with a DN value of zero.
    </definition>
    <DD_Value_Domain>
      <enumeration_flag>false</enumeration_flag>
      <value_data_type>ASCII_Boolean</value_data_type>
      <unit_of_measure_type>Units_of_None</unit_of_measure_type>
    </DD_Value_Domain>
  </DD_Attribute>

  <!-- End   Attributes: for Data_Quality Class   -->


  <!--                   -->
  <!-- Attributes: END   -->
  <!--                   -->


  <!--                   -->
  <!--  Classes: BEGIN   -->
  <!--                   -->

  <!-- Class: Imaging    -->
  <!-- See schematron rule below for ensuring at least one subclass are present -->
  <DD_Class>
    <name>Imaging</name>
    <version_id>1.0</version_id>
    <local_identifier>Imaging</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Imaging class contains classes and attributes describing both the 
        image product itself and the imaging instrument. Image product information can include exposure duration, 
        filters, data correction, sampling, frame, sub-frames, and how the product was derived. 
        For the imaging instrument, information can be provided describing the dynamic physical or operating 
        characteristics of the imaging instrument.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>true</element_flag>
    <DD_Association>
        <identifier_reference>pds.Local_Internal_Reference</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Brightness_Correction</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Col_Sum</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Color_Filter_Array</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Color_Processing</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Dark_Current_Correction</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Quality</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Detector</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Downsampling</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Exposure</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Flat_Field_Correction</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Focus</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Focus_Stack</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Frame</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>High_Dynamic_Range</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Histogram</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Illumination</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Image_Filter</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Image_Mask</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Onboard_Compression</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Optical_Filter</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Optical_Properties</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Pointing_Correction</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Radiometric_Correction</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Reference_Pixel</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Row_Sum</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Sampling</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Shutter_Subtraction</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Spatial_Filter</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Subframe</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Thumbnail</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Tiling</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Video</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>White_Balance</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Instrument_State</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Commanded_Parameters</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Autoexposure -->
  <DD_Class>
    <name>Autoexposure</name>
    <version_id>1.1</version_id>
    <local_identifier>Autoexposure</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Autoexposure class contains attributes used to identify or describe
      the algorithm used to automatically calculate the proper exposure time. This is 
      generally based on some kind of histogram analysis. The specific autoexposure 
      algorithm used is defined in the processing_algorithm attribute, and the specific 
      set of attributes needed to describe it will vary based on the algorithm. Examples 
      of autoexposure algorithms include "Maki 2003" used on MER, MSL ECAMs, M2020 ECAMS; 
      "Maurice 2012" used on MSL ChemCam; "Smith 1997" used on Mars Pathfinder Imager.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>auto_exposure_alpha</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>auto_exposure_data_cut</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>auto_exposure_percent</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>auto_exposure_pixel_fraction</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>auto_exposure_lower_threshold</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>auto_exposure_lower_limit</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>auto_exposure_max_delta</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>auto_exposure_roi_first_line</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>auto_exposure_roi_first_sample</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>auto_exposure_roi_lines</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>auto_exposure_roi_samples</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>auto_expose_target_dn</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>auto_exposure_target_msv</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>auto_exposure_upper_threshold</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>auto_exposure_upper_limit</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>max_auto_exposure_iteration_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>exposure_table</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>exposure_table_update_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>valid_maximum_pixel</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>valid_minimum_pixel</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Data_Processing</identifier_reference>
        <reference_type>parent_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Brightness_Correction -->
  <DD_Class>
    <name>Brightness_Correction</name>
    <version_id>1.0</version_id>
    <local_identifier>Brightness_Correction</local_identifier>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The Brightness_Correction class describes brightness corrections that
      were applied to an image or mosaic. Brightness correction is the process of adjusting 
      the DN values of adjacent frames in a mosaic so they match visually. It may also involve 
      contrast or vignetting adjustments. The result may no longer be radiometrically calibrated due
      to the adjustments. The processing_algorithm child of Brightness_Correction describes the type 
      of brightness correction, and should correspond to the classes within Brightness_Correction_Image. 
      If the algorithm is "MIXED", multiple algorithms were used, in which case the specific information 
      in each Brightness_Correction_Image must be used.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>Brightness_Correction_File</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Brightness_Correction_Image</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Brightness_Correction_File -->
  <DD_Class>
    <name>Brightness_Correction_File</name>
    <version_id>1.0</version_id>
    <local_identifier>Brightness_Correction_File</local_identifier>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The Brightness_Correction_File identifies a file containing brightness
      correction information. The project SIS should define the format of this file. 
      Correction information may appear in the file, in instances of the Brightness_Correction_Image 
      class, or both (if both, they should be consistent).</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>Data_Processing_File</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Brightness_Correction_Image -->
  <DD_Class>
    <name>Brightness_Correction_Image</name>
    <version_id>1.0</version_id>
    <local_identifier>Brightness_Correction_Image</local_identifier>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The Brighness_Correction_Image class describes the brightness correction
      that was applied to a single image, whether alone or part of a mosaic. The image this 
      correction applies to may be identified via the enclosed Internal_Reference, or via the 
      order in which the Brightness_Correction_Image objects appear (which matches the order 
      given in Input_Product_List).</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>pds.Internal_Reference</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>XSChoice#</identifier_reference>
      <identifier_reference>Brightness_Correction_Linear</identifier_reference>
      <identifier_reference>Brightness_Correction_HSI_Linear</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Brightness_Correction_HSI_Linear -->
  <DD_Class>
    <name>Brightness_Correction_HSI_Linear</name>
    <version_id>1.0</version_id>
    <local_identifier>Brightness_Correction_HSI_Linear</local_identifier>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The Brightness_Correction_HSI_Linear class works just like
      Brightness_Correction_Linear, except that the color image is first
      converted to HSI (Hue, Saturation, Intensity) space, the correction is
      applied only to Intensity, and then the result is converted back to RGB space.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>brightness_scale</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>brightness_offset</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Brightness_Correction_Linear -->
  <DD_Class>
    <name>Brightness_Correction_Linear</name>
    <version_id>1.0</version_id>
    <local_identifier>Brightness_Correction_Linear</local_identifier>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The Brightness_Correction_Linear class describes a simple linear
      brightness correction, with an additive (brightness_offset) and
      multiplicative (brightness_scale) factor applied. The result is: 
      output = input * brightness_scale + brightness_offset. If there are multiple
      bands, the same correction is applied to each band.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>brightness_scale</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>brightness_offset</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Color_Filter_Array -->
  <DD_Class>
    <name>Color_Filter_Array</name>
    <version_id>1.0</version_id>
    <local_identifier>Color_Filter_Array</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Color_Filter_Array class describes whether or not an
        image was acquired using a Color Filter Array (CFA) and if so, whether
        and how the CFA pattern was removed. A CFA is a method for making color
        images using one exposure on a single sensor plane, where microfilters
        of different wavelengths are put in front of pixels in a specific
        pattern. The most common pattern is the Bayer pattern, which has a red,
        blue, and two green pixels in every 2x2 pixel square. Although
        generally used for RGB color, CFA filters can be of any number and
        wavelength (see color_filter_array_type).</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>color_filter_array_type</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>color_filter_array_state</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Color -->
  <DD_Class>
    <name>Color_Processing</name>
    <version_id>1.0</version_id>
    <local_identifier>Color_Processing</local_identifier>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The Color_Processing class contains parameters describing color correction 
      or processing and how the image is represented in color.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>color_space</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>color_component</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>illuminant</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>encoded_display_gamma</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>color_dn_scaling_method</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>color_dn_scaling_factor</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Onboard_Responsivity</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Onboard_Color_Matrix</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Commanded_Parameters -->
  <DD_Class>
    <name>Commanded_Parameters</name>
    <version_id>1.0</version_id>
    <local_identifier>Commanded_Parameters</local_identifier>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The Commanded_Parameters class contains attributes used to identify or describe the
        commands sent to a spacecraft to perform one or more actions resulting in the acquisition of
        the current data product. These are distinct from similar values in the root Imaging class
        which indicate the state of the image as acquired.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>pds.description</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Brightness_Correction</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Col_Sum</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Color_Filter_Array</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Color_Processing</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Dark_Current_Correction</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Quality</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Detector</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Downsampling</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Exposure</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Flat_Field_Correction</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Focus</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Focus_Stack</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Frame</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>High_Dynamic_Range</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Histogram</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Illumination</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Image_Filter</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Image_Mask</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Onboard_Compression</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Optical_Filter</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Optical_Properties</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Pointing_Correction</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Radiometric_Correction</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Reference_Pixel</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Row_Sum</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Sampling</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Shutter_Subtraction</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Spatial_Filter</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Subframe</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Thumbnail</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Tiling</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Video</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>White_Balance</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Companding -->
  <DD_Class>
    <name>Companding</name>
    <version_id>1.2</version_id>
    <local_identifier>Companding</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The Companding class describes whether or not data is or has had its bit
        depth reduced (for example conversion from 12 to 8 bits via a lookup
        table or bit scaling), the venue where it occurred (Software or Hardware),
        and the method used to complete the companding. The processing_algorithm attribute 
        specifies how data was companded.  Generally this will either be via a lookup table 
        (such as a square root encoding), or by shifting bits to preserve the high order bits 
        and discard the low order bits.  The value of this keyword is mission specific but there 
        are recommended values that should apply across missions when possible: NONE - no scaling.
        LUTn - use the numbered lookup table.  Lookup tables are defined in the
        mission SIS.  It is preferred for "n" to be a number but it could be a
        name, for example LUT_MMM_3 to indicate LUT 3 for the MMM instruments
        (on MSL). MSB_BITn - Shift to make bit "n" the most significant.  Bits start
        numbering at 0 so MSB_BIT7 means no shift for a 12->8 bit companding,
        while MSB_BIT11 means to shift right 4 bits for a 12->8 bit companding.
        AUTOSHIFT - Data should be shifted to preserve the highest value.  This
        value should only appear in a command echo; one of the MSB_BITn values
        should be used in downlinked data to specify what the actual shift was.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>true</element_flag>
    <DD_Association>
      <identifier_reference>companding_state</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>early_scaling</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Companding_File</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Companding_Table</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Companding_File class definition -->
  <DD_Class>
    <name>Companding_File</name>
    <version_id>1.0</version_id>
    <local_identifier>Companding_File</local_identifier>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The Companding _File class specifies the file containing the 
      decompanding (inverse LUT) table used to process the data.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>Data_Processing_File</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Companding_Table class definition -->
  <DD_Class>
    <name>Companding_Table</name>
    <version_id>1.0</version_id>
    <local_identifier>Companding_Table</local_identifier>
    <submitter_name>Paul Geissler</submitter_name>
    <definition>The Companding_Table class specifies the look up table 
      used to compand the data.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>Companding_Table_Mapping</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>unbounded</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Processing_File</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Companding_Table_Mapping class definition -->
  <DD_Class>
    <name>Companding_Table_Mapping</name>
    <version_id>1.0</version_id>
    <local_identifier>Companding_Table_Mapping</local_identifier>
    <submitter_name>Paul Geissler</submitter_name>
    <definition>The Companding_Table_Mapping class specifies the mapping 
      between the input DN range and the output DN as the data are companded.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>input_dn_min</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>input_dn_max</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>output_dn</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>


  <!-- Class: Dark_Current_Correction class definition -->
  <DD_Class>
    <name>Dark_Current_Correction</name>
    <version_id>1.0</version_id>
    <local_identifier>Dark_Current_Correction</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies how dark current removal was performed on this image.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>striping_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>striping_overlap_rows</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Onboard_Compression class definition -->
  <DD_Class>
    <name>Onboard_Compression</name>
    <version_id>1.1</version_id>
    <local_identifier>Onboard_Compression</local_identifier>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The Onboard_Compression class contains attributes describing the compression 
    performed onboard a spacecraft or instrument for data storage and transmission.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>true</element_flag>
    <DD_Association>
        <identifier_reference>onboard_compression_class</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>onboard_compression_mode</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>onboard_compression_type</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>onboard_compression_rate</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>onboard_compression_ratio</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>onboard_compression_quality</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>onboard_compression_venue</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>deferred_flag</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>error_pixel_count</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>XSChoice#</identifier_reference>
        <identifier_reference>ICER_Parameters</identifier_reference>
        <identifier_reference>LOCO_Parameters</identifier_reference>
        <identifier_reference>JPEG_Parameters</identifier_reference>
        <identifier_reference>JPEG_Progressive_Parameters</identifier_reference>
        <identifier_reference>StarPixel_Flexible_Parameters</identifier_reference>
        <identifier_reference>StarPixel_Lossless_Parameters</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Correction_Parameter  -->
  <DD_Class>
    <name>Correction_Parameter</name>
    <version_id>1.0</version_id>
    <local_identifier>Correction_Parameter</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The Correction_Parameter class specifies identifier(s) and value for a data correction 
      parameter applicable to the parent class.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>List_Index_No_Units_Imaging</identifier_reference>
        <reference_type>parent_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Data_Processing  -->
  <DD_Class>
    <name>Data_Processing</name>
    <version_id>1.0</version_id>
    <local_identifier>Data_Processing</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Data_Processing class contains attributes describing how processing and/or calibration
        was performed on a data product. It is not intended to be used on its own; rather it is intended 
        to be extended by classes specific to a particular type of processing, such as Shutter_Subtraction, 
        Flat_Field_Correction, Companding, etc. The attributes of this class thus become attributes of
        the extension class.
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>active_flag</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>processing_venue</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>processing_algorithm</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>sequence_number</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Data_Processing_File  -->
  <DD_Class>
    <name>Data_Processing_File</name>
    <version_id>1.0</version_id>
    <local_identifier>Data_Processing_File</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Data_Processing_File class contain attributes which identify a file
      containing calibration data that was applied to the science data. It is not 
      intended to be used on its own; rather it is intended to be extended by classes 
      specific to a particular type of file, such as Flat_Field_File. Note that the "name" 
      attribute is the name of the file; this attribute should only be used if the file 
      is either not included in an archive, or if the  delivery status is unknown by 
      the data provider. The External_Reference or Internal_Reference class should be used 
      instead of name if at all possible.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>pds.description</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>XSChoice#</identifier_reference>
        <identifier_reference>pds.Internal_Reference</identifier_reference>
        <identifier_reference>pds.External_Reference</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>pds.name</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Image_Mask  -->
  <DD_Class>
    <name>Image_Mask</name>
    <version_id>1.0</version_id>
    <local_identifier>Image_Mask</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The Image_Mask specifies how pixels were masked (removed) from an image. Masks 
      are typically used to suppress results in areas where they don't belong, for example masking 
      off spacecraft hardware or removing pixels that did not meet some processing threshold.
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>horizon_mask_elevation</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Image_Mask_File</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Image_Mask_File  -->
  <DD_Class>
    <name>Image_Mask_File</name>
    <version_id>1.0</version_id>
    <local_identifier>Image_Mask_File</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>This class identifies a file used for image masking. The mask_type 
      defines the type of file; if mask_type is missing then "image" is assumed.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>pds.description</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>XSChoice#</identifier_reference>
      <identifier_reference>pds.Internal_Reference</identifier_reference>
      <identifier_reference>pds.External_Reference</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>pds.name</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>mask_type</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>horizon_mask_elevation</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>mask_transparent_value</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Detector -->
  <DD_Class>
    <name>Detector</name>
    <version_id>1.3</version_id>
    <local_identifier>Detector</local_identifier>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The Detector class contains attributes describing the state of the
      instrument detector. These are values directly read from the detector
      and do not necessarily reflect the state of the image after onboard
      processing. For example, the entire image may be read into memory and
      then subframed in software, in which case the subframe attributes in
      this class reflect the entire image (as read from the detector), whereas
      those in the Subframe class represent the final subframe results.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>true</element_flag>
    <DD_Association>
    <identifier_reference>first_line</identifier_reference>
    <reference_type>attribute_of</reference_type>
    <minimum_occurrences>0</minimum_occurrences>
    <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>first_sample</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>lines</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>samples</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>detector_to_image_rotation</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>detector_to_image_flip</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>erase_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>frame_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>readout_rate</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>gain_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>gain_db</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>gain_mode_id</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>gain_number</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>analog_offset</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>analog_offset_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>analog_offset_percent</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>analog_offset_voltage</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>bad_pixel_replacement_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>bad_pixel_replacement_table_id</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>instrument_idle_timeout</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>early_image_return</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>parameter_table_id</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>ISO</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Special_Point</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Shutter</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>pds.Internal_Reference</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Device_Component_States -->
  <DD_Class>
    <name>Device_Component_States</name>
    <version_id>1.0</version_id>
    <local_identifier>Device_Component_States</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Device_Component_States class provides a container for the set of
        states of a component of an imaging instrument or other imaging device.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>Device_Component_State</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Device_Component_State -->
  <DD_Class>
    <name>Device_Component_State</name>
    <version_id>1.0</version_id>
    <local_identifier>Device_Component_State</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Device_Component_State class describes the state of one component 
      of an imaging instrument or other imaging device. The meaning of "state" is 
      device-specific.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>device_state</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Device_Parameters</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Device_Currents -->
  <DD_Class>
    <name>Device_Currents</name>
    <version_id>1.0</version_id>
    <local_identifier>Device_Currents</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Device_Currents class provides a container for the set of
        currents of an imaging instrument or other imaging device.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>Device_Current</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Device_Current -->
  <DD_Class>
    <name>Device_Current</name>
    <version_id>1.1</version_id>
    <local_identifier>Device_Current</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Device_Current class provides the current of some point
        on an imaging instrument or other imaging device.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>current_value</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Device_Parameters</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Device_Motor_Counts -->
  <DD_Class>
    <name>Device_Motor_Counts</name>
    <version_id>1.0</version_id>
    <local_identifier>Device_Motor_Counts</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Device_Motor_Counts class provides a container for the set of
        raw motor counts of actuators on an imaging instrument or other imaging 
        device (such as a filter wheel, focus motor, or zoom motor).</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>Device_Motor_Count</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Device_Motor_Count -->
  <DD_Class>
    <name>Device_Motor_Count</name>
    <version_id>1.0</version_id>
    <local_identifier>Device_Motor_Count</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Device_Motor_Count class describes the raw motor count of one
      actuator on an imaging instrument or other imaging device (such as a filter wheel, 
      focus motor, or zoom motor). This information should typically be reported in
      a more specific and useable form in other classes, such as a filter number or wavelength
      in the Optical_Filter class or a focus distnace in the Focus class.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>motor_count</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Device_Parameters</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Device_Parameters  -->
  <DD_Class>
    <name>Device_Parameters</name>
    <version_id>1.0</version_id>
    <local_identifier>Device_Parameters</local_identifier>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The Device_Parameters class identifies where a measurement was made. It may refer
    to an individual imaging instrument, imaging instrument device, or some defined point on the 
    instrument or device. The class is intended to be extended (for example, by Device_Temperature) 
    to add the associated measurement rather than being used directly.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>XSChoice#</identifier_reference>
      <identifier_reference>device_name</identifier_reference>
      <identifier_reference>device_id</identifier_reference>
      <identifier_reference>sequence_number</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>3</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Device_Temperatures -->
  <DD_Class>
    <name>Device_Temperatures</name>
    <version_id>1.0</version_id>
    <local_identifier>Device_Temperatures</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Device_Temperatures class provides a container for the set of
        temperatures of an imaging instrument or other imaging device.
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>Device_Temperature</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Device_Temperature -->
  <DD_Class>
      <name>Device_Temperature</name>
      <version_id>1.0</version_id>
      <local_identifier>Device_Temperature</local_identifier>
      <submitter_name>Jordan Padams</submitter_name>
      <definition>The Device_Temperature class provides a container for the
          temperature of some point on an imaging instrument or other imaging device.
      </definition>
      <abstract_flag>false</abstract_flag>
      <element_flag>false</element_flag>
      <DD_Association>
            <identifier_reference>raw_count</identifier_reference>
            <reference_type>attribute_of</reference_type>
            <minimum_occurrences>0</minimum_occurrences>
            <maximum_occurrences>1</maximum_occurrences>
        </DD_Association>
        <DD_Association>
            <identifier_reference>temperature_value</identifier_reference>
            <reference_type>attribute_of</reference_type>
            <minimum_occurrences>0</minimum_occurrences>
            <maximum_occurrences>1</maximum_occurrences>
        </DD_Association>
        <DD_Association>
            <identifier_reference>temperature_status</identifier_reference>
            <reference_type>attribute_of</reference_type>
            <minimum_occurrences>0</minimum_occurrences>
            <maximum_occurrences>1</maximum_occurrences>
        </DD_Association>
        <DD_Association>
          <identifier_reference>Device_Parameters</identifier_reference>
          <reference_type>parent_of</reference_type>
          <minimum_occurrences>1</minimum_occurrences>
          <maximum_occurrences>1</maximum_occurrences>
        </DD_Association>
  </DD_Class>

  <!-- Class: Device_Voltages -->
  <DD_Class>
    <name>Device_Voltages</name>
    <version_id>1.0</version_id>
    <local_identifier>Device_Voltages</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Device_Voltage class provides a container for the set of
        voltages of an imaging instrument or other imaging device.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>Device_Voltage</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Device_Voltage -->
  <DD_Class>
    <name>Device_Voltage</name>
    <version_id>1.0</version_id>
    <local_identifier>Device_Voltage</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Device_Voltage class provides the voltage of some point
        on an imaging instrument or other imaging device.
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>voltage_value</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Device_Parameters</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Downsampling  -->
  <DD_Class>
    <name>Downsampling</name>
    <version_id>1.0</version_id>
    <local_identifier>Downsampling</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The Downsampling class describes whether or not downsampling occurred, the venue where 
        it occurred (Software or Hardware), the method used to downsample, and the pixel averaging dimensions.
        A downsampled image is a smaller version of the image, resulting in reduced resolution of the
        same coverage area. The processing_algorithm attribute specifies the pixel resolution downsample method used. 
        This varies by mission, but examples from MSL include: 'Mean' - Downsampling done in software by calculation of the mean.,
        'Conditional' - Use hardware binning if downsampling (by mean calculation) and subframe arguments are consistent.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>Pixel_Averaging_Dimensions</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Exposure -->
  <DD_Class>
    <name>Exposure</name>
    <version_id>1.1</version_id>
    <local_identifier>Exposure</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Exposure class contains attributes identifying the image instrument
        exposure configuration and image exposure values. As a child of the Imaging class, these attribute values
        identify the actual exposure values when the image was taken. As a child of the Commanded_Parameters class, these attribute values
        are those that were commanded to the spacecraft at the time the image was taken.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>true</element_flag>
    <DD_Association>      
        <identifier_reference>exposure_count</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>exposure_duration</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>exposure_duration_count</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>exposure_type</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>exposure_scale_factor</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>exposure_coadd_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
     <DD_Association>
      <identifier_reference>exposure_readout_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Autoexposure</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Optical_Filter  -->
  <DD_Class>
    <name>Optical_Filter</name>
    <version_id>1.1</version_id>
    <local_identifier>Optical_Filter</local_identifier>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The Optical_Filter class defines the filters used by the camera optics
      (not to be confused with image processing software filters). The filter may be 
      identified by name, identifier, number, or some combination of these.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>true</element_flag>
    <DD_Association>
        <identifier_reference>filter_name</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>filter_id</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>filter_number</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>filter_position_count</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>bandwidth</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>center_filter_wavelength</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>array_band_number</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>pds.comment</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>pds.Local_Internal_Reference</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Flat_Field_Correction -->
  <DD_Class>
    <name>Flat_Field_Correction</name>
    <version_id>1.0</version_id>
    <local_identifier>Flat_Field_Correction</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The Flat_Field_Correction class specifies how flat-field correction 
      was performed on this image. This can be done either algorithmically, using a 
      Radial_Flat_Field_Correction, or using a Flat_Field_File.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>Radial_Flat_Field_Function</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Flat_Field_File</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Flat_Field_File -->
  <DD_Class>
    <name>Flat_Field_File</name>
    <version_id>1.0</version_id>
    <local_identifier>Flat_Field_File</local_identifier>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The Flat_Field_File class specifies the image used for flat field correction. 
      The image is divided by this flat field image in order to apply the flat 
      field correction (which is the opposite of Radial_Flat_Field_Function).
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>Data_Processing_File</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Focus  -->
  <DD_Class>
    <name>Focus</name>
    <version_id>1.2</version_id>
    <local_identifier>Focus</local_identifier>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The Focus class contains attributes that describe the focus or
      autofocus parameters for an observation. As a child of Commanded_Parameters, these 
      indicate the focus settings used to command the instrument. Otherwise, they indicate 
      the actual focus used by the observation.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>true</element_flag>
    <DD_Association>
      <identifier_reference>focus_mode</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>focus_position</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>focus_position_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>autofocus_step_size</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>autofocus_step_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>focus_distance</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>focus_initialization_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>minimum_focus_distance</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>best_focus_distance</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>maximum_focus_distance</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Focus_Stack  -->
  <DD_Class>
    <name>Focus_Stack</name>
    <version_id>1.2</version_id>
    <local_identifier>Focus_Stack</local_identifier>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The Focus_Stack class contains attributes that describe a set of images
      taken at different focus settings, which are often merged to create a best-focus image or 
      combined to extract range information. Focus stacks are also sometimes called ZStacks.
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>focus_stack_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>frame_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>frame_index</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>focus_merge_blending_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>focus_merge_registration_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>delta_focus_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Frame -->
  <DD_Class>
    <name>Frame</name>
    <version_id>1.1</version_id>
    <local_identifier>Frame</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Frame class contains attributes providing information specific to 
        an image frame. A frame consists of a sequence of measurements made over a specified time 
        interval, and may include measurements from different instrument modes. In the 
        context of Frame, product_flag refers to the actual image.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>frame_id</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>frame_type_name</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>product_flag</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>observation_number</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: ICER_Parameters -->
  <DD_Class>
    <name>ICER_Parameters</name>
    <version_id>1.1</version_id>
    <local_identifier>ICER_Parameters</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The ICER_Parameters class contains attributes describing onboard
        compression parameters specific to Joint Photographic Experts Group (JPEG) image compression. 
        ICER is a wavelet-based image compression file format used by the NASA Mars Rovers. ICER has 
        both lossy and lossless compression modes.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>wavelet_filter</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>icer_quality</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>decomposition_stages</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>segment_count</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Image_Compression_Segment</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Illumination -->
  <DD_Class>
    <name>Illumination</name>
    <version_id>1.0</version_id>
    <local_identifier>Illumination</local_identifier>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition> The Illumination class provides attributes describing the illumination sources used 
      to illuminate the imaging target.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>pds.name</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>illumination_mode</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>LED_Illumination_Source</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Illumination_Source -->
  <DD_Class>
    <name>LED_Illumination_Source</name>
    <version_id>1.0</version_id>
    <local_identifier>LED_Illumination_Source</local_identifier>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The LED_Illumination_Source class provides attributes describing an individual 
      LED used to illuminate an imaging target.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>pds.name</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>pds.description</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>illumination_state</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>illumination_wavelength</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Image_Compression_Segment -->
  <DD_Class>
    <name>Image_Compression_Segment</name>
    <version_id>1.0</version_id>
    <local_identifier>Image_Compression_Segment</local_identifier>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition> The Image_Compression_Segment class provides attributes describing each segment into which data was
        partitioned for error containment purposes as part of the compression process. </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>segment_number</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>first_line</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>first_sample</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>lines</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>samples</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>segment_quality</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>segment_status</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>segment_corrupted_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>missing_pixel_count</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Instrument_State -->
  <DD_Class>
    <name>Instrument_State</name>
    <version_id>1.1</version_id>
    <local_identifier>Instrument_State</local_identifier>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition>The Instrument_State class contains classes providing the values of
        any dynamic physical or operating characteristics of the imaging instruments.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>true</element_flag>
    <DD_Association>
        <identifier_reference>Device_Component_States</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Device_Currents</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Device_Motor_Counts</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Device_Temperatures</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Device_Voltages</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: ISO -->
  <DD_Class>
    <name>ISO</name>
    <version_id>1.0</version_id>
    <local_identifier>ISO</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The ISO Class contains the iso_number and iso_mode_id attributes.
      This class is added to support more commercial off-the-shelf (COTS) cameras or
      instruments which typically use this value to specify a setting for the 
      instrument's sensitivty to light. If is often analogous to gain.
      
      ISO Sensitivity is a standard set by the International Organization for 
      Standardization (ISO). A lower ISO value means less sensitivity to light, 
      while a higher ISO means more sensitivity. Values defined here should 
      generally conform to the ISO standard 12232:2019</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>true</element_flag>
    <DD_Association>
      <identifier_reference>iso_number</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>iso_mode_id</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: JPEG_Parameters -->
  <DD_Class>
    <name>JPEG_Parameters</name>
    <version_id>1.0</version_id>
    <local_identifier>JPEG_Parameters</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The JPEG_Parameters class contains attributes describing onboard
        compression parameters specific to Joint Photographic Experts Group (JPEG) image compression.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>color_subsampling_mode</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>jpeg_quality</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>jpeg_parameter</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Image_Compression_Segment</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: JPEG_Progressive_Parameters -->
  <DD_Class>
    <name>JPEG_Progressive_Parameters</name>
    <version_id>1.0</version_id>
    <local_identifier>JPEG_Progressive_Parameters</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The JPEG_Progressive_Parameters class contains attributes describing an interlaced progressive 
      JPEG format, in which data is compressed in multiple passes of progressively higher detail. This is ideal 
      for large images that will be displayed while downloading over a slow connection, allowing a reasonable 
      preview after receiving only a portion of the data.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>JPEG_Parameters</identifier_reference>
        <reference_type>parent_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>progressive_stage</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: List_Index_No_Units_Imaging -->
  <DD_Class>
    <name>List_Index_No_Units_Imaging</name>
    <version_id>1.0</version_id>
    <local_identifier>List_Index_No_Units_Imaging</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>Used when the list values have no units.
    </definition>
    <abstract_flag>true</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>XSChoice#</identifier_reference>
        <identifier_reference>sequence_number</identifier_reference>
        <identifier_reference>pds.name</identifier_reference>
        <identifier_reference>id</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>3</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>XSChoice#</identifier_reference>
        <identifier_reference>value_number</identifier_reference>
        <identifier_reference>value_string</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: LOCO_Parameters -->
  <DD_Class>
    <name>LOCO_Parameters</name>
    <version_id>1.0</version_id>
    <local_identifier>LOCO_Parameters</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The LOCO_Parameters class contains attributes describing onboard
        compression parameters specific to Low Complexity Lossless Compression (LOCO) 
        image compression, a lossless submode of ICER</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>wavelet_filter</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>missing_pixel_count</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>segment_count</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Image_Compression_Segment</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Onboard_Color_Matrix -->
  <DD_Class>
    <name>Onboard_Color_Matrix</name>
    <version_id>1.0</version_id>
    <local_identifier>Onboard_Color_Matrix</local_identifier>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The Onboard_Color_Matrix class represents a 3x3 matrix that is used onboard 
      to perform color correction. It is done after de-Bayering, as all three color bands are 
      needed for each pixel. The first three elements are multiplied by the R,G,B (respectively) 
      pixel values and summed to get the output Red pixel value. Similarly, the second three create 
      the output Green, and the last three the output Blue. If the label is not present, no correction
      was performed.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>onboard_R_r</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>onboard_R_g</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>onboard_R_b</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>onboard_G_r</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>onboard_G_g</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>onboard_G_b</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>onboard_B_r</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>onboard_B_g</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>onboard_B_b</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Onboard_Responsivity -->
  <DD_Class>
    <name>Onboard_Responsivity</name>
    <version_id>1.0</version_id>
    <local_identifier>Onboard_Responsivity</local_identifier>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The Onboard_Responsivity class specifies factors that have been applied to the R, G, and B 
      cells (respectively) of the Bayer pattern, before de-Bayering (demosaicking) takes place. The intent 
      of these is to approximately balance the filters so the de-Bayering process is not skewed, and EDR/ILT 
      products look reasonable before full radiometric or color correction is done on the ground. If these factors
      are not present, no correction was performed.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>responsivity_factor_r</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>responsivity_factor_g</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>responsivity_factor_b</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Optical_Properties -->
  <DD_Class>
    <name>Optical_Properties</name>
    <version_id>1.0</version_id>
    <local_identifier>Optical_Properties</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The Optical_Properties class describes properties of the optics used in acquiring the image.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>focal_length</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>f_number</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>zoom_position</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Pixel_Averaging_Dimensions -->
  <DD_Class>
    <name>Pixel_Averaging_Dimensions</name>
    <version_id>1.0</version_id>
    <local_identifier>Pixel_Averaging_Dimensions</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Pixel_Averaging_Dimensions class provides the height and width, in pixels, of
        the area over which pixels were averaged prior to image compression.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>height_pixels</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>width_pixels</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Pointing_Correction -->
  <DD_Class>
    <name>Pointing_Correction</name>
    <version_id>1.0</version_id>
    <local_identifier>Pointing_Correction</local_identifier>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The Pointing_Correction class contains attributes used to identify and
      describe the camera model transformations completed in order to update pointing information
      of an image or mosaic.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>Pointing_Correction_File</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Pointing_Correction_Image</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Pointing_Correction_File -->
  <DD_Class>
    <name>Pointing_Correction_File</name>
    <version_id>1.0</version_id>
    <local_identifier>Pointing_Correction_File</local_identifier>
    <submitter_name>Cristina M. De Cesare</submitter_name>
    <definition>The Pointing_Correction_File class identifies a file containing pointing
      correction information.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>Data_Processing_File</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Pointing_Correction_Image -->
  <DD_Class>
    <name>Pointing_Correction_Image</name>
    <version_id>1.0</version_id>
    <local_identifier>Pointing_Correction_Image</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Pointing_Correction_Image class contains attributes used to identify and
      describe the camera model transformations completed in order to update pointing information
      of a single image, whether alone or part of a mosaic.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>pointing_model_name</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>pointing_model_solution_id</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Pointing_Model_Parameter</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Pointing_Model_Parameter    -->
  <DD_Class>
    <name>Pointing_Model_Parameter</name>
    <version_id>1.0</version_id>
    <local_identifier>Pointing_Model_Parameter</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>The Pointing_Model_Parameter class specifies the name and value (numeric) parameters
      needed by the pointing model identified by the pointing_model_name attribute in the
      Pointing_Correction parent class. The meaning of any given parameter is defined by
      the pointing model. </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>pds.name</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>pds.value</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Radial_Flat_Field_Function -->
  <DD_Class>
    <name>Radial_Flat_Field_Function</name>
    <version_id>1.0</version_id>
    <local_identifier>Radial_Flat_Field_Function</local_identifier>
    <submitter_name>Cristina De Cesare</submitter_name>
    <definition>The Radial_Flat_Field_Function class pecifies parameters used 
      to generate a synthetic flat field using a simple radial function of the 
      form: r = (x-x_center)^2 + (y-y_center)^2 ;  
      flat_field(x,y) = 1 + r0 + r1*r + r2*r^2 + r3*r^3 . Note that x is in the 
      sample direction of the image, and y is in the line direction. The image 
      is multiplied by this function in order to perform a flat field correction 
      (which is the opposite of Flat_Field_File).
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>x_center</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>y_center</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>r0</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>r1</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>r2</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>r3</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Flat_Field_File</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Radiometric_Correction -->
  <DD_Class>
    <name>Radiometric_Correction</name>
    <version_id>1.1</version_id>
    <local_identifier>Radiometric_Correction</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The Radiometric_Correction class is a container for the type and details
        of the radiometric calibration performed on the product.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>radiometric_type</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>radiometric_zenith_scaling_factor</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>responsivity_r</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>responsivity_g</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>responsivity_b</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>responsivity_pan</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>responsivity_std</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>atmospheric_opacity</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>atmospheric_opacity_reference</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>effective_wavelength</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>iof_conversion_coefficient</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>iof_conversion_correction</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>iof_conversion_coefficient_std</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>inband_fsun</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>pds.comment</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Reference_Pixel -->
  <DD_Class>
    <name>Reference_Pixel</name>
    <version_id>1.0</version_id>
    <local_identifier>Reference_Pixel</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Describes a Reference Pixel product, which is a set of dark, non-imaging 
      pixels used to monitor electronics.
product_flag.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>download_priority</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>product_flag</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Onboard_Compression</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Histogram -->
  <DD_Class>
    <name>Histogram</name>
    <version_id>1.0</version_id>
    <local_identifier>Histogram</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Describes a Histogram product.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>download_priority</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>product_flag</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Col_Sum -->
  <DD_Class>
    <name>Col_Sum</name>
    <version_id>1.0</version_id>
    <local_identifier>Col_Sum</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Describes a Column Summation product, which is a single row containing the sum of all 
      pixels in each column of the image.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>download_priority</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>product_flag</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Row_Sum -->
  <DD_Class>
    <name>Row_Sum</name>
    <version_id>1.0</version_id>
    <local_identifier>Row_Sum</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Describes a Row Summation product, which is a single column containing the sum of all 
      pixels in each row of the image.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>download_priority</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>product_flag</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Sampling  -->
  <DD_Class>
    <name>Sampling</name>
    <version_id>1.1</version_id>
    <local_identifier>Sampling</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The Sampling class contains attributes and classes related to the sampling, scaling, companding, and 
        compression or reduction in resolution of data.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>true</element_flag>
    <DD_Association>
        <identifier_reference>crosstrack_summing</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>downtrack_summing</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>missing_pixel_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>original_sample_bits</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>sample_bits</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>sample_bit_mask</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>sampling_factor</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>saturated_pixel_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>valid_pixel_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Companding</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Shutter_Subtraction -->
  <DD_Class>
    <name>Shutter_Subtraction</name>
    <version_id>1.0</version_id>
    <local_identifier>Shutter_Subtraction</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition> The Shutter_Subtraction class specifies attributes describing the removal 
      from the image of the shutter, or fixed-pattern.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>shutter_subtraction_mode</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>exposure_duration_threshold_count</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Special_Point -->
  <DD_Class>
    <name>Special_Point</name>
    <version_id>1.0</version_id>
    <local_identifier>Special_Point</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Defines a special point on the image detector, such as the location in 
      pixel space that a co-boresighted instrument measures.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>pds.name</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>pds.description</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>special_line</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>special_sample</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!--  Class: StarPixel_Lossless_Parameters  -->
  <DD_Class>
    <name>StarPixel_Lossless_Parameters</name>
    <version_id>1.0</version_id>
    <local_identifier>StarPixel_Lossless_Parameters</local_identifier>
    <submitter_name>Shin-ya Murakami</submitter_name>
    <definition>
      The StarPixel_Lossless_Parameters class contains attributes describing onboard
      compression parameters specific to StarPixel Lossless image compression.
      StarPixel Lossless is developed based on FELICS and used by the JAXA's spacecrafts,
      Akatsuki and Hayabusa2. StarPixel Lossless is a lossless compression algorithm
      and also known as HIREW.
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>starpixel_initial_subsampling_interval</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Image_Compression_Segment</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!--  Class: StarPixel_Flexible_Parameters  -->
  <DD_Class>
    <name>StarPixel_Flexible_Parameters</name>
    <version_id>1.0</version_id>
    <local_identifier>StarPixel_Flexible_Parameters</local_identifier>
    <submitter_name>Shin-ya Murakami</submitter_name>
    <definition>
      The StarPixel_Flexible_Parameters class contains attributes describing onboard
      compression parameters specific to StarPixel Flexible image compression.
      StarPixel Flexible is developed based on StarPixel Lossless and used by the JAXA's spacecraft,
      Hayabusa2. StarPixel Flexible is a lossy compression algorithm.
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>starpixel_initial_subsampling_interval</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>starpixel_degradation</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>   
    <DD_Association>
      <identifier_reference>Image_Compression_Segment</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Subframe  -->
  <DD_Class>
    <name>Subframe</name>
    <version_id>1.1</version_id>
    <local_identifier>Subframe</local_identifier>
    <submitter_name>Elizabeth D. Rye</submitter_name>
    <definition> The Subframe class describes the position and other optional
        characteristics of an image subframe, relative to the original image. </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>true</element_flag>
    <DD_Association>
        <identifier_reference>first_line</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>first_sample</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>lines</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>samples</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>line_fov</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>sample_fov</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>pds.name</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>pds.description</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>subframe_type</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Thumbnail -->
  <DD_Class>
    <name>Thumbnail</name>
    <version_id>1.0</version_id>
    <local_identifier>Thumbnail</local_identifier>
    <submitter_name>Jordan Padams</submitter_name>
    <definition>Describes a Thumbnail product, which is a greatly reduced resolution version of the image.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
        <identifier_reference>download_priority</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>frame_id</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>frame_type_name</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>product_flag</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Onboard_Compression</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Sampling</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Subframe</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Video -->
  <DD_Class>
    <name>Video</name>
    <version_id>2.1</version_id>
    <local_identifier>Video</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The Video class contains attributes related to video 
      observations, defined as a regular time series of frames. The class can be used
      to describe a single frame within the video, or the video as a whole.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>video_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>frame_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>interframe_delay</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>pre_video_delay</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>frame_rate</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>frame_interval</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>frame_index</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>frame_source_id</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>gop_frame_index</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
      </DD_Association>
      <DD_Association>
        <identifier_reference>gop_frame_count</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
      </DD_Association>
    <DD_Association>
      <identifier_reference>gop_start_index</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>XSChoice#</identifier_reference>
      <identifier_reference>pds.Internal_Reference</identifier_reference>
      <identifier_reference>pds.External_Reference</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Spatial_Filter -->
  <DD_Class>
    <name>Spatial_Filter</name>
    <version_id>1.0</version_id>
    <local_identifier>Spatial_Filter</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The Spatial_Filter class specifies what kind of spatial 
      filtering has been done on the image. Spatial filtering looks at 
      the geometry of pixels (e.g. XYZ or range values) rather than their 
      intensity (cf. Image_Filter).</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>filter_window_line</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>  
    <DD_Association>
      <identifier_reference>filter_window_sample</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>max_filter_window_line</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>max_filter_window_sample</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>min_filter_window_line</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>min_filter_window_sample</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Tile -->
  <DD_Class>
    <name>Tile</name>
    <version_id>1.0</version_id>
    <local_identifier>Tile</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Contains parameters that describe how an image was or will be broken 
      into tiles, before reassembly into a whole. This is generally intended for cameras 
      that break up an exposure into tiles for transmission, but can also be used to 
      describe tiling done by a ground system (e.g. for display purposes) if needed. 
      Tiles need not be regular nor do they need to cover the entire area, and irregular 
      tiles may overlap. Note that the image in which this class appears is expected to 
      contain all the tiles (i.e. not just a single tile).</definition>
    <DD_Association>
        <identifier_reference>tile_number</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>1</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>tile_num_bands</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>tile_upsample_method</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>XSChoice#</identifier_reference>
      <identifier_reference>pds.Internal_Reference</identifier_reference>
      <identifier_reference>pds.Local_Internal_Reference</identifier_reference>
      <identifier_reference>pds.External_Reference</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Pixel_Averaging_Dimensions</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Subframe</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Tiling -->
  <DD_Class>
    <name>Tiling</name>
    <version_id>1.0</version_id>
    <local_identifier>Tiling</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Contains parameters that describe how an image was or will be broken 
      into tiles, before reassembly into a whole. This is generally intended for cameras 
      that break up an exposure into tiles for transmission, but can also be used to 
      describe tiling done by a ground system (e.g. for display purposes) if needed. 
      Tiles need not be regular nor do they need to cover the entire area, and irregular 
      tiles may overlap. Note that the image in which this class appears is expected to 
      contain all the tiles (i.e. not just a single tile).</definition>
    <DD_Association>
        <identifier_reference>pds.description</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>num_line_tiles</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>num_sample_tiles</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>tile_count</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>tile_lines</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>tile_samples</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>tile_type</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>tile_venue</identifier_reference>
        <reference_type>attribute_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
        <identifier_reference>Tile</identifier_reference>
        <reference_type>component_of</reference_type>
        <minimum_occurrences>0</minimum_occurrences>
        <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Image_Filter -->
  <DD_Class>
    <name>Image_Filter</name>
    <version_id>1.0</version_id>
    <local_identifier>Image_Filter</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The Image_Filter class specifies what kind of image 
      filtering has been done to the image. Image filtering looks at 
      image intensity rather the geometry of pixels (cf. Spatial_Filter).</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>filter_window_line</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>  
    <DD_Association>
      <identifier_reference>filter_window_sample</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>max_filter_window_line</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>max_filter_window_sample</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>min_filter_window_line</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>min_filter_window_sample</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: High_Dynamic_Range -->
  <DD_Class>
    <name>High_Dynamic_Range</name>
    <version_id>1.0</version_id>
    <local_identifier>High_Dynamic_Range</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies parameters related to High Dynamic Range processing, which 
      combines multiple exposures of different lengths into a single product with a 
      greater dynamic range than any of the inputs.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>true</element_flag>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>hdr_acquisition_mode</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>  
    <DD_Association>
      <identifier_reference>hdr_frame_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>hdr_clipping_threshold</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>High_Dynamic_Range_Exposure</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>*</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: High_Dynamic_Range_Exposure -->
  <DD_Class>
    <name>High_Dynamic_Range_Exposure</name>
    <version_id>1.0</version_id>
    <local_identifier>High_Dynamic_Range_Exposure</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>Specifies parameters for each individual exposure in an HDR image.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>exposure_duration</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>  
    <DD_Association>
      <identifier_reference>exposure_duration_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>  
    <DD_Association>
      <identifier_reference>exposure_time_delta</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>pds.Internal_Reference</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!-- Class: Data_Quality -->
  <DD_Class>
    <name>Data_Quality</name>
    <version_id>1.0</version_id>
    <local_identifier>Data_Quality</local_identifier>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>The Data_Quality class contain attributes which identify quality issues
      in the observation including saturated pixels, hot pixels, nonlinear pixels and
      flags for listing states for example the observation was out of focus, the pointing 
      was incorrect, the defined zoomed was not achieved, and other states listed below.
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>dq_band</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>dq_bayer_cell</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>pds.comment</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Hot_Pixel</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Saturated_Pixel</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Nonlinear_Pixel</identifier_reference>
      <reference_type>component_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>no_signal_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>above_aft_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>below_aft_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>full_well_limit_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>data_received</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>image_corrupt_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>missing_temperature_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>out_of_focus_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>saturated_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>sequence_terminated_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>wrong_filter_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>wrong_pointing_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>wrong_zoom_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>zero_value_pixels_flag</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>    
  </DD_Class>

  <!-- Class: Hot_Pixel Class for Data_Quality -->
  <DD_Class>
    <name>Hot_Pixel</name>
    <version_id>1.0</version_id>
    <local_identifier>Hot_Pixel</local_identifier>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>Specifies a  data class that describes pixels whose responsivity 
      on the sensor exceeds by some amount that of the average detector element.
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>pixel_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>  
    <DD_Association>
      <identifier_reference>threshold_factor</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>  
  </DD_Class>

  <!-- Class: Nonlinear_Pixel Class for Data_Quality -->
  <DD_Class>
    <name>Nonlinear_Pixel</name>
    <version_id>1.0</version_id>
    <local_identifier>Nonlinear_Pixel</local_identifier>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>A data class describing pixels where electronic non-linear behavior may occur.
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>pixel_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>  
    <DD_Association>
      <identifier_reference>threshold_value</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>  
  </DD_Class>


  <!-- Class: Saturated_Pixel Class for Data_Quality -->
  <DD_Class>
    <name>Saturated_Pixel</name>
    <version_id>1.0</version_id>
    <local_identifier>Saturated_Pixel</local_identifier>
    <submitter_name>Kate Crombie</submitter_name>
    <definition>A data class that describes pixels within the image have 
      reached or exceeded the maximum pixel value.
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>pixel_count</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>  
    <DD_Association>
      <identifier_reference>threshold_value</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>  
  </DD_Class>

  <!-- Class: Shutter for Detector  -->
  <DD_Class>
    <name>Shutter</name>
    <version_id>1.0</version_id>
    <local_identifier>Shutter</local_identifier>
    <submitter_name>R. Deen</submitter_name>
    <definition>Shutter is a class to hold information for shutter type of camera. 
      Currently only  "Global" or "Rolling" are allowed. Global normally exposes all 
      pixels at the same time, so the image captures a consistent view of moving objects. 
      Rolling scans across the scene, meaning each pixel is exposed at a slightly 
      different time, which can introduce distortions for rapidly moving objects. 
      This is generally a property of the camera itself and does not vary from frame to frame.</definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>shutter_type</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>readout_direction_pixel</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>readout_direction_line</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>pixel_readout_time</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>line_readout_time</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>frame_readout_time</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>


  <!-- Class: White_Balance  -->
  <DD_Class>
    <name>White_Balance</name>
    <version_id>1.0</version_id>
    <local_identifier>White_Balance</local_identifier>
    <submitter_name>Trent Hare</submitter_name>
    <definition>The White_Balance class indicates what processing was used for 
      white balance either onboard or on the ground. This class is added to support 
      more commercial off-the-shelf (COTS) cameras. The white balance for a camera tries to 
      capture the image using the correct colors in relation to the light source. 
      For COTs cameras, the white balance is usually automatically adjusted depending 
      on the light source.
    </definition>
    <abstract_flag>false</abstract_flag>
    <element_flag>false</element_flag>
    <DD_Association>
      <identifier_reference>white_balance_color_temp</identifier_reference>
      <reference_type>attribute_of</reference_type>
      <minimum_occurrences>0</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
    <DD_Association>
      <identifier_reference>Data_Processing</identifier_reference>
      <reference_type>parent_of</reference_type>
      <minimum_occurrences>1</minimum_occurrences>
      <maximum_occurrences>1</maximum_occurrences>
    </DD_Association>
  </DD_Class>

  <!--                   -->
  <!--   Classes: END    -->
  <!--                   -->


  <!-- ======================================================================== -->
  <!-- BEGIN:  Schematron Rule definitions                                      -->
  <!-- ======================================================================== -->

  <!-- START - Class child checks -->
  <DD_Rule>
    <local_identifier>imaging_child_check</local_identifier>
    <rule_context>//img:Imaging</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:imaging_child_check: img:Imaging class must contain at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>

  <!-- TODO need to make this rule handle different possible reference_type values depending on
       the context of Data_Processing_File -->
  <!--
  <DD_Rule>
    <local_identifier>internal_reference_type_check_data_correction</local_identifier>
    <rule_context>//img:Data_Processing_File/pds:Internal_Reference</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>pds:reference_type = 'data_to_data_processing_file'</rule_test>
      <rule_message>IMG:error:internal_reference_type_check_data_correction: In img:Data_Processing_File, the Internal_Reference.reference_type must be equal to 'data_to_data_processing_file'.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
    <DD_Rule>
    <local_identifier>local_reference_type_check_data_correction</local_identifier>
    <rule_context>//img:Data_Processing_File/pds:Local_Internal_Reference</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>pds:reference_type = 'data_to_data_processing_file'</rule_test>
      <rule_message>In img:Data_Processing_File, the Local_Internal_Reference.reference_type must be equal to 'data_to_data_processing_file'.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  -->
  
  <DD_Rule>
    <local_identifier>detector_child_check</local_identifier>
    <rule_context>//img:Detector</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:detector_params_child_check: img:Detector must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>

  <DD_Rule>
    <local_identifier>commanded_params_child_check</local_identifier>
    <rule_context>//img:Commanded_Parameters</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:commanded_params_child_check: img:Commanded_Parameters must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>sampling_child_check</local_identifier>
    <rule_context>//img:Sampling</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:sampling_child_check: img:Sampling must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>frame_child_check</local_identifier>
    <rule_context>//img:Frame</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:frame_child_check: img:Frame must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>subframe_child_check</local_identifier>
    <rule_context>//img:Subframe</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:subframe_child_check: img:Subframe must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>color_processing_child_check</local_identifier>
    <rule_context>//img:Color_Processing</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:color_processing_child_check: img:color must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>downsampling_child_check</local_identifier>
    <rule_context>//img:Downsampling</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:downsampling_child_check: img:Downsampling must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>exposure_child_check</local_identifier>
    <rule_context>//img:Exposure</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:exposure_child_check: img:Exposure must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>focus_child_check</local_identifier>
    <rule_context>//img:Focus</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:focus_child_check: img:Focus must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>focus_stack_child_check</local_identifier>
    <rule_context>//img:Focus_Stack</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:focus_stack_child_check: img:Focus_Stack must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>video_child_check</local_identifier>
    <rule_context>//img:Video</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:video_child_check: img:Video must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>optical_filter_child_check</local_identifier>
    <rule_context>//img:Optical_Filter</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:optical_filter_child_check: img:Optical_Filter must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>onboard_compression_child_check</local_identifier>
    <rule_context>//img:Onboard_Compression</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:onboard_compression_child_check: img:Onboard_Compression must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>jpeg_params_child_check</local_identifier>
    <rule_context>//img:JPEG_Parameters</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:jpeg_params_child_check: img:JPEG_Parameters must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>loco_params_child_check</local_identifier>
    <rule_context>//img:LOCO_Parameters</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:loco_params_child_check: img:LOCO_Parameters must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>icer_params_child_check</local_identifier>
    <rule_context>//img:ICER_Parameters</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:icer_params_child_check: img:ICER_Parameters must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>inst_state_child_check</local_identifier>
    <rule_context>//img:Instrument_State</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:inst_state_child_check: img:Instrument_State must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>

  <!-- END child checks -->
  
  <DD_Rule>
    <local_identifier>local_reference_type_check_img</local_identifier>
    <rule_context>//img:Imaging/pds:Local_Internal_Reference</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>pds:local_reference_type = 'imaging_parameters_to_image_object'</rule_test>
      <rule_message>In img:Imaging, Local_Internal_Reference.local_reference_type must be equal to 'imaging_parameters_to_image_object'.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>icer_comprs_segment_check</local_identifier>
    <rule_context>//img:ICER_Parameters</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>(count(img:Image_Compression_Segment) = img:segment_count) or (count(img:Image_Compression_Segment) = 0)</rule_test>
      <rule_message>IMG:error:icer_comprs_segment_check: img:ICER_Parameters/img:segment_count must match the number of img:Image_Compression_Segment classes.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>

  <DD_Rule>
    <local_identifier>shutter_subtraction_check</local_identifier>
    <rule_context>//img:Shutter_Subtraction</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>if (exists(img:shutter_subtraction_mode)) then (img:shutter_subtraction_mode != 'Conditional') or (img:shutter_subtraction_mode = 'Conditional' and exists(img:exposure_duration_threshold_count)) else true()</rule_test>
      <rule_message>IMG:error:shutter_subtraction_check: if img:shutter_subtraction_mode = 'Conditional', then img:exposure_duration_threshold_count must exist.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>color_filter_array_state_check</local_identifier>
    <rule_context>//img:Color_Filter_Array</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>img:color_filter_array_state = ('Encoded', 'Decoded', 'No CFA')</rule_test>
      <rule_message>IMG:error:img:color_filter_array_state_check: img:color_filter_array_state must be equal to one of the following values: 
        'Encoded', 'Decoded', 'No CFA'.
      </rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>local_reference_type_check_optical_filter</local_identifier>
    <rule_context>//img:Optical_Filter/pds:Local_Internal_Reference</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>pds:local_reference_type = 'data_to_optical_filter'</rule_test>
      <rule_message>In img:Optical_Filter, Local_Internal_Reference.local_reference_type must be equal to 'data_to_optical_filter'.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>reference_type_check_brightness_correction_image</local_identifier>
    <rule_context>img:Brightness_Correction_Image/pds:Internal_Reference</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>pds:reference_type = 'data_to_brightness_correction'</rule_test>
      <rule_message>In img:Brightness_Correction_Image, Internal_Reference.reference_type must be equal to 'data_to_brightness_correction'.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>

  <DD_Rule>
    <local_identifier>reference_type_check_detector</local_identifier>
    <rule_context>img:Detector/pds:Internal_Reference</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>pds:reference_type = 'data_to_raw_source_product'</rule_test>
      <rule_message>In img:Detector, Internal_Reference.reference_type must be equal to 'data_to_raw_source_product'.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>

  <DD_Rule>
    <local_identifier>reference_type_check_hdre</local_identifier>
    <rule_context>img:High_Dynamic_Range_Exposure/pds:Internal_Reference</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>pds:reference_type = 'data_to_raw_source_product'</rule_test>
      <rule_message>In img:High_Dynamic_Range_Exposure, Internal_Reference.reference_type must be equal to 'data_to_raw_source_product'.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>reference_type_check_tile</local_identifier>
    <rule_context>img:Tile/pds:Internal_Reference</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>pds:reference_type = 'data_to_tile_source_data'</rule_test>
      <rule_message>In img:Tile, Internal_Reference.reference_type must be equal to 'data_to_tile_source_data'.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>

  <DD_Rule>
    <local_identifier>int_reference_type_check_video</local_identifier>
    <rule_context>img:Video/pds:Internal_Reference</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>pds:reference_type = 'video_frame_to_video'</rule_test>
      <rule_message>In img:Video, Internal_Reference.reference_type must be equal to 'video_frame_to_video'.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>

  <DD_Rule>
    <local_identifier>ext_reference_type_check_video</local_identifier>
    <rule_context>img:Video/pds:External_Reference</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>pds:reference_type = 'video_frame_to_video'</rule_test>
      <rule_message>In img:Video, External_Reference.reference_type must be equal to 'video_frame_to_video'.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>starpixel_lossless_params_child_check</local_identifier>
    <rule_context>//img:StarPixel_Lossless_Parameters</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:starpixel_lossless_params_child_check: img:StarPixel_Lossless_Parameters must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>
  
  <DD_Rule>
    <local_identifier>starpixel_flexible_params_child_check</local_identifier>
    <rule_context>//img:StarPixel_Flexible_Parameters</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>count(child::*) > 0</rule_test>
      <rule_message>IMG:error:starpixel_flexible_params_child_check: img:StarPixel_Flexible_Parameters must have at least 1 attribute or class specified.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule>

  <!--DD_Rule>  ** Not needed for now
    <local_identifier>reference_type_check_onboard_compression</local_identifier>
    <rule_context>img:Onboard_Compression/pds:Internal_Reference</rule_context>
    <DD_Rule_Statement>
      <rule_type>Assert</rule_type>
      <rule_test>pds:reference_type = 'data_to_ancillary_data'</rule_test>
      <rule_message>In img:Onboard_Compression, Internal_Reference.reference_type must be equal to 'data_to_ancillary_data'.</rule_message>
    </DD_Rule_Statement>
  </DD_Rule-->

</Ingest_LDD>
