Re: [討論] 圖檔顯示 (dicom與jpg)

看板MATLAB作者 (彩色筆)時間11年前 (2014/06/07 03:05), 編輯推噓3(306)
留言9則, 3人參與, 最新討論串2/3 (看更多)
安安 基本上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://www.ptt.cc/bbs/MATLAB/M.1402081547.A.01A.html

06/07 19:29, , 1F
你好 我只剛看過一遍而已 待會詳細多讀幾遍嘗試看看 希
06/07 19:29, 1F

06/07 19:29, , 2F
望能改善。 但是我的問題並不是jpg檔用dicomread讀發生
06/07 19:29, 2F

06/07 19:29, , 3F
問題。而是,我以前用imread讀取jpg沒問題;現在用
06/07 19:29, 3F

06/07 19:29, , 4F
dicomread讀取dicom卻看不清楚
06/07 19:29, 4F

06/08 00:09, , 5F
使用spm8看看?
06/08 00:09, 5F

06/09 22:45, , 6F
spm8當然是沒問題,但是我不知道SPM是怎麼讀的,因為現
06/09 22:45, 6F

06/09 22:45, , 7F
在是自己要處理那些圖,不只是要看而已
06/09 22:45, 7F

06/10 09:39, , 8F
這不是讀檔的問題,這是影像處理的問題
06/10 09:39, 8F

06/10 09:40, , 9F
你看一下讀進來後數值最大最小的變化跟精準度
06/10 09:40, 9F
文章代碼(AID): #1JaX4B0Q (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1JaX4B0Q (MATLAB)