Hallo, ich bin Ramu. Dieses Mal werden wir einen Medianfilter implementieren, der Rauschen im Bild entfernt.
Ein Medianfilter ist ein Filter, der Bildrauschen glättet und entfernt. Durch Anwenden dieses Filters können Sie das gesamte Bild verschwommen erscheinen lassen.
Dieser Filter ersetzt das interessierende Pixel durch den Medianwert der peripheren Pixel.
Wie in der vorherigen Zeit kann die Filterverarbeitung nicht am Bildrand ausgeführt werden, sodass für nicht vorhandene Pixel eine 0-Auffüllverarbeitung mit 0 durchgeführt wird.
medianFilter.py
import numpy as np
import cv2
import matplotlib.pyplot as plt
def medianFilter(img,k):
w,h,c = img.shape
size = k // 2
#0 Auffüllvorgang
_img = np.zeros((w+2*size,h+2*size,c), dtype=np.float)
_img[size:size+w,size:size+h] = img.copy().astype(np.float)
dst = _img.copy()
#Filterprozess
for x in range(w):
for y in range(h):
for z in range(c):
dst[x+size,y+size,z] = np.median(_img[x:x+k,y:y+k,z])
dst = dst[size:size+w,size:size+h].astype(np.uint8)
return dst
#Bild lesen
img = cv2.imread('image.jpg')
#Medianfilter
#Zweites Argument: Filtergröße
img = medianFilter(img,15)
#Bild speichern
cv2.imwrite('result.jpg', img)
#Bildschirm
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()
Die linke Seite des Bildes ist das Eingabebild, die Bildmitte ist das Ausgabebild des vorherigen Gaußschen Filters und die rechte Seite des Bildes ist das aktuelle Ausgabebild. Sie können sehen, dass der Medianfilter das punktförmige Rauschen sauber entfernen kann. Es ist kein sehr guter Vergleich, da die Argumente unterschiedlich sind, aber der Medianfilter kann das Punktrauschen sauberer entfernen.
Wenn Sie Fragen haben, können Sie sich gerne an uns wenden. imori_imoris Github hat die offizielle Antwort. Bitte überprüfen Sie dies ebenfalls. .. Da Python ein Anfänger ist, weisen Sie bitte auf Fehler hin.
Recommended Posts