Могут ли сдвигаться единицы Хаунсфилда? - PullRequest
4 голосов
/ 18 июня 2019

Я работаю над некоторыми сканированиями грудной клетки из базы данных LIDC, я пытаюсь применить к ним итеративное (оптимальное) пороговое значение, чтобы извлечь область легких. Многие исследователи используют начальный порог (или около -500), хотя они используют одну и ту же базу данных. Я цитирую

Значения HU в каждом диапазоне сканирования легких КТ от +2000 до -2000HU. Область легких представляет собой область низкой плотности в диапазоне от -1000 до -450HU, которая называется областью без тела.

Я использую Matlab для этой цели, мои сканы имеют разные диапазоны, и проблема в том, что ни один из них не имеет область легких в диапазоне (от -1000 до -450HU) (или, по крайней мере, насколько я знаю) все диапазоны областей находятся в диапазоне от 0 и выше , за исключением области обода (области, создаваемой сканером).

Как я могу сделать так, чтобы у этих сканов были нормальные диапазоны (смещение единиц поля hounsfield или что-то еще), чтобы я мог нормально работать с окном легких (ширина 1500 и центр -500)?

Пример сканирования: Вот фрагмент Dicom со свойствами ниже:

  • Центр вдов: -600
  • Ширина окна: 1600
  • Пересечение Масштабирования: -1024
  • минимальное значение: -1024
  • максимальное значение: + 4095

Я использую функцию dicomreadVolume для чтения сканов:

% Read the scan volume: (the result will be in 4D )
[V,s,d] = dicomreadVolume(fullfile('scan folder...'));

% Convert into 3D:
V2 = squeeze(V);

% display the slice number 83
imtool(V2(:, :, 83));

enter image description here enter image description here

1 Ответ

2 голосов
/ 19 июня 2019

Глядя на гистограммы, кажется, что функция dicomreadVolume () не учитывает Rescale Slope и Rescale Intercept. Я полагаю, что пиксельное представление (0028, 0103) изображения равно 0 (= целое число без знака).

Так что на самом деле вы не имеете дело с HU в Matlab, вы скорее имеете дело с необработанными значениями пикселей. Преобразование в HU достигается путем применения линейного преобразования к каждому пикселю. Линейное преобразование определяется пересечением перемасштабирования (0028,1052) и изменением угла наклона (0028,1053):

<pixel value in HU> := RescaleIntercept + RescaleSlope * <untransformed pixel value> 

Я бы настоятельно рекомендовал пойти по этому пути, а не сдвигать диапазон на какое-то случайное значение, полученное из одного конкретного изображения. Это потому, что HU действительны для всех изображений сканирования.

...