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

时间:2015-06-15 11:00:40

标签: matlab image-processing image-segmentation matlab-cvst

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

我遵循的程序是

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

    enter image description here

    如您所见,右下角的阴影贴在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);
    

1 个答案:

答案 0 :(得分: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