[英]Select certain slices in 3D image
我有一个 3D 图像,我想在该图像中选择某些切片。 因此,假设它是尺寸为 100x100x40 的 3D 图像。 我想要的是为每个维度选择一定范围内的图像强度; x=[22,39], y=[17,32], z=[26,42]。 我正在考虑一个 for 循环,它遍历图像中的所有索引,并保持每个维度范围内的强度。 关于我应该如何做到这一点的任何线索?
顺便说一句,我不能使用imcrop
因为我希望我的输出图像与输入具有相同的尺寸。
编辑
我想我可以做这样的事情:
NewIndex_x = 1;
index_x = [];
for i=22:39;
index_slice_x = find(Im(i,:,:));
index_x(NewIndex_x) = index_slice_x;
NewIndex_x = NewIndex_x + 1;
end
find
不适用于某个范围,所以我认为我可以对所有 x、y 和 z 切片执行此操作,然后找到重叠索引。 我的 for 循环不起作用,关于如何在 for 循环中将数组正确附加到另一个数组的任何想法?
干杯!
不确定您是否想要基于 x、y、z 范围的子图像,然后将强度级别应用于该范围或其他内容。 下面的代码就是这样做的。 所以它首先获取子图像,然后为此设置强度级别过滤器。 如果这不是我们的目标,请添加一些说明。 希望这可以帮助。
% Sample data
im = round(rand(100,100,40)*255);
% Subimage that we want to process
xrange=22:39;
yrange=17:32;
zrange=26:39;
% Get all points from within the defined range
imnew = zeros(size(im));
imnew(xrange,yrange,zrange) = im(xrange,yrange,zrange);
% Now you can apply your intensity level filter if you want
min_intensity_level = 100;
imnew = imnew .* (imnew > min_intensity_level);
% At this point, imnew contains the points within the specified range that
% also exceed the minimum intensity level.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.