Re: [讨论] 图档显示 (dicom与jpg)

楼主: jack10313 (彩色笔)   2014-06-07 03:05:44
安安
基本上dicom格式与jpg or bmp格式不相同
我猜测档头以及资料写入的方式不一样
所以你直接用dicomread读jpg稳挂
建议你先把jpg转成dicom的dcm档
然后就可以用matlab的dicomread去读取
我是用XMedCon从Bmp转dcm
过程如下
24位元bmp的档头资讯是54bit,颜色RGB
读出来会上下左右颠倒,flip一下
把该有的imformation写进去
我不是医学系,所以我乱写一通
就可以转dcm,successfully
这是我做出来的


MATLAB读取dcm
也没什么了不起,因为是matlab内建程式码
=======================================
[X, map] = dicomread('img.dcm');
montage(X, map, 'Size', [2 5]);
info = dicominfo('img.dcm');
Y = dicomread(info);
figure, imshow(Y);
imcontrast;
========================================
战一场睡觉,晚安
※ 引述《potter1529 (宋代才女唱元曲)》之铭言:
: 求救各位:
: 我之前利用jpg的影像图档进行分析,用的是 X = imread(...) 函式
: 显示图用的是imshow(X) 或是 imshow(uint(X))
: 但是现在分析要改成dicom档
: 我用 X = dicomread(...)
: 然后 imshow(X)
: 出来的图与我在其他地方用肉眼看到的图有很大的差距
:
(原图)
:
(matlab读出来的样子)
: 光是肉眼看就差很多,这样完全无法知道后面做的事情是不是对的
: 因为之前处理jpg,图片的亮度是 0~255 (RGB一样是三维的0~255)
: 但是dicomread出来的阵列显示的值是 -2048 ~ 2048
: 大小变大就算了,有负值让我很困惑。
: 而且图片的分辨率如此的低,我在想是不是因为读出来的格式是int16的关系
: 2048在int16里面很低?
: 因为之前jpg档用Uint8显示就很清楚。
: 我用一些数学的方法,将这些值压缩在0~256用Uint8显示
: 或是压缩成0~1用double显示黑白画面
: 都一样光用肉眼看就跟原图有相当的差距
: 请问我使用dicomread的方式错了吗?
: 或是显示的方式不对吗?
: p.s:
: 再补上其他例子
: 左边是matlab读出来的图,右边是microdicom显示的图,我用电脑print出来的
:
作者: potter1529 (宋代才女唱元曲)   2014-06-07 19:29:00
你好 我只刚看过一遍而已 待会详细多读几遍尝试看看 希望能改善。 但是我的问题并不是jpg档用dicomread读发生问题。而是,我以前用imread读取jpg没问题;现在用dicomread读取dicom却看不清楚
楼主: jack10313 (彩色笔)   2014-06-08 00:09:00
使用spm8看看?
作者: potter1529 (宋代才女唱元曲)   2014-06-09 22:45:00
spm8当然是没问题,但是我不知道SPM是怎么读的,因为现在是自己要处理那些图,不只是要看而已
作者: shane (皇上)   2014-06-10 09:39:00
这不是读档的问题,这是影像处理的问题你看一下读进来后数值最大最小的变化跟精准度

Links booklink

Contact Us: admin [ a t ] ucptt.com