在matlab中从图像中删除对象

时间:2014-05-22 13:24:34

标签: matlab image-processing

我正试图从乳房X线照片图像中去除胸肌。我通过将其转换为二进制文件来执行以下操作:

img2=img<150;
imclearborder(img2); %since the pectoral muscle is usually at the border of the image 

这可以从图像中去除胸肌。但我现在需要将没有胸肌的结果图像转换回灰度。有人可以告诉我如何做到这一点吗?

original image

Img with pectoral muscle img with pectoral muscle removed

第一张图片显示乳房X线照片的二进制版本,左上角有胸肌。第二幅图像显示去除了胸肌的二值图像。我需要将此图像转换回灰度。

我尝试将原始图像与生成的二进制图像相乘但我得到了这个:

multiplied image

1 个答案:

答案 0 :(得分:1)

尝试

img2 = img < 150;
img3 = imclearborder(img2);
Result = img3 - img2; 

所以你的肌肉现在是负值,你只需再次达到阈值

Result(Result > -1) = 1; 
Result(Result < 0) = 0; 

或者只是通过这样做,这就足够了,因为差异将是-1,类似的将是0。

Result = Result + 1;

你有一个新的面具。最后,您可以在原始图像上使用它。

Final = uint8(Result).*img;