灰质面积和体积计算

16次(最近30天)
Qvna Lhyvnav
Qvna Lhyvnav 2020年4月22日
编辑: Qvna Lhyvnav2020年5月10日
你好,我现在的工作是大脑MRI图像的灰质区和体积计算。我对下面的代码有一些疑问:
%面积计算
Pixel_Numbers =总和(J (:));
DistanceinUnit = 1.796875;基于像素间距的%(单位:mm?)
DistanceinPixel =√x ^ 2 + y ^ 2);
DistancePerPixel = DistanceinUnit / DistanceinPixel;
面积= (Pixel_Numbers) * (DistancePerPixel ^ 2);是mm^2还是mm^2/像素?
%体积计算(公式正确吗?)
LengthinPixel =长度(找到(J (:) = = 1));
长度= LengthinPixel * DistanceinUnit;
体积=面积*长度;
关于像素间距的信息为1.796875\1.796875。如果你能帮我找出答案,我会很高兴的。这是图片。谢谢你!
2的评论
Qvna Lhyvnav
Qvna Lhyvnav 2020年4月24日
抱歉,这个名字很难听的图像:D不,它不是。我把新的贴在这里。
怀疑是:
  1. 我是否根据MRI图像中的像素间距信息正确定义了“DistanceinUnit = 1.796875”?
  2. 我的脚本是基于你的(空间校准脚本),但我混淆了面积单位,因为DistanceinPixel =像素;DistancePerPixel = mm /像素;面积=像素*(mm^2/像素^2)= mm^2/像素。我的定义是正确的还是遗漏了什么?我想用毫米单位来表示面积。
  3. 我也想计算体积,但我的脚本是正确的(面积x长度)?我不知道如何找到高度信息。
期待你的回复。谢谢你!

登录评论。

接受的答案

瑞安Comeau
瑞安Comeau 2020年5月6日
你好,我觉得你的形象已经被一分为二了。这意味着我们可以很好地利用regionprops函数获得区域。 //www.tianjin-qmedu.com/help/images/ref/regionprops.html。
在体积方面,您是否想要合计该区域*强度的像素数?在这种情况下,如果图像是二进制的,体积和面积将是相同的。体积=面积*高度,但高度是1,因为你的图像是二进制的。
你现在想要的最后一件事是像素到毫米?只要确定这个的转换,如果一个像素是1.796875x1.796875,我们将有一个面积=(1.796875)^2*num_pixels。
如果所有区域都是一个块,它将从regionprops返回,如果不是,则需要对其进行求和。以下是我对这个问题的逻辑:
形象= imread (“J.jpg”);
形象=重新调节(形象,0,1);%的帮助二值化
BW_im = imbinarize(图片);%参阅文档,它是通用的
hh = regionprops (BW_im, {“重心”“区域”});%的质心位置。
total_area = 0;
total_volume = 0;
身高= 1;%你的图像是二进制的,如果不是,这将逐像素改变。
%也可以参见regionprops函数来汇总像素值。
i = 1:长度(hh)
total_area = total_area + hh .Area;
total_volume = total_volume + (hh (i) .Area *高)
结束
area_in_mm = (1.796875 . ^ 2) * total_area;
希望这对你有所帮助,如果没有,请发表评论。
钢筋混凝土
3评论
Qvna Lhyvnav
Qvna Lhyvnav 2020年5月10日
我理解你对bounding box的解释,但是我不明白你为什么把hh(I). boundingbox(4)放到total_area里面。我的逻辑是这样的:
total_area = total_area + hh .Area;
total_volume = total_volume + (hh(我).Area * hh (i) .BoundingBox (3))%height是包围框的第3个元素
您想要详细说明您的代码吗?
读完之后我还有一个想法 谁能告诉我如何计算分割区域的体积? .我添加了切片厚度信息,所以代码是这样的:
形象= imread (“J.jpg”);
形象=重新调节(形象,0,1);
BW_im = imbinarize(图片);
hh = regionprops (BW_im, {“重心”“区域”});
voxel_numbers = 0;
i = 1:长度(hh)
voxel_numbers = voxel_numbers + hh .Area;
结束
Pixel_Spacing = [1.796875, 1.796875];Slice_Thickness = 4;
Volume_Per_Voxel = Pixel_Spacing(1)*Pixel_Spacing(2)* Slice_Thickness;
Volume_in_mm3 = Volume_Per_Voxel * voxel_numbers;
我的代码有意义吗?谢谢你,RC。

登录评论。

更多的答案(0)

s manbetx 845


释放

R2014b

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!