So entfernen Sie einen Kratzer aus einem Bild mit Matlab

8

Nehmen wir an, ich habe dieses Bild dies :

Mit einem schwarzen Kratzer und ich möchte es von meinem Bild entfernen. Ich weiß, es ist Lärm. Ich habe Nachbarschaftsfilter und auch Gaussian Filter versucht aber keinen Erfolg.

    
Asp.net my life 27.12.2011, 14:07
quelle

3 Antworten

22

Wenn Sie den Ort des Scratches kennen, wird dieses Problem als Inpainting bezeichnet, und es gibt sehr ausgeklügelte Algorithmen für Das. Ein Ansatz wäre also, den Kratzer so gut wie möglich zu erkennen und dann einen Standard-Inpainting-Algorithmus zu verwenden. Ich habe mit deinem Bild in Mathematica ein wenig gespielt:

Zuerst habe ich einen Medianfilter auf das Bild angewendet. Wie Sie selbst herausgefunden haben, entfernt dies den Kratzer, aber auch eine Menge Details entfernt. Der Unterschied zwischen Median und Originalbild ist jedoch ein guter Indikator für Ihren Scratch:

Wenn ich dieses Bild mit einem manuell ausgewählten Schwellenwert binär bin, erhalte ich einen schnellen und schmutzigen Scratch-Detektor:

Wenn Sie mehr wissen, wie Ihre Kratzer aussehen, können Sie diesen Detektor sehr verbessern. z.B. Sind die Kratzer immer dunkel? Haben sie immer einen hohen Kontrast? Sind sie immer glatte Kurven, d.h. ist ihre Krümmung immer niedrig? - Jede dieser Eigenschaften kann irgendwie gemessen werden, also kombinieren Sie diese Messungen zu einem einzelnen Bild und digitalisieren das.

Eine kleine Verbesserung besteht darin, kleine Komponenten zu entfernen:

Das ist immer noch nicht perfekt, aber das Ergebnis ist gut genug, um es als Maske für das Inpainting zu verwenden:

Dies wird auch einige Details entfernen, aber die Unterschiede sind schwieriger zu erkennen.

Vollständiger Mathematica-Code:

%Vor%

BEARBEITEN:

Wenn Sie keinen Zugriff auf einen Standard-Inpainting-Algorithmus haben (wie Navier Stokes oder Telea), wäre ein schlechter Mann der Algorithmus, das median gefilterte Bild in den Regionen zu verwenden, in denen die Maske 1 ist co_de% in Matlab). Abhängig von den Bilddaten ist der Unterschied möglicherweise nicht den zusätzlichen Aufwand eines "echten" In-painting-Algorithmus wert:

    
Niki 27.12.2011, 15:01
quelle
0

Ein Filter für Avisynth und ein Plugin für VirtualDub (meine zwei Lieblingswerkzeuge zur Videobearbeitung). Es wird kaum besser als diese beiden (Sie können von ihnen lernen, wenn Sie es wirklich selbst implementieren müssen).

    
Camilo Martin 27.12.2011 15:13
quelle
0

Mein Ergebnis unter Verwendung des Medianfilters mit ImageJ

    
Juan Ospina 22.07.2015 18:53
quelle

Tags und Links