Изображения DICOM отображаются в MATLAB

Я работаю с КТ-изображениями, имеющими расширение dcom. Моя проблема в том, что когда я храню его с помощью

dicomread()

Я должен использовать '[]' в imshow() для правильного просмотра. Мне нужно сохранить его в переменной, скажем, x, и когда я просматриваю его, я использую

imshow(x)

only , чтобы он выглядел так (исходная форма) CT image

Не так

КТ-изображение

Другими словами, мне нужно сохранить настройку, выполненную imshow(image,[]) на изображении, в новое изображение x для дальнейшей обработки. Я хочу сделать это, потому что, когда я использую изображение позже, оно дает мне неправильные результаты из-за серого цвета, покрывающего изображение. Изменить: вот еще одно объяснение, чтобы показать мою проблему. Я хочу извлечь «содержимое» легких с их значениями интенсивности. Из-за проблемы, о которой я упоминал выше, я использовал выравнивание гистограммы, чтобы получить изображение ниже: < img src="https://i.stack.imgur.com/D6h2E.png" alt="введите здесь описание изображения">

Затем я разработал маску легких: введите здесь описание изображения

Используя эту маску, я попытался получить исходные значения легких, как я упоминал ранее, но из-за серого цвета, покрывающего изображение, содержимое легких исчезло: введите здесь описание изображения

даже если я просматриваю это сегментированное изображение с помощью imshow(segmentedimage,[]) , оно показывает его так:

введите здесь описание изображения

Кому нужен файл, вот он:

https://drive.google.com/file/d/1_mUVL9KNV3MTRk_kj5kiNOlEyGsrNr10/view?usp=sharing


person AAA    schedule 24.02.2018    source источник
comment
КТ имеет определенные значения серого для определенных типов тканей (плотностей). Использование выравнивания гистограммы или нормализации, как предлагается ниже, разрушает эту связь. Вам лучше использовать известные значения серого для извлечения интересующей ткани.   -  person Cris Luengo    schedule 25.02.2018


Ответы (1)


Все, что делает imshow(X,[]), это масштабирует диапазон отображения до диапазона ваших данных. В изображениях DCM часто возникают ситуации, когда диапазон данных составляет, скажем, 12 бит, а диапазон типов данных — 16 бит (например, int16).

Чтобы исправить это, все, что вам нужно сделать, это масштабировать ваши данные.

Один из способов — использовать функцию mat2gray:

I = mat2gray(X);
imshow(I);

Это нормализует ваши данные в диапазоне [0,1] как результат двойной точности с плавающей запятой.

person Alex Taylor    schedule 24.02.2018