Aidemy 2020/9/23
Hallo, es ist ja! Ich bin ein Student, aber ich interessiere mich für das AI-Feld, also studiere ich an der AI-spezialisierten Schule "Aidemy". Ich möchte das hier gewonnene Wissen mit Ihnen teilen und habe es in Qiita zusammengefasst. Ich freue mich sehr, dass viele Menschen den vorherigen zusammenfassenden Artikel gelesen haben. Vielen Dank! Dies ist der dritte Beitrag zur Datenbereinigung. Freut mich, dich kennenzulernen.
Was diesmal zu lernen ・ Informationen zu Bilddaten ・ Was Sie mit OpenCV tun können (Bibliothek, die Bilder verarbeitet)
-In den Daten wird die Farbe als RGB-Daten in Rot, Grün und Blau (255,0,255 usw.) ausgedrückt. -Das Bild besteht aus einer Sammlung von Punkten __ (Pixel) __. -Die Anzahl der Farbelemente, die ein Pixel darstellen sollen, wird als Kanalnummer bezeichnet („3“, da RGB drei Farben enthält).
・ BMP kann nicht komprimiert werden und ist groß ・ JPG Hochkomprimierbar, aber nicht dekomprimierbar ・ PNG-Komprimierung und -Dekomprimierung möglich, transparente Verarbeitung möglich ・ Unterstützt GIF-Animation, transparente Verarbeitung möglich
2 OpenCV
-OpenCV ist eine Bibliothek, die beim Umgang mit Bildern verwendet wird. Importieren und verwenden Sie cv2. -Lesen Sie mit __cv2.imread ("Dateiname") __ Anzeige mit __cv2.imshow ("Fenstername", Bilddaten lesen) __ (Fenstername kann frei vergeben werden)
import cv2
#sample.Laden Sie ein Bild mit dem Dateinamen jpg
img = cv2.imread("./4050_data_cleansing_data/sample.jpg ")
#Ausgabe img mit Fensternamen als Fenster
cv2.imshow("window",img)
#(512*512)Eine Seite grün(0,255,0)Erstellen Sie ein Bild von
img = np.array([[[0,255,0]for _ in range(512)]for _ in range(512)],dtype="uint8")
#Speichern Sie img(Der Dateiname ist "grün".img」)
cv2.imwrite("green.img",img)
-Trimmen ist __ Bilddaten [Startpunkt der y-Achse: Endpunkt der y-Achse, Startpunkt der x-Achse: Endpunkt der x-Achse] __ 0 ist oben links -Resize wird mit __cv2.resize (Bilddaten, (Breite, Höhe)) __ geändert.
#Holen Sie sich die Bildgröße zum Zuschneiden(Höhe,Breite,Anzahl der Farben)
size = img.shape #(1000,667,3)
#Höhe ist 1/2, Breite 1/Auf 3 trimmen (Startpunkt nicht angeben, teilen, damit kein Rest entsteht)
new_img=img[:size[0]//2,:size[1]//3]
#Größe auf doppelte Höhe und dreifache Breite angepasst
new_img=cv2.resize(new_img,(new_img.shape[0]*2,new_img.shape[1]*3))
-Die Drehung des Bildes erfordert eine Transformation, die als affine Transformation bezeichnet wird, und die Transformationsmatrix muss erhalten werden.
-Invertieren erfolgt mit __cv2.flip (image, flipCode) __. Wenn für das zweite Argument "0" angegeben wird, wird es vertikal gespiegelt, wenn eine positive Zahl angegeben wird, wird es horizontal gespiegelt, und wenn eine negative Zahl angegeben wird, wird es vertikal und horizontal gespiegelt.
#Holen Sie sich die Transformationsmatrix(Bei 2-facher Vergrößerung um 90 Grad drehen)
mat=cv2.getRotationMatrix(tuple(np.array([img.shape[1],img.shape[0]])/2),90,2.0)
#Eigentlich drehen
cv2.warpAffine(img,mat,img.shape[::-1][1:3])
-Farbeninversion kann auch durchgeführt werden, indem jedes Pixel nacheinander herausgenommen und der Wert x auf "255-x" gesetzt wird. Sie können es einfach mit __cv2.bitwise_not (Bild) __ umdrehen.
#Img Farbraum in Lab geändert
c_img=cv2.cvtColor(img,cv2.COLOR_BGR2LAB)
#Img Farbe umkehren
r_img=cv2.bitwise_not(img)
#Schwellenwert 127, Maximalwert 255, Typ ist cv2.THRESH_TOZERO(0 unter dem Schwellenwert, keine Änderung über dem Schwellenwert)
new_img=cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
-Wenn ein Schwarzweißmaskenbild separat erstellt und mit der Funktion cv2.bitwise_and () mit dem Originalbild kombiniert wird, wird nur der weiße Teil des Maskenbilds vom Originalbild ausgegeben. Dies wird als "Maskierung" bezeichnet. -__ Cv2.bitwise_and (Originalbild 1, Originalbild 2 (beim Maskieren verwendet), Maske = Schwarzweißbild für Maske) __
#Lesen Sie das Maskenbild (Schwarzweißbild mit 1 Kanal) und ändern Sie die Größe, um die gleiche Größe zu erzielen.
mask=cv2.imread("./4050_cleansing_data/mask.png ", 0)
mask=cv2.resize(mask,(img.shape[1],img.shape[0]))
#Maske
cv2.bitwise_and(img,img,mask=mask)
#(51*51)Verwischen
new_img=cv2.GaussianBlur(img,(51,51),0)
・ Verwenden Sie __cv2.fastNlMeansDenoisingColored (Bild) __. Wenn es sich nicht um ein Farbbild handelt, kann der Funktionsname "Farbig" weggelassen werden. (Nl Means bezieht sich auf einen Rauschentfernungsfilter namens Non-Local Means Filter. Entrauschen bedeutet Rauschentfernung.)
new_img=cv2.fastNlMeansDenoisingColored(img)
-Eine andere Methode der Rauschverarbeitung besteht darin, das Bild einmal zu verkleinern und dann wieder zu erweitern. Diese Methode wird häufig zur Rauschentfernung "Schwellenwertverarbeitung" verwendet. -Erweiterung mit __cv2.dilate (Bild, Filter) __, Vertrag mit __cv2.erode (Bild, Filter) __.
#Schwellenwertverarbeitung von img
new_img=cv2.threshold(img,127,255,cv2.THRESH_BYNARY)
#Filterdefinition
filter=np.array([[0,1,0],[1,0,1],[0,1,0]],np.uint8)
#Schrumpfen und erweitern
new_img=cv2.erode(new_img,filter)
new_img=cv2.dilate(new_img,filter)
-Bilddaten werden von OpenCV verarbeitet. -In OpenCV können Sie Bilder mit __imread () __ lesen, Bilder mit __imshow () __ ausgeben, die Größe mit __resize () __ ändern, mit __flip () __ invertieren und Farben mit ** bitwise_not ** invertieren. Darüber hinaus können Sie Bilder erstellen, zuschneiden und drehen.
Recommended Posts