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

5

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

我遵循的步骤是:

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

enter image description here

enter image description here

正如你看到的那样,右下角的阴影与黑白图像粘在了一起。是否有一种方法只选择叶子?

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);

3
为什么要转换成灰度图?你可以转换成HSV并根据色相范围选择叶子。请参见这个答案 - Luis Mendo
@LuisMendo 我从来没有想过这个。我会尝试一下。 - zkanoca
1个回答

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);

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接