2016-05-14 10 views
1

Kennt jemand eine (vorzugsweise recheneffiziente) Technik und OpenCV-Implementierung zum Erkennen und Entfernen der rot eingekreisten Bereiche? Und ein Algorithmus zur Erkennung von weniger dichtem Rauschen, wie blau eingekreist?Laub/Clutter in einem Bild filtern OpenCV

Labeled Image

Original Image

+0

Wie immer: +1 für Freihandkreise! –

Antwort

4

Vielleicht gibt es eine schöne Art und Weise, dies zu tun, aber mein erster Gedanke war, um das Bild zu blur so dass die dichten Bereiche grau geworden leichter als als die weniger dicht besiedelten Gebieten:

enter image description here

Dann binary threshold es Ihre Maske zu erhalten:

enter image description here

Welche Sie invertieren/multiplizieren usw. mit dem Original:

enter image description here

Das in Photoshop als Proof of Concept durchgeführt wurde, offensichtlich mit den Parametern einige Herumspielen zu tun, aber Hey, das ist für dich!

Ich bin 99.9999% sicher, openCV wird in der Lage sein, all dies zu tun.

+1

Ah, ich hatte die Unschärfe-Idee früher ohne Erfolg ausprobiert, aber es war wahrscheinlich, weil ich keine binäre Schwellwertbildung machte. Ich werde es versuchen! –

+0

@SullyChen, Ein weiteres nützliches Werkzeug, um die Maske zu reinigen, könnten die [erode and dilate] (http://docs.opencv.org/2.4/doc/tutorials/imgproc/erosion_dilatation/erosion_dilatation.html) Funktionen sein. Aber benutze sie mit Vorsicht. es ist oft besser, den Nutzen der Unschärfe und der Schwellenwertbildung * zuerst * zu maximieren. –

+0

Funktioniert gut, danke! –