Bagian ini membahas manipulasi dan pemrosesan gambar dasar menggunakan modul ilmiah inti NumPy dan SciPy. Beberapa operasi yang tercakup dalam tutorial ini mungkin berguna untuk jenis pemrosesan array multidimensi lainnya selain pemrosesan gambar. Secara khusus, submodul menyediakan fungsi yang beroperasi pada larik NumPy n-dimensi Show Lihat juga Untuk pemrosesan gambar lebih lanjut dan rutinitas khusus gambar, lihat tutorial , yang didedikasikan untuk modul ini Gambar = larik numerik 2-D (atau 3-D. CT, MRI, 2D + waktu; Di sini, gambar == Numpy array >>> face_memmap = np.memmap('face.raw', dtype=np.uint8, shape=(768, 1024, 3))4 Alat yang digunakan dalam tutorial ini
Tugas umum dalam pemrosesan gambar
Isi bab Menulis array ke file from scipy import misc import imageio f = misc.face() imageio.imsave('face.png', f) # uses the Image module (PIL) import matplotlib.pyplot as plt plt.imshow(f) plt.show() Membuat array numpy dari file gambar >>> from scipy import misc >>> import imageio >>> face = misc.face() >>> imageio.imsave('face.png', face) # First we need to create the PNG file >>> face = imageio.imread('face.png') >>> type(face) <class 'imageio.core.util.Array'> >>> face.shape, face.dtype ((768, 1024, 3), dtype('uint8'))_ dtype adalah uint8 untuk gambar 8-bit (0-255) Membuka file mentah (kamera, gambar 3-D) >>> face.tofile('face.raw') # Create raw file >>> face_from_raw = np.fromfile('face.raw', dtype=np.uint8) >>> face_from_raw.shape (2359296,) >>> face_from_raw.shape = (768, 1024, 3) Perlu mengetahui bentuk dan tipe gambar (cara memisahkan byte data) Untuk data besar, gunakan >>> face_memmap = np.memmap('face.raw', dtype=np.uint8, shape=(768, 1024, 3))_9 untuk pemetaan memori >>> face_memmap = np.memmap('face.raw', dtype=np.uint8, shape=(768, 1024, 3)) (data dibaca dari file, dan tidak dimuat ke dalam memori) Bekerja pada daftar file gambar >>> for i in range(10): .. im = np.random.randint(0, 256, 10000).reshape((100, 100)) .. imageio.imsave('random_%02d.png' % i, im) >>> from glob import glob >>> filelist = glob('random*.png') >>> filelist.sort() Gunakan >>> for i in range(10): .. im = np.random.randint(0, 256, 10000).reshape((100, 100)) .. imageio.imsave('random_%02d.png' % i, im) >>> from glob import glob >>> filelist = glob('random*.png') >>> filelist.sort()0 dan >>> for i in range(10): .. im = np.random.randint(0, 256, 10000).reshape((100, 100)) .. imageio.imsave('random_%02d.png' % i, im) >>> from glob import glob >>> filelist = glob('random*.png') >>> filelist.sort()1 untuk menampilkan gambar di dalam >>> for i in range(10): .. im = np.random.randint(0, 256, 10000).reshape((100, 100)) .. imageio.imsave('random_%02d.png' % i, im) >>> from glob import glob >>> filelist = glob('random*.png') >>> filelist.sort()2 >>> f = misc.face(gray=True) # retrieve a grayscale image >>> import matplotlib.pyplot as plt >>> plt.imshow(f, cmap=plt.cm.gray) <matplotlib.image.AxesImage object at 0x...> Tingkatkan kontras dengan mengatur nilai min dan maks >>> plt.imshow(f, cmap=plt.cm.gray, vmin=30, vmax=200) <matplotlib.image.AxesImage object at 0x...> >>> # Remove axes and ticks >>> plt.axis('off') (-0.5, 1023.5, 767.5, -0.5) Gambar garis kontur >>> plt.contour(f, [50, 200]) <matplotlib.contour.QuadContourSet ...> [] Untuk variasi intensitas yang halus, gunakan >>> for i in range(10): .. im = np.random.randint(0, 256, 10000).reshape((100, 100)) .. imageio.imsave('random_%02d.png' % i, im) >>> from glob import glob >>> filelist = glob('random*.png') >>> filelist.sort()3. Untuk pemeriksaan variasi intensitas yang baik, gunakan >>> for i in range(10): .. im = np.random.randint(0, 256, 10000).reshape((100, 100)) .. imageio.imsave('random_%02d.png' % i, im) >>> from glob import glob >>> filelist = glob('random*.png') >>> filelist.sort()4 >>> plt.imshow(f[320:340, 510:530], cmap=plt.cm.gray, interpolation='bilinear') <matplotlib.image.AxesImage object at 0x...> >>> plt.imshow(f[320:340, 510:530], cmap=plt.cm.gray, interpolation='nearest') <matplotlib.image.AxesImage object at 0x...> [] Lihat juga Lebih banyak metode interpolasi ada dalam contoh Matplotlib Lihat juga visualisasi 3-D. Mayavi Lihat
Gambar adalah array. menggunakan seluruh >>> face_memmap = np.memmap('face.raw', dtype=np.uint8, shape=(768, 1024, 3))5 mesin from scipy import misc import imageio f = misc.face() imageio.imsave('face.png', f) # uses the Image module (PIL) import matplotlib.pyplot as plt plt.imshow(f) plt.show()0 [] from scipy import misc import imageio f = misc.face() imageio.imsave('face.png', f) # uses the Image module (PIL) import matplotlib.pyplot as plt plt.imshow(f) plt.show()1 >>> for i in range(10): .. im = np.random.randint(0, 256, 10000).reshape((100, 100)) .. imageio.imsave('random_%02d.png' % i, im) >>> from glob import glob >>> filelist = glob('random*.png') >>> filelist.sort()_6 Latihan
from scipy import misc import imageio f = misc.face() imageio.imsave('face.png', f) # uses the Image module (PIL) import matplotlib.pyplot as plt plt.imshow(f) plt.show()2 [] Filter lokal. ganti nilai piksel dengan fungsi dari nilai piksel tetangga Lingkungan. persegi (pilih ukuran), disk, atau elemen penataan yang lebih rumit Filter Gaussian dari >>> face_memmap = np.memmap('face.raw', dtype=np.uint8, shape=(768, 1024, 3))2 from scipy import misc import imageio f = misc.face() imageio.imsave('face.png', f) # uses the Image module (PIL) import matplotlib.pyplot as plt plt.imshow(f) plt.show()_3 Filter seragam from scipy import misc import imageio f = misc.face() imageio.imsave('face.png', f) # uses the Image module (PIL) import matplotlib.pyplot as plt plt.imshow(f) plt.show()_4 [] Pertajam gambar buram from scipy import misc import imageio f = misc.face() imageio.imsave('face.png', f) # uses the Image module (PIL) import matplotlib.pyplot as plt plt.imshow(f) plt.show()5 menambah bobot tepi dengan menambahkan perkiraan Laplacian from scipy import misc import imageio f = misc.face() imageio.imsave('face.png', f) # uses the Image module (PIL) import matplotlib.pyplot as plt plt.imshow(f) plt.show()_6 [] Wajah berisik from scipy import misc import imageio f = misc.face() imageio.imsave('face.png', f) # uses the Image module (PIL) import matplotlib.pyplot as plt plt.imshow(f) plt.show()_7 Filter Gaussian menghaluskan noise… dan juga tepiannya from scipy import misc import imageio f = misc.face() imageio.imsave('face.png', f) # uses the Image module (PIL) import matplotlib.pyplot as plt plt.imshow(f) plt.show()_8 Sebagian besar filter isotropik linier lokal mengaburkan gambar ( >>> f = misc.face(gray=True) # retrieve a grayscale image >>> import matplotlib.pyplot as plt >>> plt.imshow(f, cmap=plt.cm.gray) <matplotlib.image.AxesImage object at 0x...>1) Filter median mempertahankan tepian dengan lebih baik from scipy import misc import imageio f = misc.face() imageio.imsave('face.png', f) # uses the Image module (PIL) import matplotlib.pyplot as plt plt.imshow(f) plt.show()_9 [] Filter tengah. hasil yang lebih baik untuk batas lurus (kelengkungan rendah) >>> from scipy import misc >>> import imageio >>> face = misc.face() >>> imageio.imsave('face.png', face) # First we need to create the PNG file >>> face = imageio.imread('face.png') >>> type(face) <class 'imageio.core.util.Array'> >>> face.shape, face.dtype ((768, 1024, 3), dtype('uint8'))_0 [] Filter peringkat lainnya. >>> f = misc.face(gray=True) # retrieve a grayscale image >>> import matplotlib.pyplot as plt >>> plt.imshow(f, cmap=plt.cm.gray) <matplotlib.image.AxesImage object at 0x...>2, >>> f = misc.face(gray=True) # retrieve a grayscale image >>> import matplotlib.pyplot as plt >>> plt.imshow(f, cmap=plt.cm.gray) <matplotlib.image.AxesImage object at 0x...>3 Filter non-linear lokal lainnya. Wiener ( >>> f = misc.face(gray=True) # retrieve a grayscale image >>> import matplotlib.pyplot as plt >>> plt.imshow(f, cmap=plt.cm.gray) <matplotlib.image.AxesImage object at 0x...>_4), dll Filter non-lokal Latihan. denoising
Lihat juga Lebih banyak filter denoising tersedia di >>> f = misc.face(gray=True) # retrieve a grayscale image >>> import matplotlib.pyplot as plt >>> plt.imshow(f, cmap=plt.cm.gray) <matplotlib.image.AxesImage object at 0x...>5, lihat tutorialnya Lihat wikipedia untuk definisi morfologi matematika Menyelidiki gambar dengan bentuk sederhana (elemen penataan), dan memodifikasi gambar ini sesuai dengan bagaimana bentuk cocok atau tidak sesuai dengan gambar secara lokal Elemen penataan >>> from scipy import misc >>> import imageio >>> face = misc.face() >>> imageio.imsave('face.png', face) # First we need to create the PNG file >>> face = imageio.imread('face.png') >>> type(face) <class 'imageio.core.util.Array'> >>> face.shape, face.dtype ((768, 1024, 3), dtype('uint8'))_1 Erosi = filter minimum. Ganti nilai piksel dengan nilai minimal yang dicakup oleh elemen penataan >>> from scipy import misc >>> import imageio >>> face = misc.face() >>> imageio.imsave('face.png', face) # First we need to create the PNG file >>> face = imageio.imread('face.png') >>> type(face) <class 'imageio.core.util.Array'> >>> face.shape, face.dtype ((768, 1024, 3), dtype('uint8'))_2 Pelebaran. saringan maksimum >>> from scipy import misc >>> import imageio >>> face = misc.face() >>> imageio.imsave('face.png', face) # First we need to create the PNG file >>> face = imageio.imread('face.png') >>> type(face) <class 'imageio.core.util.Array'> >>> face.shape, face.dtype ((768, 1024, 3), dtype('uint8'))_3 Juga berfungsi untuk gambar bernilai abu-abu >>> from scipy import misc >>> import imageio >>> face = misc.face() >>> imageio.imsave('face.png', face) # First we need to create the PNG file >>> face = imageio.imread('face.png') >>> type(face) <class 'imageio.core.util.Array'> >>> face.shape, face.dtype ((768, 1024, 3), dtype('uint8'))_4 [] Pembukaan. erosi + pelebaran >>> from scipy import misc >>> import imageio >>> face = misc.face() >>> imageio.imsave('face.png', face) # First we need to create the PNG file >>> face = imageio.imread('face.png') >>> type(face) <class 'imageio.core.util.Array'> >>> face.shape, face.dtype ((768, 1024, 3), dtype('uint8'))_5 Aplikasi. menghilangkan kebisingan >>> from scipy import misc >>> import imageio >>> face = misc.face() >>> imageio.imsave('face.png', face) # First we need to create the PNG file >>> face = imageio.imread('face.png') >>> type(face) <class 'imageio.core.util.Array'> >>> face.shape, face.dtype ((768, 1024, 3), dtype('uint8'))_6 [] Penutupan. pelebaran + erosi Banyak operasi morfologi matematika lainnya. hit and miss transform, tophat, dll Data sintetis >>> from scipy import misc >>> import imageio >>> face = misc.face() >>> imageio.imsave('face.png', face) # First we need to create the PNG file >>> face = imageio.imread('face.png') >>> type(face) <class 'imageio.core.util.Array'> >>> face.shape, face.dtype ((768, 1024, 3), dtype('uint8'))_7 Gunakan operator gradien (Sobel) untuk menemukan variasi intensitas tinggi >>> from scipy import misc >>> import imageio >>> face = misc.face() >>> imageio.imsave('face.png', face) # First we need to create the PNG file >>> face = imageio.imread('face.png') >>> type(face) <class 'imageio.core.util.Array'> >>> face.shape, face.dtype ((768, 1024, 3), dtype('uint8'))_8 []
>>> from scipy import misc >>> import imageio >>> face = misc.face() >>> imageio.imsave('face.png', face) # First we need to create the PNG file >>> face = imageio.imread('face.png') >>> type(face) <class 'imageio.core.util.Array'> >>> face.shape, face.dtype ((768, 1024, 3), dtype('uint8'))_9 [] Gunakan morfologi matematika untuk membersihkan hasilnya >>> face.tofile('face.raw') # Create raw file >>> face_from_raw = np.fromfile('face.raw', dtype=np.uint8) >>> face_from_raw.shape (2359296,) >>> face_from_raw.shape = (768, 1024, 3)0 [] Latihan Periksa operasi rekonstruksi (erosi + propagasi) menghasilkan hasil yang lebih baik daripada pembukaan/penutupan >>> face.tofile('face.raw') # Create raw file >>> face_from_raw = np.fromfile('face.raw', dtype=np.uint8) >>> face_from_raw.shape (2359296,) >>> face_from_raw.shape = (768, 1024, 3)1 Latihan Periksa bagaimana langkah denoising pertama (mis. g. dengan filter median) memodifikasi histogram, dan memeriksa bahwa segmentasi berbasis histogram yang dihasilkan lebih akurat Lihat juga Algoritme segmentasi yang lebih canggih ditemukan di >>> for i in range(10): .. im = np.random.randint(0, 256, 10000).reshape((100, 100)) .. imageio.imsave('random_%02d.png' % i, im) >>> from glob import glob >>> filelist = glob('random*.png') >>> filelist.sort()7. Lihat Lihat juga Paket Ilmiah Lainnya menyediakan algoritme yang dapat berguna untuk pemrosesan gambar. Dalam contoh ini, kami menggunakan fungsi pengelompokan spektral dari >>> f = misc.face(gray=True) # retrieve a grayscale image >>> import matplotlib.pyplot as plt >>> plt.imshow(f, cmap=plt.cm.gray) <matplotlib.image.AxesImage object at 0x...>7 untuk mengelompokkan objek yang direkatkan Bagaimana Anda menyimpan gambar dalam array dengan Python?Buat contoh larik Numpy dan ubah larik ke format PIL menggunakan fungsi fromarray() dari PIL. Ini akan membuka jendela terminal baru tempat gambar akan ditampilkan. Untuk menyimpan larik Numpy sebagai gambar lokal, gunakan fungsi save() dan berikan nama file gambar dengan direktori tempat menyimpannya .
Bagaimana cara mengimpor gambar ke dalam array?Memanipulasi dan Menyimpan Gambar . 1 impor numpy sebagai np 2 dari PIL impor Gambar 3 4im = np. larik (Gambar. buka('kolala. jpeg'). . 1load_img_rz = np. larik (Gambar. buka('kolala. jpeg'). . 1im = np. larik (Gambar. buka('kolala. jpeg')) 2 3print("Sebelum memotong. ",Aku Bagaimana gambar direpresentasikan dalam array NumPy?Gambar RGB tunggal dapat direpresentasikan menggunakan larik NumPy tiga dimensi (3D) atau tensor . Karena ada tiga saluran warna pada gambar RGB, kita memerlukan dimensi ekstra untuk saluran warna. Kumpulan 3 gambar RGB dapat direpresentasikan menggunakan larik NumPy empat dimensi (4D) atau tensor.
Bagaimana cara mendapatkan data gambar dengan Python?Prosedur ekstraksi adalah. . impor modul Gambar PIL ke dalam Shell. >>>dari PIL import Image buat objek gambar dan buka gambar untuk mode membaca. >>>im = Gambar. buka('filesaya. png', 'r'). kami menggunakan fungsi modul Gambar yang disebut getdata() untuk mengekstrak nilai piksel |