如何更改binarize阈值的类型

15的观点(30天)
大家好!
可以帮我解决这个问题。我想binarize dicom图像。从我的最大像素的阈值是40%。然后我写了这个命令。
但下面的错误出现。任何人都可以帮我吗?
clc
清晰的所有
(spect地图)= dicomread (“我- 131 sphere10nisbah1”);
信息= dicominfo (“我- 131 sphere10nisbah1”);
% gp = info.SliceThickness;
spect =(紧缩(spect));% smooth3
maxx = max (max (max (spect)));
T = 3189 * 0.4;
BW = imbinarize (spect、T);
%开放的形象
imshow3D (BW)
% CC = bwconncomp (BW11);
% (r、c) = cellfun (@ (x) ind2sub(大小(BW11), x) CC.PixelIdxList, UniformOutput, 0);
T = regionprops (“表”BW,“区域”,“重心”)
错误
错误使用imbinarize
预计2号输入,阈值,这些类型之一:
双、单、uint8 uint16、uint32 uint64, int8, int16, int32, int64
相反,它的类型是表。
错误imbinarize > validateT(第268行)
validateattributes (T,{‘数字’},{‘真正的’,‘nonsparse’,“3 d”}, mfilename,‘门槛’,2);
错误imbinarize > parseInputs(第204行)
选项。T = validateT(变长度输入宗量{1}、大小(我));
错误imbinarize(第134行)
[我isNumericThreshold选项]= parseInputs(我,变长度输入宗量{:});
4评论
为副总经理
为副总经理 2021年5月4日
第一次我看到错误消息。就像我说的。您发布的代码看起来并不对应错误消息。工作区是清除
清晰的所有
在这一点上,不存在前T的实例来对这类任务:
T = 3189 * 0.4;
在这一点上,T是类“双”。这不是一个表。它不能一个表。
现在我不知道spect是什么,但如果我相信错误的论点是正确的在说问题是参数2,那么我的评论。我留给假设错误消息是由一些版本的代码你粘贴。
如果你想要任何试图进一步处理这个,你必须包括形象。,我可以运行样例dcm文件没有错误,我应该解释的预期。

登录置评。

接受的答案

Constantino教授卡洛斯Reyes-Aldasoro
我同意前面的评论,第一个T不是一个表。所以两个评论
1)不使用T值,然后一个表,使用分离变量和更好的命名,称为一个threshold_1,另table_1之类的
2)如果你想比较像素阈值以上只是试一试
BW = spect > T;
BW = spect > threshold_1;
,看看效果如何
2的评论
Constantino教授卡洛斯Reyes-Aldasoro
发生这种情况,这就是为什么它比x的名字好长,y, z, t是一个继承的时候,记忆是scarse。希望这个解决了你的问题。

登录置评。

更多的答案(0)

类别

找到更多的在图像处理和计算机视觉帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的