我有一个原始的胸部 X 射线图像 (orig.jpg)。我使用 ITK-SNAP 进行了手动分割,生成了这个二进制掩码图像 (bmask.jpg):

为了从背景中提取肺区域,我运行以下 MATLAB 代码:

clear all;
clc;
IR=imread('orig.jpg');
im=imread('bmask.jpg');
ROI = IR;
ROI(im == 1) = 0;
ROI(im ~= 1) = 1;
SEG = IR.*ROI;
figure;
imshow(SEG);
imwrite(SEG,'SEG.jpg');

结果图像:

我发现由于靠近肺边界的肺区域内的一些二进制掩码像素具有“1”值,因此生成的图像在肺区域内的肺边界附近有一些黑点。此外,在生成的图像中,肺边界具有锯齿形图案,而不是二元掩码那样的平滑图案。我该如何解决这些问题?任何人都可以帮助我吗?

谢谢。

最佳答案

我猜您遇到的问题是因为您的 jpg 掩码不是真正的二进制图像。使用 jpg 来存储二进制图像不是一个好主意,因为由于 jpeg 的压缩特性,您的掩码会略微偏离二进制图像,尤其是在边缘处。

要从您的 jpeg 掩码中获取真正的二进制图像,您可以尝试以下操作:

Ibw = im2bw(rgb2gray(imread('mask.jpg')));

如果这没有帮助,当你生成你的面具时,不要使用 jpeg。相反,在灰度中使用未压缩(或使用无损压缩)tiff,或者将其作为二进制 matlab 矩阵存储在文件中。

希望这可以帮助。

关于matlab - 如何使用二进制掩码提取感兴趣区域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26876290/

10-16 01:04