我正在使用 matlab 的图像处理工具箱对腿部进行横截面 CT 扫描。我正在尝试做的部分工作是自动隔离任何图像中的腿,这需要移除图像中存在的任何无关物体。到目前为止,我的代码能够取出大多数对象,这适用于我的大多数图像。但是,一些图像有一个与腿齐平的对象,我的代码无法将其删除。
这是问题的一个示例:第一张图像显示原始图像,第二张图像显示“过滤”图像,在它去除了无关对象之后。但正如你所看到的,我想摆脱腿部横截面之外的东西。


我曾想过使用一些东西来检测椭圆,但不幸的是,我的一些图像不是很好的同质形状(如下图所示)。

这是我拥有的当前代码:
% Read input file
inputfile = dlmread(filename,';');
% Normalise input file (0 to 1) & show original image
I_original = mat2gray(inputfile,[min(inputfile(:)) max(inputfile(:))]);
figure; imshow(I_original)
% Detect leg
BW1 = im2bw(I_original,.2);
BW2 = imfill(BW1,'holes');
% Remove misc. objects around leg (i.e., stray objects <5000 pixels)
BW_final = bwareaopen(BW2,5000);
% Generate filtered image
I_filtered = I_original;
I_filtered(imcomplement(BW_final)) = NaN;
figure; imshow(I_filtered)
任何有关如何解决此问题的建议将不胜感激!谢谢!







