Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan Python untuk melakukan penyamaan histogram warna pada gambar

Cara menggunakan Python untuk melakukan penyamaan histogram warna pada gambar

WBOY
WBOYasal
2023-08-19 09:50:101639semak imbas

Cara menggunakan Python untuk melakukan penyamaan histogram warna pada gambar

Cara menggunakan Python untuk melaksanakan penyamaan histogram warna pada gambar

Pengenalan:
Penyamaan histogram warna ialah kaedah pemprosesan imej biasa yang menjadikan imej lebih jelas dan terang dengan mempertingkatkan kontras imej. Dalam Python, dengan menggunakan beberapa perpustakaan pemprosesan imej biasa, kami boleh melaksanakan operasi penyamaan histogram warna dengan mudah. Artikel ini akan memperkenalkan cara menggunakan Python untuk menyamakan histogram warna imej dan memberikan contoh kod yang sepadan.

1. Pasang perpustakaan yang diperlukan
Sebelum melakukan penyamaan histogram warna, kami perlu memasang pustaka pemprosesan imej Python PIL (Python Imaging Library) atau Bantal perpustakaan cawangannya. Anda boleh memasangnya melalui arahan berikut:

$ pip pasang bantal

2. Import perpustakaan yang diperlukan
Selepas selesai pemasangan, kami perlu mengimport perpustakaan yang diperlukan.

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

3 Baca gambar
Pertama, kita perlu memuatkan gambar untuk diproses. Imej boleh dibaca menggunakan modul Imej dalam perpustakaan PIL. Berikut ialah contoh kod untuk membaca imej:

image_path = 'path/to/your/image.jpg'
image = Image.open(image_path)

4. Tukar kepada imej skala kelabu
Penyamaan histogram warna adalah terutamanya untuk melaraskan kecerahan imej, jadi imej warna perlu ditukar kepada imej skala kelabu. Ini boleh dicapai melalui kod berikut:

gray_image = image.convert('L')

5. Kira histogram
Sebelum melakukan penyamaan histogram warna, kita perlu mengira histogram imej terlebih dahulu. Histogram imej boleh dikira menggunakan fungsi histogram dalam perpustakaan numpy. Berikut ialah contoh kod untuk mengira histogram:

hist, bins = np.histogram(gray_image.flatten(), 256, [0,256])

Kod ini akan mengembalikan hist tatasusunan yang mengandungi statistik histogram imej dan tong julat berangka yang sepadan dengan statistik histogram.

6. Kira histogram terkumpul
Mengikut histogram, kita boleh mengira histogram terkumpul, yang digunakan untuk menyamakan kecerahan imej. Dengan mengumpul nilai tatasusunan histogram, kita boleh mendapatkan ketumpatan kebarangkalian kumulatif setiap tahap kelabu. Berikut ialah kod sampel untuk mengira histogram terkumpul:

cdf = hist.cumsum()
cdf_normalized = cdf * hist.max() / cdf.max()

7. Kira jadual pemetaan
Seterusnya, kita perlu memetakan histogram kumulatif untuk mendapatkan fungsi transformasi linear untuk menyamakan kecerahan imej. Berikut ialah contoh kod untuk mengira jadual pemetaan:

mapping = np.interp(gray_image.flatten(), bins[:-1], cdf_normalized)
equalized_image = mapping.reshape(gray_image.shape)

8. Paparkan hasil pemprosesan
Akhir sekali, kita boleh menggunakan perpustakaan Matplotlib untuk memaparkan imej yang diproses. Berikut ialah contoh kod yang memaparkan imej:

plt.subplot(1, 2, 1)
plt.imshow(gray_image, cmap='gray')
plt.title('Original Image')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(equalized_image, cmap='gray')
plt.title('Equalized Image')
plt.axis('off')

plt.tight_layout()
plt.show()

Dengan menjalankan kod di atas, anda boleh memaparkan imej asal dan imej yang disamakan untuk membandingkan kesan.

Kesimpulan:
Penyamaan histogram warna ialah kaedah pemprosesan imej biasa yang boleh meningkatkan kontras dan kejelasan imej. Artikel ini memperkenalkan cara menggunakan Python untuk menyamakan histogram warna imej dan menyediakan contoh kod yang sepadan. Saya harap ia dapat membantu pembaca. Pembaca boleh melaraskan dan menambah baik kod mengikut keperluan mereka sendiri untuk mencapai lebih banyak fungsi pemprosesan imej.

Atas ialah kandungan terperinci Cara menggunakan Python untuk melakukan penyamaan histogram warna pada gambar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn