使用 DICOM 文件的直方图?
A histogram using a DICOM file?
我正在尝试从 DICOM 文件中制作直方图,但对于我的一生,我仍然无法弄清楚为什么我得到的索引值为负值。我已经转置了图像,但索引仍然是负数,我不确定自己做错了什么。对于文件大小、header、深度和宽度,这些值应该都是正确的,我正在尝试处理它的程序是 MATLAB。
clear
fpointer=fopen('PIG_CT','r');
fseek(fpointer,980,'bof');
img=zeros(512,512);
img(:)=fread(fpointer,(512*512),'short');
img=transpose(img);
depth = 16;
width = depth/64;
fmax = max(max(img));
fmin = min(min(img));
hist64 = zeros(64,1);
for i = 1:512
for j = 1:512
rho = img(i,j);
b64 = floor(rho/width+1)+1;
hist64(b64,1)= hist64(b64,1)+1;
end
end
bar(hist64)
错误:试图访问 hist64(-4094,1);索引必须是正整数或逻辑值。
我也使用的方程是:
Bin 宽度 =(图像深度)/(Bin 数)
我不熟悉 MATLAB,但看起来你只是从特定的搜索点读取文件。使用 DICOM 工具包将确保您获得实际的像素数据属性条目手处理您可能 运行 进入的任何编码。
此外,检查您的 DICOM reader 是否正在应用重新缩放斜率和截距。通常这会将 CT 图像转换为具有负值的 Hounsfield 单位(虽然 -4094 似乎有点多,因为空气是 -1000)。
我正在尝试从 DICOM 文件中制作直方图,但对于我的一生,我仍然无法弄清楚为什么我得到的索引值为负值。我已经转置了图像,但索引仍然是负数,我不确定自己做错了什么。对于文件大小、header、深度和宽度,这些值应该都是正确的,我正在尝试处理它的程序是 MATLAB。
clear
fpointer=fopen('PIG_CT','r');
fseek(fpointer,980,'bof');
img=zeros(512,512);
img(:)=fread(fpointer,(512*512),'short');
img=transpose(img);
depth = 16;
width = depth/64;
fmax = max(max(img));
fmin = min(min(img));
hist64 = zeros(64,1);
for i = 1:512
for j = 1:512
rho = img(i,j);
b64 = floor(rho/width+1)+1;
hist64(b64,1)= hist64(b64,1)+1;
end
end
bar(hist64)
错误:试图访问 hist64(-4094,1);索引必须是正整数或逻辑值。
我也使用的方程是:
Bin 宽度 =(图像深度)/(Bin 数)
我不熟悉 MATLAB,但看起来你只是从特定的搜索点读取文件。使用 DICOM 工具包将确保您获得实际的像素数据属性条目手处理您可能 运行 进入的任何编码。
此外,检查您的 DICOM reader 是否正在应用重新缩放斜率和截距。通常这会将 CT 图像转换为具有负值的 Hounsfield 单位(虽然 -4094 似乎有点多,因为空气是 -1000)。