首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >背景滤波MRI图像

背景滤波MRI图像
EN

Stack Overflow用户
提问于 2013-06-18 03:03:35
回答 1查看 290关注 0票数 0

我想用形态学过滤掉我的图像,这样我就可以得到主图像了,然而,我生成的图像是不兼容的类型。我应该如何让这两个镜像类型相同来执行代码,或者我应该怎么做呢?

代码语言:javascript
复制
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)
>> 
EN

回答 1

Stack Overflow用户

发布于 2013-06-18 03:32:15

这是因为bw是一个逻辑类型。如果添加以下内容:

代码语言:javascript
复制
bw = bwareaopen(bw, 50);
bw = uint8(255*bw);

你的错误将会消失。但代码可能不会像预期的那样工作。

相反,忽略上面的内容。

试试这个:

代码语言:javascript
复制
I4 = I;
I4(bw)=0;

而不是

代码语言:javascript
复制
I4 = I - bw;

编辑:

注意到你使用的是灰度阈值,这意味着它是RGB启动的,所以上面的代码需要调整:

代码语言:javascript
复制
I4 = I;
I4(repmat(bw,[1 1 3]))=0;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17154872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档