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

zka*_*oca 5 matlab image-processing image-segmentation matlab-cvst

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

我遵循的程序是

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

在此输入图像描述

在此输入图像描述

如您所见,右下角的阴影会粘在BW图像上.有没有一种方法只选择叶子.

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);
Run Code Online (Sandbox Code Playgroud)

zka*_*oca 1

我没有将其转换为灰度图像,而是将其转换为 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);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述