Membersihkan gambar adalah teknik yang berharga, baik untuk analisis lebih lanjut atau hanya untuk membuat foto Anda terlihat terbaik.

Peningkatan gambar adalah alat penting untuk visi komputer dan aplikasi pengeditan gambar. Hal ini bertujuan untuk meningkatkan kualitas gambar.

Dengan meningkatkan kualitas gambar, keakuratan dan keandalan analisis gambar dan teknik pemrosesan dapat ditingkatkan secara signifikan. Ini sangat penting dalam deteksi objek, pengenalan, segmentasi, dan aplikasi pelacakan.

Penyempurnaan gambar dapat membantu saat faktor seperti kondisi cahaya redup, gangguan sensor, buram gerakan, atau kesalahan transmisi telah mengganggu kualitas gambar.

Menyiapkan Lingkungan Anda

Mulai oleh menyiapkan lingkungan Python, lalu jalankan perintah terminal berikut untuk menginstal pustaka OpenCV. Anda akan menggunakan OpenCV untuk memuat dan memproses gambar awal, dan untuk menyimpan gambar akhir yang disempurnakan.

pip instal opencv-python

Anda akan menggunakan Matplotlib untuk menampilkan dua gambar. Instal menggunakan perintah ini:

instagram viewer
pip instal matplotlib

Terakhir, instal NumPy, yang akan Anda lakukan digunakan untuk operasi numerik termasuk membuat tabel pencarian untuk koreksi gamma dan menentukan kernel untuk penajaman gambar:

pip instal numpy

Setelah Anda menginstal pustaka ini di lingkungan Anda, Anda siap untuk memulai pengkodean.

Kode sumber lengkap untuk demo ini tersedia di a repositori GitHub.

Mengimpor Perpustakaan yang Diperlukan

Impor pustaka yang sebelumnya Anda pasang di lingkungan Anda:

impor cv2
impor matplotlib.pyplot sebagai plt
impor numpy sebagai np

Perhatikan bahwa Anda harus mengimpor OpenCV sebagai cv2. Ini adalah praktik standar yang bertujuan untuk memastikan kompatibilitas kode dan kemudahan pemahaman bagi pengembang lain.

Memuat dan Menampilkan Gambar Asli

Mulailah dengan memuat gambar asli menggunakan cv2.imread fungsi. Ini adalah gambar input yang akan digunakan oleh program Anda untuk melakukan teknik penyempurnaan. Kemudian tampilkan menggunakan fungsi Matplotlib yang sesuai:

gambar = cv2.imread('contoh.jpg')
plt.imshow (cv2.cvtColor (gambar, cv2.COLOR_BGR2RGB))
plt.judul('Gambar asli')
plt.tampilkan()

Menampilkan gambar asli akan membantu Anda membandingkan hasil program nanti:

Gambar di atas akan menjadi input program.

Mengurangi Noise pada Gambar

Denoising adalah teknik yang bertujuan untuk mengurangi noise—distorsi acak—pada gambar. Ini menghasilkan keluaran yang lebih halus. OpenCV menyediakan fastNlMeansDenoisingColored berfungsi untuk tujuan ini. Ini menggunakan algoritme sarana non-lokal untuk menghilangkan noise sambil mempertahankan detail gambar.

# Terapkan peningkatan gambar
# Denoise gambar
denoised_image = cv2.fastNlMeansDenoisingColored (gambar, Tidak ada, 10, 10, 7, 21)

Itu fastNlMeansDenoisingColored fungsi mengambil beberapa parameter, termasuk gambar, kekuatan filter, ukuran jendela template, dan ukuran jendela pencarian. Anda dapat bereksperimen dengan nilai yang berbeda untuk mendapatkan hasil yang diinginkan.

Peregangan Kontras untuk Meningkatkan Visibilitas Detail

Peregangan kontras juga dikenal sebagai normalisasi. Ini meregangkan nilai intensitas untuk menjangkau rentang tertentu. Ini pada gilirannya meningkatkan visibilitas detail dalam gambar.

Anda dapat menerapkan peregangan kontras ke gambar denoise menggunakan OpenCV menormalkan fungsi:

# Lakukan peregangan kontras
contrast_stretched_image = cv2.normalkan (denoised_image, Tidak ada, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

Cara Mempertajam Gambar

Penajaman gambar meningkatkan tepi dan detail gambar, membantu meningkatkan ketajaman gambar.

# Penajaman Gambar
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
gambar_tajam = cv2.filter2D(gambar_kontras_dibentang, -1, kernel=kernel)

Kode di atas membuat matriks kernel yang menekankan tepi dan detail pada gambar. Itu cv2.filter2D fungsi menerapkan kernel ke gambar yang direntangkan kontras, mempertajamnya sebagai hasilnya.

Sesuaikan Kecerahan untuk Meningkatkan Eksposur

Penyesuaian kecerahan mengontrol kecerahan keseluruhan gambar. Ini membantu membuat gambar menarik secara visual dan terekspos dengan baik.

# Penyesuaian Kecerahan
brightness_image = cv2.convertScaleAbs (sharpened_image, alpha=1, beta=5)

Itu cv2.convertScaleAbs fungsi menyesuaikan kecerahan gambar. Itu alfa parameter mengontrol kontras, sedangkan beta parameter mengontrol kecerahan. Meningkatkan beta nilai meningkatkan kecerahan gambar.

Terapkan Koreksi Gamma untuk Mencerahkan Gambar

Gambar dapat tampak terlalu terang setelah teknik penyesuaian kecerahan. Koreksi gamma menyesuaikan kecerahan dan kontras gambar secara keseluruhan. Ini mengoreksi gambar yang tampak terlalu gelap atau terlalu terang.

# Koreksi Gamma
gama = 1.5
lookup_table = np.array([((i / 255.0) ** gama) * 255untuk Saya di dalam np.arange(0, 256)]).astipe("uint8")
gamma_corrected_image = cv2.LUT(gambar_kecerahan, tabel_pencarian)

Cuplikan kode di atas membuat tabel pencarian yang menerapkan transformasi koreksi gamma ke gambar yang disesuaikan kecerahannya. Itu gamma nilai mengontrol penyesuaian. Gunakan nilai lebih besar dari 1 untuk membuat gambar lebih gelap, dan nilai lebih kecil dari 1 untuk membuatnya lebih terang.

Menyimpan dan Menampilkan Gambar Akhir yang Disempurnakan

Setelah Anda menerapkan teknik penyempurnaan di atas, simpan gambar akhir yang diproses ke file.

# Simpan gambar akhir
cv2.imwrite('final_image.jpg', gamma_corrected_image)

Kemudian tampilkan output program menggunakan Matplotlib.

# Tampilkan gambar akhir yang disempurnakan
plt.imshow (cv2.cvtColor (gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.judul('Gambar Akhir yang Disempurnakan')
plt.tampilkan()

Gambar terakhir yang disempurnakan adalah sebagai berikut:

Masa Depan Peningkatan Gambar

Masa depan peningkatan citra ada di bidang kecerdasan buatan. Algoritme pembelajaran mesin sedang dilatih untuk secara otomatis melakukan teknik peningkatan gambar pada gambar.

Program-program ini memperlakukan setiap gambar secara terpisah, sehingga mereka menerapkan nilai teknik yang berbeda untuk gambar yang berbeda.