|
大家好,小弟现在用java做一个dicom图像浏览器。
dicom文件中的各种标签数据都已经可以读取。在显示像素信息时,遇到了一点问题:
我找的图像都是OW型的。
Bits Allocated=16
Bits Stored=16
High Bit=15
window center=40
window width=400
我把每两个字节的数据放到一个int的后两个字节。再使用java中的Toolkit类,代码如下:
byte pixelData[]=new byte[fi.width * fi.height * 2];
int imageData[]=new int[fi.width * fi.height];
try{
RandomAccessFile raf=new RandomAccessFile(directory+fileName,"r");
raf.seek(fi.pixelData);
System.out.println(fi.pixelData);
raf.read(pixelData,0,fi.width * fi.height * 2);
}
catch(Exception e)
{
e.printStackTrace();
}
int currentLine=0;
int k=0;
for(int j=0;j<fi.height;j++)
{
for(int i=0;i<fi.width;i++)
{
int intdata=((int)pixelData[2*k])<<8;
intdata=intdata | (int)pixelData[2*k+1];
imageData[fi.width * currentLine + i]=intdata;
k++;
}
currentLine++;
}
image=Toolkit.getDefaultToolkit().createImage(new MemoryImageSource(fi.width,fi.height,imageData,0,fi.width));
但得到的图像是浅黄色的。不是灰度图象。我想一定是每个像素的intdata值应该先转换一下才能放到imageData数组中。
但却不知道如何转换,也不知道怎样调整窗宽窗位。
请麻烦您把代码修改一下,使其能呈现出灰度图象。
非常感谢! |
|