Class: DicomS::WindowTransfer

Inherits:
Transfer
  • Object
show all
Defined in:
lib/dicoms/transfer.rb

Overview

Apply window-clipping; also always apply rescale (remap)

Constant Summary

Constants inherited from Transfer

Transfer::FLOAT_MAPPING, Transfer::USE_DATA

Instance Method Summary collapse

Methods inherited from Transfer

#image, min_max_limits, #min_max_limits, #pixels, strategy

Methods included from Support

#assign_dicom_pixels, #cast_metadata, #decode_vector, #define_transfer, #dicom?, #dicom_bit_depth, #dicom_compression, #dicom_element_value, #dicom_name_pattern, #dicom_narray, #dicom_rescale_intercept, #dicom_rescale_slope, #dicom_signed?, #dicom_stored_bits, #dicom_window_center, #dicom_window_width, #encode_vector, #find_dicom_files, #keeping_path, #normalized_path, #output_file_name, #pixel_value_range, #single_dicom_metadata

Constructor Details

#initialize(options = {}) ⇒ WindowTransfer

Returns a new instance of WindowTransfer.



96
97
98
99
100
# File 'lib/dicoms/transfer.rb', line 96

def initialize(options = {})
  @center = options[:center]
  @width  = options[:width]
  super options
end

Instance Method Details

#min_max(sequence) ⇒ Object



102
103
104
105
106
# File 'lib/dicoms/transfer.rb', line 102

def min_max(sequence)
  # TODO: use options to sample/take first/take all?
  dicom = sequence.first
  data_range dicom
end

#min_max_rescaled?Boolean

Returns:

  • (Boolean)


108
109
110
# File 'lib/dicoms/transfer.rb', line 108

def min_max_rescaled?
  true
end

#processed_data(dicom, min, max) ⇒ Object



112
113
114
115
116
117
# File 'lib/dicoms/transfer.rb', line 112

def processed_data(dicom, min, max)
  center = (min + max)/2
  width = max - min
  data = dicom_narray(dicom, level: [center, width])
  map_to_output dicom, data, min, max
end