作者jack10313 (彩色笔)
看板MATLAB
标题Re: [讨论] 图档显示 (dicom与jpg)
时间Sat Jun 7 03:05:44 2014
安安
基本上dicom格式与jpg or bmp格式不相同
我猜测档头以及资料写入的方式不一样
所以你直接用dicomread读jpg稳挂
建议你先把jpg转成dicom的dcm档
然後就可以用matlab的dicomread去读取
我是用XMedCon从Bmp转dcm
过程如下
24位元bmp的档头资讯是54bit,颜色RGB
读出来会上下左右颠倒,flip一下
把该有的imformation写进去
我不是医学系,所以我乱写一通
就可以转dcm,successfully
这是我做出来的
http://ppt.cc/~shi
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)
: 出来的图与我在其他地方用肉眼看到的图有很大的差距
: http://ppt.cc/G4ec (原图)
: http://ppt.cc/sMe8 (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出来的
: http://ppt.cc/5q~I
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.113.165.208
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/MATLAB/M.1402081547.A.01A.html
1F:推 potter1529:你好 我只刚看过一遍而已 待会详细多读几遍尝试看看 希 06/07 19:29
2F:→ potter1529:望能改善。 但是我的问题并不是jpg档用dicomread读发生 06/07 19:29
3F:→ potter1529:问题。而是,我以前用imread读取jpg没问题;现在用 06/07 19:29
4F:→ potter1529:dicomread读取dicom却看不清楚 06/07 19:29
5F:→ jack10313:使用spm8看看? 06/08 00:09
6F:推 potter1529:spm8当然是没问题,但是我不知道SPM是怎麽读的,因为现 06/09 22:45
7F:→ potter1529:在是自己要处理那些图,不只是要看而已 06/09 22:45
8F:推 shane:这不是读档的问题,这是影像处理的问题 06/10 09:39
9F:→ shane:你看一下读进来後数值最大最小的变化跟精准度 06/10 09:40