Bildverarbeitung von Grund auf mit Python (5) Fourier-Transformation

Eine Reihe von Studien zur grundlegenden Bildverarbeitung von Grund auf neu (5).

Weitere Informationen finden Sie im OpenCV-Python-Tutorial Bilderkennungsbuch https://www.amazon.co.jp/dp/4061529129/ Es ist eine Politik, das Verständnis für die Verarbeitung zu fördern, in der gearbeitet wird.

Inhaltsverzeichnis

  1. Umwelt
  2. Fourier-Transformation
  3. Hochpassfilter
  4. Tiefpassfilter

Umgebung

Python 3.7.0 OpenCV 4.1.0 Jupyter Notebook

Fourier-Transformation

Wenden Sie 2D Discrete Fourier Transform (DFT) auf Graustufenskelettbilder an. Der weiße Bereich ist in der Mitte konzentriert und enthält viele Niederfrequenzkomponenten.

fourier.py



import cv2
import numpy as np
from matplotlib import pyplot as plt
from pylab import rcParams
%matplotlib inline
rcParams['figure.figsize'] = 25, 20

#Lesen Sie mit Graustufen
img = cv2.imread('/brabra/1.jpg',0)

#Fourier-Transformation
f = np.fft.fft2(img)
#Ändern Sie die Bildmitte auf den Ursprung
fshift = np.fft.fftshift(f)
#Da das Fourier-Konvertierungsergebnis eine komplexe Zahl ist, wird es auf einen absoluten Wert gesetzt und in ein Protokoll umgewandelt.
magnitude_spectrum = 20*np.log(np.abs(fshift))

plt.subplot(121),plt.imshow(img, cmap = 'gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(magnitude_spectrum, cmap = 'gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()
fourier.PNG

Hochpassfilter

Ein Hochpassfilter (wobei nur Hochfrequenzkomponenten übrig blieben) wurde durchgeführt. Nach der Fourier-Transformation werden die Komponenten in der Nähe des Ursprungs in einem rechteckigen Fenster gefiltert und zum Bild zurückgeführt.

highpass.py



rows, cols = img.shape
#Bildmitte
crow,ccol = int(rows/2) , int(cols/2)
#Breite in der Nähe des zu filternden Ursprungs
reg = 50

#Filter aus Fourier-Transformationsbild
fshift[crow-reg:crow+reg, ccol-reg:ccol+reg] = 0
#Rückkehr zum Bild durch inverse Fourier-Transformation
f_ishift = np.fft.ifftshift(fshift)
img_back = np.fft.ifft2(f_ishift)
img_back = np.abs(img_back)

plt.subplot(131),plt.imshow(img, cmap = 'gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(132),plt.imshow(img_back, cmap = 'gray')
plt.title('Image after HPF'), plt.xticks([]), plt.yticks([])
plt.subplot(133),plt.imshow(img_back)
plt.title('Result in JET'), plt.xticks([]), plt.yticks([])

plt.show()

ダウンロード.png

Es stellte sich heraus, dass der Rand des Skeletts erhalten blieb.

Tiefpassfilter

Ein Tiefpassfilter (wobei nur Niederfrequenzkomponenten übrig blieben) wurde durchgeführt. Nach der Fourier-Konvertierung wird sie so verarbeitet, dass nur die Nähe des Ursprungs verbleibt, und zum Bild zurückgeführt.

lowpass.py



#Fourier-Transformation mit opencv
dft = cv2.dft(np.float32(img),flags = cv2.DFT_COMPLEX_OUTPUT)
#Ursprungsverschiebung
dft_shift = np.fft.fftshift(dft)
#Absolutwert,log
magnitude_spectrum = 20*np.log(cv2.magnitude(dft_shift[:,:,0],dft_shift[:,:,1]))

rows, cols = img.shape
crow,ccol = int(rows/2) , int(cols/2)
#Breite in der Nähe des Ursprungs zu verlassen
fil2 = 20

#Maskenherstellung
mask = np.zeros((rows,cols,2),np.uint8)
mask[crow-fil2:crow+fil2, ccol-fil2:ccol+fil2] = 1

#Tragen Sie eine Maske auf den Fourier-transformierten Elefanten auf
fshift = dft_shift*mask
#Rückkehr zum Bild durch inverse Fourier-Transformation
f_ishift = np.fft.ifftshift(fshift)
img_back = cv2.idft(f_ishift)
img_back = cv2.magnitude(img_back[:,:,0],img_back[:,:,1])

plt.subplot(121),plt.imshow(img, cmap = 'gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(img_back, cmap = 'gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()

low.png

Diesmal sind die Kanten dünner geworden. Was wie eine Welle in Randnähe aussieht, ist der Klingeleffekt, der beim Filtern mit einem rechteckigen Fenster auftritt.

Zusammenfassung

Wir haben Fourier-Transformationen an Bildern, Hochpassfiltern und Tiefpassfiltern durchgeführt, um unser Verständnis zu vertiefen.

Verweise

--Bilderkennung (maschinelles Lernen professionelle Serie) https://www.amazon.co.jp/dp/4061529129/

Recommended Posts

Bildverarbeitung von Grund auf mit Python (5) Fourier-Transformation
Bildverarbeitung von Grund auf mit Python (4) Konturextraktion
Bildverarbeitung mit Python
Bildverarbeitung mit Python (Teil 2)
Bildverarbeitung mit Python (Teil 1)
Bildverarbeitung mit Python (3)
[Python] Bildverarbeitung mit Scicit-Image
Signalverarbeitung in Python (1): Fourier-Transformation
Die Bildverarbeitung mit Python 100 klopft an die Binärisierung Nr. 3
100 Bildverarbeitung mit Python Knock # 2 Graustufen
Python-Bildverarbeitung
Bildverarbeitung mit Python 100 Knock # 10 Medianfilter
100 Bildverarbeitung mit Python Knock # 8 Max Pooling
Geschäftseffizienz von Grund auf mit Python
Bildverarbeitung mit Python & OpenCV [Tonkurve]
Bildverarbeitung mit Python 100 Knock # 12 Bewegungsfilter
Bildaufnahme von der Kamera mit Python + OpenCV
Zeichnen mit Matrix-Reinventor von Python Image Processing-
Verarbeiten Sie Bilder in Python ganz einfach mit Pillow
Die Bildverarbeitung mit Python 100 führt zu einem durchschnittlichen Pooling von # 7
Leichte Bildverarbeitung mit Python x OpenCV
Bildverarbeitung mit Python 100 Knock # 9 Gauß-Filter
Bildverarbeitung mit MyHDL
Erste Python-Bildverarbeitung
Bildverarbeitung mit Python Environment Setup für Windows
Bildverarbeitung mit PIL
So kratzen Sie Bilddaten von Flickr mit Python
Lesen Sie den QR-Code aus der Bilddatei mit Python (Mac).
Bildverarbeitung mit PIL (Pillow)
"Apple-Verarbeitung" mit OpenCV3 + Python3
Bildbearbeitung mit Python OpenCV
Akustische Signalverarbeitung mit Python (2)
Sortieren von Bilddateien mit Python (2)
Sortieren von Bilddateien mit Python (3)
Tweet mit Bild in Python
Bilddateien mit Python sortieren
Bildverarbeitung mit Python (Pillow)
Bildverarbeitungssammlung in Python
Mit Skype benachrichtigen Sie mit Skype von Python!
[Lass uns mit Python spielen] Bildverarbeitung zu Monochrom und Punkten
Schneiden Sie ein Bild mit Python aus
Grundlagen der Echtzeit-Bildverarbeitung mit opencv
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
[Python] Einfache Parallelverarbeitung mit Joblib
Verwenden von Rstan aus Python mit PypeR
100 Sprachverarbeitungsklopfen mit Python (Kapitel 1)
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
Installieren Sie Python von der Quelle mit Ansible
100 Sprachverarbeitungsklopfen mit Python (Kapitel 3)
Persönliche Notizen für die Python-Bildverarbeitung
Führen Sie Aprili von Python auf Orange aus
Lassen Sie uns mit Python Image Scraping durchführen
Rufen Sie Python von Nim mit Nimpy auf
Finden Sie Bildähnlichkeit mit Python + OpenCV
Bildverarbeitung | Vorhersage von Arten aus Bildern
Laden Sie fbx aus Python mitinema4d
Sende Bild mit Python und speichere mit PHP
Erzeugung von Verlaufsbildern mit Python [1] | np.linspace
Versuchen Sie, mit Python3 eine Zeichenfolge aus einem Bild zu extrahieren