C++Guns – RoboBlog

14.02.2011

OpenCV death (hot) Pixel im Bild entfernen

Filed under: Allgemein — Tags: , — Thomas @ 14:02

Da meine ca. 11 Jahre alte Webcam mitlerweile ein paar kaputte Pixel hat, die einfach nur weiß sind, habe ich mir überlegt was man dagegen tun kann. Eine Möglichkeit wäre, die Pixel zu erkennen und durch den Median der umliegenden Pixel zu ersetzten.

Um die Pixel zu erkennen macht man einfach ein paar Aufnahmen im dunkeln (oder hält die Hand vor die Kamera). Die kaputten Pixel heben sich deutlich vom Mittelwert ab. Anschliessend kann man das Bild binarisieren. Eine brauchbare Schwelle ist Mittelwert + 3 * Standardabweichung. Dann kommen wirklich nur Ausreisser durch. Anschliessend werden diese Pixel im original Bild durch ihren Median ersetzt.

Die Umsetzung in OpenCV ist etwas eklig. Es müssen mehrere Zwischenbilder erstellt werden. Und vorallem akzeptiert die Filterfunktion keine Masken. Es kann also nur auf das gesammte Bild der Median angewand werden. Wenn man aber anschliessend alle nicht-kaputten Pixel wieder zurück kopiert, ist das Resulatat das selbe.

hotPixelRemoval

Code gibts leider keinen, weil zu unschön von mir umgesetzt. Werde mich demnächst mal mit OpenCV Version 2 beschäftigen. In der Hoffnung, dass man dort das ganze schöner umsetzten kann.

1 Comment

  1. Hast du es schon mit: cvInpaint() probiert? Ist zwar besser geeignet für einzelne Bilder aber vielleicht lässt es sich auch für bewegte Bilder umzusetzen.

    Comment by Päde — 25.11.2011 @ 13:11

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress