フォルダ内のmri画像に値してアンシャープマスキングを行って,三次元配列に格納したい
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
virgo kk
am 7 Feb. 2020
Kommentiert: virgo kk
am 10 Feb. 2020
元々mriの画像を三次元に拡張してボリュームデータから等値面を表示させるプログラムを作成していたのですが,使う画像にアンシャープマスキングを行って同様の処理を行いたいです.エラーを吐いてしまってどうすればいいかわかりません.ご教授お願いします.
元のプログラム
clear; clc; close all; % 初期化
fileFolder = fullfile(pwd); % 画像の読込み (フォルダ内の数枚の断面画像)
dcmFiles = dir(fullfile(fileFolder,'*.dcm'));
numfiles = length(dcmFiles);
dcm = dicomread(dcmFiles(1).name);
grayscale = zeros(size(dcm,1),size(dcm,2),numfiles);% 三次元配列への拡張
for k = 2:numfiles
grayscale(:,:,k) = dicomread(dcmFiles(k).name); %格納
end
data = cast(grayscale,'uint8');
vol = isosurface(data, 50)%任意の輝度の値で等値面を作成
figure;
patch(vol, 'FaceColor','red', 'EdgeColor','none');
view(-40,24) % 視点の位置
daspect([1 1 0.3]) % X,Y,Z方向のアスペクト比の設定
colormap(gray); box on; camlight; lighting gouraud; % 照明等各種設定
sec = isocaps(data, 5); % 等値断面(等値面を作ったときの端の切断面)
patch(sec, 'FaceColor','interp', 'EdgeColor','none'); shg; % 等値断面の表示
作成したプログラム
clear; cl
c; close all; % 初期化
fileFolder = fullfile(pwd); % 画像の読込み (フォルダ内の数枚の断面画像)
imFiles = dir(fullfile(fileFolder,'*.bmp'));
numfiles = length(imFiles);
im = imread(imFiles(1).name);
B = imsharpen(im)
figure;
imshow(B)
sharpscale = zeros(size(B,1),size(B,2),numfiles);
for k = 2:numfiles
sharpscale(:,:,k) = imread(imFiles(k).name); %格納
sharpscale(:,:,k) = imsharpen(imFiles(k).name)
end
data = cast(sharpscale,'uint8');
vol = isosurface(data)%任意の輝度の値で等値面を作成
figure;
patch(vol, 'FaceColor','red', 'EdgeColor','none');
view(-40,24) % 視点の位置
daspect([1 1 0.3]) % x,y,z方向アスペクト比の設定
colormap(gray); box on; camlight; lighting gouraud; % 照明等各種設定
sec = isocaps(data, 5); % 等値断面(等値面を作ったときの端の切断面)
patch(sec, 'FaceColor','interp', 'EdgeColor','none'); shg; % 等値断面の表示
エラー表示が出てしまいます.
エラー: imsharpen
1 番目の入力引数 A は次のタイプのいずれかにする必要があります:
uint8, int8, uint16, int16, uint32, int32, single, double
指定されたタイプは char でした。
エラー: imsharpen>parse_inputs (line 209)
validateattributes(A,validImageTypes,{'nonsparse','real'},mfilename,'A',1);
エラー: imsharpen (line 79)
[A, radius, amount, threshold] = parse_inputs(varargin{:});
エラー: sharp (line 14)
sharpscale(:,:,k) = imsharpen(imFiles(k).name)
0 Kommentare
Akzeptierte Antwort
Akira Agata
am 7 Feb. 2020
Bearbeitet: Akira Agata
am 7 Feb. 2020
forループのなかのimsharpen関数への入力引数が、char型になっているように見えます。
たとえばforループ内の2行を以下のように変更すると、いかがでしょうか?
I = imread(imFiles(k).name); % 格納
sharpscale(:,:,k) = imsharpen(I);
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Scalar Volume Data finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!