首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用二进制掩码提取感兴趣区域

如何利用二进制掩码提取感兴趣区域
EN

Stack Overflow用户
提问于 2014-11-11 23:06:11
回答 2查看 4.5K关注 0票数 3

我有一个原始的胸部X射线图像(orig.jpg).我用ITK手工分割了这个二进制掩码图像(bmask.jpg):

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

代码语言:javascript
复制
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“值,因此图像在肺区域内的肺边界附近有一些黑点。另外,在所得到的图像中,肺边界有一个锯齿状的图案,而不是像二元掩模那样平滑的图案。我怎样才能解决这些问题?有人能帮帮我吗?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-12 00:40:36

我猜你的问题是因为你的jpg面具不是真正的二值图像。使用jpg存储二进制图像不是很好的想法,因为由于jpegs的压缩性质,您的掩膜将稍微偏离二值图像,特别是在边缘。

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

代码语言:javascript
复制
Ibw = im2bw(rgb2gray(imread('mask.jpg')));

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

希望这能有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2021-06-08 19:00:43

代码语言:javascript
复制
clear all;
clc;
IR=imread('orig.jpg');
im=imread('bmask.jpg'); %binary image
ROI = IR;
ROI(im == 0) = 0;
figure;
imshow(ROI);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26876290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档