[PYTHON] Führen Sie NL-Mittel für jeden RGB-Kanal aus

Ich habe einige Vorsichtsmaßnahmen beim Entfernen von Rauschen aus Farbbildern mit NL-Means (NLM) beachtet. Als ich mit fastNLMeansDenoigingColored () von OpenCV2 das Rauschen von den Fotos von Shuzenji-Kirschblüten und Mejiro entfernte, flog die Farbe der Blütenblätter und Dauben der Kirschblüten weg.

Ich habe über die Ursache nachgedacht, aber wahrscheinlich innerhalb von fastNLMeansDenoigingColored, nachdem ich RGB in den Helligkeitswert (L) konvertiert habe, die Ähnlichkeit zwischen Patches berechnet und mit einem gemeinsamen Gewicht für alle RGB-Kanäle geglättet. Ich dachte es könnte sein. Infolgedessen ist es wahrscheinlich, dass die Farbe der Blütenblätter und Dauben bei der Berechnung der Ähnlichkeit zwischen den Flecken nicht so stark berücksichtigt wurde und die Farbe verblasste.

Daher habe ich mich gefragt, ob dieses Problem vermieden werden kann, indem NLM unabhängig auf jeden RGB-Kanal angewendet wird, und experimentiert.

fig.png

Sie können sehen, dass durch Anwenden von NLM für jeden Farbkanal Rauschen entfernt werden kann, während die Farbe von Blütenblättern und Dauben erhalten bleibt.

Der Quellcode ist unten. https://github.com/kibo35/restoration/blob/master/NLM/nlm_for_each_color.py

(Zusatz) Vielen Dank für den Hinweis, Herr ktgw0316. Wir haben bestätigt, dass der von Ihnen debuggte Code das Fading-Problem löst.

Das Bild nach der Verarbeitung mit fastNLMeansDenoigingColored schien zu verblassen, da das zweite Argument, dst, fehlte.

Recommended Posts

Führen Sie NL-Mittel für jeden RGB-Kanal aus
Schalten Sie PYTHONPATH für jede virtuelle Umgebung um