MATLAB 中的感兴趣区域提取
Region of interest extraction in MATLAB
我正在编写一个 MATLAB 代码,以在由静脉组成的前臂图像的选定(来自自动 ROI)灰度区域上实施特定过滤器。我还上传了一个主题的前臂(前景提取后)。
基本上,我有不同方向的不同对象前臂的 NIR 相机图像。我编写了提取手臂前景灰度图像的代码,它为我提供了前臂的白色背景。我使用 Sobel edge 来寻找边缘。我还使用 find
函数找到了非零索引。我得到了行和列索引。我需要了解如何提取前臂两侧检测到的边缘内部(近 10 像素)的图像(黑白边缘图像 - 也已上传)。
索贝尔边:
前景图片:
我需要提取的ROI图像:
clear all
close all
clc
image= rgb2gray(imread('Subj1.jpg'));
image1=~im2bw(image,0.1);
image1=im2uint8(image1);
foreground=imadd(image1,image);
imshow(foreground);
edgesmooth=medfilt2(foreground);
sobeledge= edge(edgesmooth,'sobel');
sobeledge=im2uint8(sobeledge);
figure
imshow(sobeledge);
[col,row]=find(sobeledge~=0);
从您在此处制作的蒙版图像开始:
image1=~im2bw(image,0.1);
但反转,这样背景的掩码为零,前景的掩码为 non-zero:
image1 = im2bw(image,0.1);
你可以使用imdilate
将其展开固定距离:
se = strel('disk',20); % This will extend by 20/2=10 pixels
image2 = imdilate(image1,se);
image2
类似于 image1
,但在所有方向上扩展了 10 个像素。
imerode
做相反的事情,它缩小区域。
我正在编写一个 MATLAB 代码,以在由静脉组成的前臂图像的选定(来自自动 ROI)灰度区域上实施特定过滤器。我还上传了一个主题的前臂(前景提取后)。
基本上,我有不同方向的不同对象前臂的 NIR 相机图像。我编写了提取手臂前景灰度图像的代码,它为我提供了前臂的白色背景。我使用 Sobel edge 来寻找边缘。我还使用 find
函数找到了非零索引。我得到了行和列索引。我需要了解如何提取前臂两侧检测到的边缘内部(近 10 像素)的图像(黑白边缘图像 - 也已上传)。
索贝尔边:
前景图片:
我需要提取的ROI图像:
clear all
close all
clc
image= rgb2gray(imread('Subj1.jpg'));
image1=~im2bw(image,0.1);
image1=im2uint8(image1);
foreground=imadd(image1,image);
imshow(foreground);
edgesmooth=medfilt2(foreground);
sobeledge= edge(edgesmooth,'sobel');
sobeledge=im2uint8(sobeledge);
figure
imshow(sobeledge);
[col,row]=find(sobeledge~=0);
从您在此处制作的蒙版图像开始:
image1=~im2bw(image,0.1);
但反转,这样背景的掩码为零,前景的掩码为 non-zero:
image1 = im2bw(image,0.1);
你可以使用imdilate
将其展开固定距离:
se = strel('disk',20); % This will extend by 20/2=10 pixels
image2 = imdilate(image1,se);
image2
类似于 image1
,但在所有方向上扩展了 10 个像素。
imerode
做相反的事情,它缩小区域。