2015-06-15 7 views
5

Ich versuche ein Bild zu verarbeiten. Es gibt eine RGB-Blattfotografie und ich möchte nur das Blatt selbst ausziehen.MATLAB - Wie Schatten Hintergrund auf einem Bild zu beseitigen

Das Verfahren Ich folge ist

  1. I Bild aus der Datei
  2. Convert lesen in Graustufen
  3. 5x5 Medianfilter
  4. Convert Bewerben

enter image description here

BW enter image description here

Wie Sie sehen, bleibt der Schatten in der rechten unteren Ecke an dem BW-Bild haften. Gibt es eine Methode, um nur das Blatt auszuwählen?

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

Warum wollen Sie in Graustufen umwandeln? Sie könnten vielleicht zu HSV konvertieren und das Blatt basierend auf einem Farbtonbereich auswählen. Siehe [diese Antwort] (http://stackoverflow.com/a/4064205/2586922) –

+0

@LuisMendo Ich habe das nie gedacht. Ich werde es versuchen. – zkanoca

Antwort

1

Statt Graustufenbild umzuwandeln, ich wandeln es in HSV und nehmen seine V Teil. Es ergibt sich jetzt besser.

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