Frage
Ich habe eine Bildersequenz, die Tiefeninformationen darstellt, die ich gerne reinigen würde. Es gibt einige Ausreißer (Werte mit einer Intensität unter 25, für einen Bereich von 0 bis 255), die ich gerne mit einer akzeptablen Alternative füllen würde (ein Durchschnittswert, der in diesem bestimmten Bereich lokalisiert ist, könnte eine gute Schätzung sein).Ausreißer aus einem Graustufenbild entfernen
Kann jemand einen einfachen Weg sehen, dies zu tun? Ich habe versucht, einen Medianfilter (Filtergröße 10) zu verwenden, der die unerwünschten Werte durch NaN ersetzt, aber es hat die Situation verschlechtert, die stattdessen verbessert wird, indem man sie durch einen allgemeinen Durchschnittswert ersetzt.
P. S. Jemand hat vorgeschlagen, mich bereits eine schnelle Wavelet-Rekonstruktion verwenden, aber ich würde nicht wirklich wissen, wo ich anfangen soll ...
implementierte Lösung (bisher)
Die Lösung, die ich umgesetzt (vor dem Lesen über inpaint_nans
vorgeschlagen von tmpearce) ist:
- kopieren Sie das ursprüngliche Bild;
- Füllen der ungültigen Pixel mit einem allgemeinen Durchschnittswert;
- Verwenden Sie eine kreisförmige Scheibe von Ray 10 für die Unschärfe;
- ersetzt die ungültigen Werte im Originalbild mit dem, was ich von Punkt bekam 3.
- Lauf ein Medianfilter der Größe 10.
img2 = img;
img2(img < .005) = mean(img(:));
H = fspecial('disk',10);
img3 = imfilter(img2,H,'symmetric');
img4 = img;
img4(img < .3) = img3(img < .3);
filterSize = 10;
padopt = {'zeros','indexed','symmetric'};
IMG = medfilt2(img4, [1 1]*filterSize, padopt{p});
meine Gedanken genau, nur 20 Sekunden zu spät. +1 – bla