• 締切済み

MATLABのDICOM画像表示

いつもお世話になっております。 現在、MATLABでDICOM画像を扱って画像処理を行おうとしているのですが、MATLABでDICOM画像(unit16)を表示 A = dicomread('ファイル名.dcm'); imshow(A,[]); させた画像がImageJやDICOMviewerで表示させた画像と比べて暗く(階調数が多く)感じられ、原画像を表示することができません。 unit16に問題があると思い、unit8に変換しましたが、画像は暗い画像で、かつ、同じピクセル値に線が入った画像となってしまいました。 どうすれば原画像を表示させることができるのでしょうか? アドバイスよろしくお願いします。

みんなの回答

  • textiles
  • ベストアンサー率0% (0/0)
回答No.2

こんにちは info = dicominfo('CT.dcm'); Y = dicomread(info); figure, imshow(Y, 'DisplayRange',[]); とするとか,あとは info = dicominfo('CT.dcm'); Y = dicomread(info); figure, imshow(Y); したあとに info % セミコロン;なし と入れてdicom情報を表示させ,その中のWindowWidth(WW), WindowLength(WL)の値を参考にして caxis([WL WW/2]) % どちらが先か忘れました(汗 を入れれば, DICOMViewer と同じ画像が得られると思いますがいかがでしょう. 参考URLが入らなかったので http://www.mathworks.com/access/helpdesk/help/toolbox/images/index.html?/access/helpdesk/help/toolbox/images/dicomread.html&http://www.mathworks.com/cgi-bin/texis/webinator/search/

  • m0r1_2006
  • ベストアンサー率36% (169/464)
回答No.1

dicom 使ったことがないので,わかりかねますが, 階調がおかしいのなら, colormap も読み込んでみたらどうでしょう. [A, map] = dicomread('ファイル名.dcm'); imshow(A,map);

matlab-goo
質問者

お礼

m0r1_2006さんアドバイスありがとうございます。 参考にもう一度やってみたいと思います。

関連するQ&A

  • MATLAB 画像表示に関して

    卒業研究にてMATLABを使用しています。 MATLAB初心者です。 Aの画像とその他の画像を比べる評価実験を行う予定です。 Aの画像を細かく定義 Bの画像を細かく定義 Aの画像を表示させる 5秒たったら、画像をリセットして Bの画像を表示 画像をリセットして終了 というところまでは不格好ながらにもかけました。 これを、 A、B、C、Dの画像を細かく定義 Aの画像5秒間表示後、 リセット(真っ黒の状態に)して ランダムに(B、C、D、E)いずれかの画像を表示させる リセットして終了 という形に変えたいのですが、うまく行きません。 CDEの画像を定義した後、どのようにすればいいのでしょうか? ご教授いただきたく思います。

  • MATLABの初歩?

    最近始めた画像処理。 MathWorksから提供されたサンプルプログラム。 MATLABから画像を読み込みヒストグラムを計算しようとすると 「関数’imhist’(タイプ'unit8'の入力引数)が未定義です」 と表示されます。 ちなみに、 ・image pressing ・image Acquisition などは評価版です。 対処方法をご教授いただける方いらっしゃいますか?

  • 【MATLAB】図の重ね合わせと拡大・縮小・回転

    MATLABで、大きさと角度の違う2枚の画像を重ね合わせて比較をしたいのですが、 やり方が飲み込めません。 MATLABの「イメージのレジストレーション」を参考にしようとしたのですが、ちんぷんかんぷんで・・・ 画像を(手動で)2枚読み込んで、1枚を半透明にして重ねる までは出来たのですが、大きさや傾きを合わせられません。 >> uiopen('C:\Documents and Settings\xxx\aaa\C.jpg',1) %%画像C読み込み >> uiopen('C:\Documents and Settings\xxx\aaa\B.jpg',1) %%画像B読み込み >> imshow(C); %%画像C表示 >> hold on >> h = imshow(B); %%画像B表示 >> set(h,'AlphaData',0.5) 今のところこんな感じです; 1枚をベース画像の大きさに合わせて、傾きをそろえてから重ねあわせたいのです。 分かる方、ご回答お願いいたします。

  • MATLABのプログラムについて

    今MATLABを使っているのですが、A/D変換器のプログラムをどうやって作ればいいですが? 10bitA/D変換器なのですが。できれば、サンプリング周波数も変えたいです!!

  • MATLABについてです

    画像処理に使うMATLABについてです。 MATLABでimagescを使って、データを画像化しました。 画像化してカラーバーを表示させました。 ここからが質問です。カラーバーの値は普通にしてたらそのデータのままの値(自分の場合、光の強度)ですが、これをログにしたいです。 カラーバーの数値をログにするにはどうしたらいいのでしょうか? 簡単にできるのか、また、imagesc以外に別の何かを使うのか。 参考書を見ても、カラーバーの数値をログにするやり方はないので、詳しい方教えて下さい。 お願いします。

  • C++の画像処理について【画像のピクセル値を表示する方法】

    画像処理に関する質問です。初歩的なことかもしれませんが、ご教授お願いいたします。 開発環境はVisual C++ 2005です。 JPEGまたはBMP画像を読み込んで、その画像のピクセル値を表示するプログラムを作成したいのですが、まったくどうしてよいか判らず、行き詰っています。 これまでいろいろ試してみたのですが、読み込んだ画像をBit値に変換してしまったり(そのせいでパソコンがクラッシュしてしまいました…)、うまくいきません。 画像処理の対象となる原画像を取り込み、その原画像のピクセルの色情報を表示するためには、どのような処理を行えばよいのでしょうか? どうぞよろしくお願いします。

  • MATLABでのエッジ強度画像の出力と保存

    MATLABで画像処理を行ない,対象とする画像(添付のcell.jpg)の勾配強度画像を得たいと思っております.ただし,その保存がうまくいきません. プログラムは,下記のコードを利用しました. im = imread('C:/work/cell.jpg'); im = rgb2gray(im); %メディアンフィルタで平滑化 J = medfilt2(im); figure(1) imshow(J) %勾配強度画像を求める hy = fspecial('sobel'); hx = hy'; Iy = imfilter(double(J), hy, 'replicate'); Ix = imfilter(double(J), hx, 'replicate'); gradmag = sqrt(Ix.^2 + Iy.^2); %figure, imshow(gradmag,[]), title('Gradient magnitude (gradmag)') imshow(gradmag,[]) 上記のプログラムで正しくエッジ強度画像は出力されるのですが,問題はそれを保存するときです. 「imwrite(gradmag, 'C:/work/cell_grad.jpg','jpg')」 のように保存すると,添付ファイルのようになってしまいます. どのようにしたら解決できますでしょうか. どなたかお分かりになる方がいらっしゃいましたら,ご教示お願い致します.

  • MATLABで連続した画像の取り込み方

    1つのJPGファイルを取り込み、表示させるやり方は I = imread('sample000.jpg'); imshow(I) これででき、作業を書くと for t=1:1:10 if(t==1) A=imread('sample000.jpg'); imshow(A) hold on [xa, ya]=textread('sample01.txt','%d %d','headerlines',10); end plot(xa(t,1), ya(t,1), 'r+'); if(t==10) hold off end end ということになります。 10回ループさせるのは、sample01.txtの10行目以降の中身が10個ずつの座標だからです 以下はsample01.txtの中身を簡単に書いたものです ...         ※9行目 test coordinates  ※10行目 44 54        ※11行目 45 46 53 43 55 41 58 38 61 33 66 36 69 41 72 47 73 52        ※20行目 10         ※21行目 46 54        ※22行目 48 52 ... ... 77 51        ※31行目 10         ※32行目 47 52        ※33行目 ... ... という感じです。 で、本題ですが sample000.jpg sample001.jpg sample002.jpg ... ... など複数のjpgファイルをループを使って連続して取り込み、作業したいときは、どういうコマンドでどういうループを作ればいいでしょうか? 具体的には 1枚目のsample000.jpgファイルを読み込みhold on、sample01.txtの11行目から20行目の座標を赤い点でプロットし、最後にhold off 2枚目のsample001.jpgファイルを読み込みhold on、sample01.txtの22行目から31行目の座標を赤い点でプロットし、最後にhold off 3枚目の... というループです。 下手な説明でごめんなさい、誰かMATLABの画像処理に詳しい方がいたら応答よろしくおねがいします。

  • MATLABの射影変換についての質問です。

    MATLABの射影変換についての質問です。 1枚の画像に3×3の行列をかけて画像変換するつもりです。しかし、その画像自体は3×3ではないので、直接かけることができません。 そこで、3×3以外の画像行列に、3×3行列をかけて、変換された画像を表示する方法をお聞きしたいです。 どうぞ宜しくお願いします。

  • 画像計測ソフトで有名なImagePro(Windows用)がありますが

    画像計測ソフトで有名なImagePro(Windows用)がありますが、 DICOMフォーマットに対応していません。 ImageProと同等の機能を持ったソフトで、DICOM入力に対応した ソフトウエアはありませんでしょうか? DICOMというのは、 医療用の画像フォーマットです(CTやMRIなど)。 JPEGに変換すれば、もちろん読めるとは思うのですが、できれば 変換なしで読んでくれたほうがありがたいです。対象枚数が 半端な数ではないので・・・ 有料でオーケーです。

専門家に質問してみよう