Cara menggunakan Python untuk melakukan segmentasi imej pada gambar
Segmentasi imej ialah teknik yang biasa digunakan dalam bidang penglihatan komputer. Ia membahagikan imej kepada berbilang kawasan imej bebas supaya piksel dalam setiap kawasan mempunyai ciri yang serupa. Pembahagian imej mempunyai nilai aplikasi yang luas dalam pengecaman, pengesanan sasaran, pemprosesan imej dan aplikasi lain. Artikel ini akan memperkenalkan cara menggunakan Python untuk membahagikan imej, dan melampirkan contoh kod.
Pertama, kita perlu memasang Bantal pustaka pemprosesan imej Python. Bantal boleh membantu kami memuatkan, memproses dan menyimpan imej. Anda boleh memasang Bantal melalui arahan berikut:
pip install pillow
Selepas memasang Bantal, kita boleh mulakan amalan segmentasi imej. Pertama, kita perlu mengimport perpustakaan yang diperlukan:
from PIL import Image from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot as plt
Seterusnya, kita mentakrifkan fungsi untuk memuatkan imej dan menukarnya kepada tatasusunan:
def load_image(image_path): image = Image.open(image_path) return np.array(image)
Kemudian, kita mentakrifkan fungsi untuk melakukan pembahagian imej:
def image_segmentation(image, num_segments): height, width, _ = image.shape image_flat = image.reshape((-1, 3)) kmeans = KMeans(n_clusters=num_segments, random_state=0).fit(image_flat) labels = kmeans.labels_ image_segmented = np.zeros_like(image_flat) for segment in range(num_segments): image_segmented[labels == segment] = kmeans.cluster_centers_[segment] image_segmented = image_segmented.reshape((height, width, 3)) return image_segmented
Dalam kod di atas, kami menggunakan algoritma KMeans untuk mengelompokkan piksel imej dan menentukan kawasan pembahagian imej. Kemudian, kami mengaitkan setiap piksel ke pusat kluster yang sepadan dan menjana hasil pembahagian imej.
Akhir sekali, kami mentakrifkan fungsi untuk menunjukkan hasil pembahagian imej:
def show_image(image): plt.imshow(image.astype(np.uint8)) plt.axis('off') plt.show()
Kini, kami boleh menggabungkan fungsi yang ditakrifkan di atas untuk menjalankan eksperimen pembahagian imej. Berikut ialah kod sampel lengkap:
from PIL import Image from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot as plt def load_image(image_path): image = Image.open(image_path) return np.array(image) def image_segmentation(image, num_segments): height, width, _ = image.shape image_flat = image.reshape((-1, 3)) kmeans = KMeans(n_clusters=num_segments, random_state=0).fit(image_flat) labels = kmeans.labels_ image_segmented = np.zeros_like(image_flat) for segment in range(num_segments): image_segmented[labels == segment] = kmeans.cluster_centers_[segment] image_segmented = image_segmented.reshape((height, width, 3)) return image_segmented def show_image(image): plt.imshow(image.astype(np.uint8)) plt.axis('off') plt.show() image_path = "image.jpg" num_segments = 4 image = load_image(image_path) image_segmented = image_segmentation(image, num_segments) show_image(image_segmented)
Dalam contoh di atas, kami memuatkan imej bernama "image.jpg" dan membahagikannya kepada 4 kawasan. Akhir sekali, kami menunjukkan hasil pembahagian imej.
Untuk meringkaskan, artikel ini memperkenalkan cara menggunakan Python untuk melaksanakan pembahagian imej pada imej. Kami menggunakan perpustakaan Bantal untuk memuatkan dan menyimpan imej, algoritma KMeans untuk pembahagian imej, dan akhirnya memaparkan hasil pembahagian. Saya harap artikel ini akan membantu anda memahami prinsip dan amalan pembahagian imej.
Atas ialah kandungan terperinci Bagaimana untuk membahagikan imej menggunakan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!