医学图像处理

【3】医学图像——读取和显示.his文件

2021-12-11  本文已影响0人  豚大叔的小屋

1.offset.his、pxlMask.his、Gain.his

    Offset.his图像数据类型是16bitunsignedinteger:int16

    Gain.his图像数据类型32bit,unsigned integer:int32

   .his文件的头是100字节,图像大小:1024*1024,软件amide

2.图像文件大小计算:

    a) Offset.his、PxlMask.his:16 bit unsigned integer:2个字节(Byte)

     1024*1024*2+100=2097252字节(Byte)

     2097252/1024=2048.09765625KB

b) Gain.his:32bit unsigned integer:4个字节(Byte)

    1024*1024*4+100=4194404字节(Byte)

     4194404/1024=4096.09765625KB

     备注:1024字节=1KB

3.实际图像

说明:Offset.his、bright.his、gain.his的图像灰度值都不是整体灰度值是一致的

1)offset.his

针对1024*1024的PE平板,采集offset图像都是可以满足灰度值在4000左右要求

2)bright.his:针对1024*1024的PE平板,采集bright图像都是可以满足2万-3万要求

3)gain.his:

针对1024*1024的PE平板,采用offset.his和bright.his合并成gain.his图像的灰度值大多数在6万以上

4)pxlMask.his: 用xis打开文件时,背景值为0,坏点坏线值为65535

4.读取和显示图像(opencv/c++)

Mat His16toMat8(string ImagePath)

{

const char* ImageStr = ImagePath.c_str();//文件路径

int fd = open(ImageStr, O_RDONLY);//O_RDONLY 只读模式--打开文件

int data_numb = 1024 * 1024 * sizeof(unsigned short);

char* src = new char[data_numb];

//,lseek()便是用来控制该文件的读写位置. 参数fildes 为已打开的文件描述词, 参数offset 为根据参数whence来移动读写位置的位移数

//SEEK_SET 从距文件开头offset 位移量为新的读写位置.

//文件跳过1024个字节,文件的读写位置从1024开始

lseek(fd, 100, SEEK_SET);//参数 whence 为SEEK_SET时, 参数offset 即为新的读写位置.

//开始读取文件内容

//read系统调用从文件描述符fd指向的文件中,读取count个字节到buf中。

//ssize_t read(int fd, void *buf, size_t count);

read(fd, src, data_numb);

//构造16位的mat图像---16位图像用

Mat mat(1024, 1024, CV_16U, src);

//转为为16位图像

Mat src16;

mat.convertTo(src16, CV_16U);

//16bit unsigned integer:int16 无符号整数 CV_16U - 16位无符号整数(0..65535)

//以上步骤可以省略

imshow("1", src16);

//16位转到0-1之间(即:归一化)

Mat dst;

mat.convertTo(dst, CV_64FC1, 1 / 65535.0);//其中dst为目标图, CV_32FC3为要转化的类型

waitKey();//如果没有此句,图像会加载出来成为灰色的,一直转圈圈

return dst8;

}

int main(int argc, char* argv[])

{

     string datPath = "F:\\Work In Progress\\Test.his";

    Mat src = His16toMat8(datPath);

    char saveDst[20];

    sprintf(saveDst, "F:\\Work In Progress\\Test_New %d.png", 1);

    imwrite(saveDst, src);

    system("pause");

    return 0;

}

5.读取和显示图像(matlab)

上一篇下一篇

猜你喜欢

热点阅读