1

我有一个没有头文件的射线照片 .img 文件。但是,发布该文件的研究人员已经提供了有关它的信息

High resolution (2048 x 2048 matrix size, 0.175mm pixel size)
Wide density range (12bit, 4096 gray scale)
Universal image format (no header, big-endian raw data)

使用此信息,我尝试在 Matlab 中使用 fread 命令将图像读入 Matlab。

fid = fopen('image.img','r','B');
oneSlice = fread(fid, [2048 2048], '*uint8','B');
imshow(oneSlice)

但是,生成的图像显示不正确。有什么我做错了吗?有人可以建议任何不同的方法来读取这个图像文件吗?

4

2 回答 2

2

JSRT 数据库 (www.jsrt.or.jp/jsrt-db/eng.php) 的肺部 X 光片具有这种格式。我用他们测试了这段代码,它可以工作:

fid = fopen('image.img','r','b');
oneSlice = fread(fid, [2048 2048], '*uint16','b');
img = mat2gray(oneSlice, [0,4096]);
fclose(fid);
于 2014-05-19T01:17:18.660 回答
0
%%% Read image
    fid = fopen('image.img','r','b');
    oneSlice = fread(fid, [2048 2048], '*uint16','b');
    img = mat2gray(oneSlice, [0,4096]);
    fclose(fid);

%%%rotate image

    imgR = imrotate(img,270);

%%%horizontal flip image

    imgRF = flipdim(TestImgR ,2);  
于 2014-12-22T10:21:52.017 回答