我正在编写一个MATLAB代码,用于在由静脉组成的前臂图像的选定(来自自动ROI)灰度区域上实现特定滤波器。我还上传了一个主题的前臂(在前景已经提取之后)。
基本上,我有不同方位的不同科目的前臂的近红外摄像机图像。我编写的代码提取了手臂的前景灰度图像,这给了我前臂的白色背景。我使用Sobel边缘找到边缘。我还使用find
函数找到了非零索引。我得到了行和col索引。我需要一个关于如何提取前臂两侧检测到的边缘(近10个像素)的图像(黑白边缘图像 - 也上传)。
索贝尔边缘:
前景图片
我需要提取的投资回报率图片:
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);
答案 0 :(得分:0)
从您在此处制作的蒙版图片开始:
image1=~im2bw(image,0.1);
但反转,使得背景的掩码为零,前景为非零:
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
恰恰相反,它缩小了区域。