MATLAB - 如何消除图像上的阴影背景

MATLAB - How to eliminate shadowed background on an image

我正在尝试处理图片。有一张 RGB 叶子照片,我只想提取叶子本身。

我遵循的程序是

  1. 我从文件中读取图像
  2. 转换为灰度
  3. 应用 5x5 中值滤波器
  4. 转换为 BW

如您所见,右下角的阴影贴在黑白图像上。有没有办法只 select 叶子。

I = imread(files{404});

hcsc = vision.ColorSpaceConverter;        
hcsc.Conversion = 'RGB to intensity';       
Ig = step(hcsc, I);

medFilt= vision.MedianFilter([f f]);
Ig = step(medFilt, Ig);

at = vision.Autothresholder;        
Ibw = step(at, Ig);

我没有将其转换为灰度图像,而是将其转换为 HSV 并取其 V 部分。现在效果更好了。

I = imread(files{404});

I = rgb2hsv(I);

Ig = I(:,:,3);

medFilt= vision.MedianFilter([f f]);
Ig = step(medFilt, Ig);

at = vision.Autothresholder;        
Ibw = step(at, Ig);