Hallo, ich bin Ramu. Dieses Mal implementieren wir das Max-Pooling, bei dem der Maximalwert im Bereich als repräsentativer Wert verwendet wird, unter den Pooling-Prozessen, die das Bild in Raster unterteilen.
Das zuletzt erläuterte Pooling ist ein Prozess, bei dem ein Bild in einen Bereich fester Länge unterteilt und alle Werte in diesem Bereich in einen bestimmten Wert umgewandelt werden. Durch Anwenden dieser Verarbeitung wird das Bild zu einem Mosaik. Maximales Pooling füllt den Bereich mit dem maximalen Pixelwert im Bereich. Der einzige Unterschied zwischen durchschnittlichem Pooling und maximalem Pooling besteht darin, ob der Durchschnittswert oder der Maximalwert verwendet werden soll.
maxPooling.py
import numpy as np
import cv2
import matplotlib.pyplot as plt
def maxPooling(img,k):
dst = img.copy()
w,h,c = img.shape
#Länge vom mittleren Pixel bis zu beiden Pixelenden
size = k // 2
#Pooling-Prozess
for x in range(size, w, k):
for y in range(size, h, k):
dst[x-size:x+size,y-size:y+size,0] = np.max(img[x-size:x+size,y-size:y+size,0])
dst[x-size:x+size,y-size:y+size,1] = np.max(img[x-size:x+size,y-size:y+size,1])
dst[x-size:x+size,y-size:y+size,2] = np.max(img[x-size:x+size,y-size:y+size,2])
return dst
#Bild lesen
img = cv2.imread('image.jpg')
#Max Pooling
#Das zweite Argument ist die Flächenlänge
img = maxPooling(img,40)
#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 vorherige durchschnittliche Pooling und die rechte Seite des Bildes ist das Ausgabebild dieser Zeit. Sie können sehen, dass das Bild wie ein Mosaik aussieht. Außerdem ist das gesamte Bild heller als das durchschnittliche Pooling, da der Maximalwert bei hoher Helligkeit verwendet wird.
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