I'm working on some chest scans from the LIDC database, I am trying to apply iterative (optimal) thresholding on them to extract the lung area. Many researchers use an initial threshold of (or around -500) although they use the same database. I quote
The HU values in each Lung CT scan range from +2000 to -2000HU. The lung area is a low density area ranging from -1000 to -450HU, called non-body area.
I'm using Matlab for that purpose, my scans have different ranges and the problem is, non of them has the lung area under the range of (-1000 to -450HU) (or at least as far as I know), all of the areas ranges are from 0 and above except the area of the rim (the area produced by the scan machine).
How can I make those scans have normal ranges (shift the hounsfield units or something else) for me to work normally on with a lung window of (width of 1500, and center of -500)?
Example of a scan: Here's a Dicom slice with the properties below:
- Widow Center: -600
- Window Width: 1600
- Rescale Intercept: -1024
- min value: -1024
- max value: +4095
I'm using the function dicomreadVolume to read the scans:
% 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));
x
from[310, 860]
to[-1000, -450]
, use:y = (x-310)/(860- 310)*(-450 - (-1000)) - 1000
– Rotem