2015-06-15 7 views
5

Я пытаюсь обработать изображение. Существует фотография листьев RGB, и я хочу только вырезать лист.MATLAB - Как устранить затененный фон на изображении

Процедура Я следую является

  1. Я прочитал изображение из файла
  2. Преобразовать в оттенки серого
  3. Применить 5x5 медианный фильтр
  4. Преобразовать в BW

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

Почему преобразовании в оттенки серого? Возможно, вы можете преобразовать в HSV и выбрать лист на основе диапазона оттенков. См. [This anwer] (http://stackoverflow.com/a/4064205/2586922) –

+0

@ LuisMendo Я никогда не думал об этом. Я попробую. – zkanoca

ответ

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

Смежные вопросы