0

モルフォロジーを使用して画像を除外して、メインの画像だけを取得したかったのですが、作成した画像は互換性のないタイプです。コードを実行するには、2 つを同じ画像タイプにする必要がありますか、または代わりに何をすべきですか?

info = dicominfo('MR000025.dcm');
>> Z = dicomread(info);
>> I=imadjust(Z,stretchlim(Z),[0 1]);
>>  figure, imshow(I)
>> background = imopen(I,strel('disk',10));
figure,imshow(background)
>> 

>> background = imopen(I,strel('disk',15));
>> figure,imshow(background)
>> figure, surf(double(background(1:8:end,1:8:end))),zlim([0 255]);
set(gca,'ydir','reverse');

>> I2 = I - background;
figure, imshow(I2)
>> I3 = imadjust(I2);
figure, imshow(I3);
>> level = graythresh(I3);
bw = im2bw(I3,level);
bw = bwareaopen(bw, 50);
figure, imshow(bw)
>> I4 = I - bw;
figure, imshow(I4)

Error using  - 
Integers can only be combined with integers of
the same class, or scalar doubles.

>> i=im2uint8(I);
>> i4=i-bw;
Error using  - 
Integers can only be combined with integers of
the same class, or scalar doubles.

>> i2=gray2ind(bw);
>> i3=i-i2;
>> figure, imshow(i3)
>> 
4

1 に答える 1

1

bw は論理型だからです。追加する場合:

bw = bwareaopen(bw, 50);
bw = uint8(255*bw);

エラーはなくなります。しかし、コードは期待どおりに機能しない可能性があります...

代わりに、上記を無視してください。

これを試して:

I4 = I;
I4(bw)=0;

それ以外の

I4 = I - bw;

編集:

graythresh を使用していることに気付きました。これは、開始するのが RGB であることを意味するため、上記を微調整する必要があります。

I4 = I;
I4(repmat(bw,[1 1 3]))=0;
于 2013-06-17T19:32:14.767 に答える