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 做相反的事情,它缩小区域。