Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Python
Code

Peningkatan Imej dalam Python

by
Length:MediumLanguages:

Malay (Melayu) translation by Aisyah Arrafah (you can also view the original English article)

Biarkan saya memulakan tutorial ini dengan mengambil beberapa jargon teori dari cara anda. Apabila kita bercakap mengenai peningkatan imej, pada dasarnya ini bermakna kita mahu versi baru imej yang lebih sesuai daripada yang asal.

Contohnya, apabila anda mengimbas dokumen, imej output mungkin mempunyai kualiti yang lebih rendah daripada imej input asal. Oleh itu, kami memerlukan satu cara untuk meningkatkan kualiti imej output supaya mereka dapat secara visual lebih ekspresif untuk penonton, dan ini adalah tempat peningkatan imej muncul. Apabila kita meningkatkan imej, apa yang kita lakukan ialah mengasah ciri-ciri imej seperti kontras dan tepinya.

Adalah penting untuk diperhatikan bahawa peningkatan imej tidak meningkatkan kandungan maklumat imej, melainkan meningkatkan rentang dinamik ciri yang dipilih, akhirnya meningkatkan kualiti imej. Jadi di sini kita sebenarnya tidak tahu apa bentuk imej output, tetapi kita harus dapat memberitahu (subjek) sama ada terdapat penambahbaikan atau tidak, seperti memerhatikan lebih banyak maklumat dalam imej output, contohnya.

Peningkatan imej biasanya digunakan sebagai langkah pra-proses dalam langkah-langkah asas yang terlibat dalam pemprosesan imej digital (iaitu penyepaduan, perwakilan). Terdapat banyak teknik untuk penambahbaikan imej, tetapi saya akan meliputi dua teknik dalam tutorial ini: imej songsang dan transformasi undang-undang kuasa. Kami akan melihat bagaimana kami boleh melaksanakannya dalam Python. Jadi, mari bermula!

Gambar songsang

Seperti yang mungkin anda dapati dari tajuk bahagian ini (yang juga boleh dirujuk sebagai penolakan imej), sebaliknya imej bertujuan untuk mengubah intensiti gelap dalam imej masukan kepada intensiti terang dalam imej output, dan intensiti terang dalam imej input kepada intensiti gelap dalam imej output. Dengan kata lain, kawasan gelap menjadi lebih ringan, dan kawasan cahaya menjadi lebih gelap.

Katakan bahawa saya (i, j) merujuk kepada nilai intensiti piksel yang terletak pada (i, j). Untuk menjelaskan sedikit di sini, nilai intensiti dalam imej skala kelabu jatuh dalam julat [0,255], dan (i, j) merujuk kepada nilai baris dan lajur. Apabila kita menggunakan pengendali songsang imej pada imej skala kelabu, nilai piksel output O (i, j) adalah:

Pada masa kini, kebanyakan imej kami adalah imej warna. Imej tersebut mengandungi tiga saluran, merah, hijau, dan biru, yang disebut sebagai imej RGB. Dalam kes ini, berbanding dengan formula di atas, kita perlu tolak keamatan setiap saluran dari 255. Jadi imej output akan mempunyai nilai berikut pada piksel (i, j):

Selepas pengenalan ini, mari kita lihat bagaimana kita boleh melaksanakan pengendali songsang imej dalam Python. Saya ingin menyebutkan bahawa demi kesederhanaan, saya akan menjalankan pengendali pada imej skala kelabu. Tetapi saya akan memberi anda beberapa pemikiran tentang cara menggunakan pengendali pada imej warna, dan saya akan meninggalkan program penuh untuk anda sebagai latihan.

Perkara pertama yang perlu anda lakukan untuk imej warna adalah mengekstrak nilai intensiti saluran piksel (iaitu RGB). Untuk tujuan ini, anda boleh menggunakan Perpustakaan Imaging Python (PIL). Teruskan dan muat turun imej baboon sampel dari baboon.png. Saiz imej adalah 500x500. Katakan anda mahu mengekstrak nilai keamatan merah, hijau, dan biru yang terletak di lokasi piksel (325, 432). Ini boleh dilakukan seperti berikut:

Berdasarkan dokumentasi, apakah kaedah getpixel () adalah:

Mengembalikan nilai piksel pada kedudukan yang diberikan.

Selepas menjalankan skrip di atas, anda akan mendapati bahawa anda hanya mendapat hasil berikut: 138! Tetapi di mana nilai intensiti tiga saluran (RGB)? Isu ini seolah-olah dengan mod imej dibaca. Periksa mod dengan menjalankan pernyataan berikut:

Anda akan mendapat output P, ​​bermakna imej dibaca dalam modt palet. Satu perkara yang boleh anda lakukan ialah menukar imej ke mod RGB sebelum mengembalikan nilai intensiti saluran yang berbeza. Untuk melakukan itu, anda boleh menggunakan kaedah menukar (), seperti berikut:

Dalam kes ini, anda akan mendapat nilai berikut dikembalikan: (180, 168, 178). Ini bermakna nilai intensiti untuk saluran merah, hijau dan biru adalah 180, 168, dan 178.

Untuk mengumpulkan semua yang telah kami terangkan sejauh ini, skrip Python yang akan mengembalikan nilai RGB imej kelihatan seperti berikut:

Terdapat satu perkara yang tersisa sebelum anda bergerak ke hadapan untuk pengendali songsang imej. Contoh di atas menunjukkan bagaimana untuk mengambil nilai RGB hanya satu piksel, tetapi apabila melakukan pengendali songsang, anda perlu melakukan itu pada semua piksel.l.

Untuk mencetak semua nilai intensiti untuk saluran berbeza setiap piksel, anda boleh melakukan perkara berikut:

Pada ketika ini, saya akan membiarkannya sebagai latihan untuk anda memikirkan bagaimana untuk menerapkan pengendali songsang imej pada semua saluran imej warna (iaitu RGB) setiap piksel.

Mari kita lihat contoh yang menggunakan pengendali songsang imej pada imej skala kelabu. Teruskan dan muat turun boat.tiff, yang akan berfungsi sebagai imej ujian kami di bahagian ini. Inilah yang kelihatan seperti:

Sample image of a boat for this tutorial

Saya akan menggunakan perpustakaan scipy untuk tugas ini. Skrip Python untuk menggunakan pengendali songsang imej pada imej di atas sepatutnya kelihatan seperti berikut:

Perkara pertama yang kami lakukan setelah membaca imej adalah untuk menukarnya ke ndarray untuk menerapkan operator terbalik imej di atasnya. Selepas menggunakan operator, kami hanya menukar ndarray kembali ke imej dan menyimpan imej itu sebagai result.tiff. Angka di bawah ini memaparkan hasil menerapkan imej terbalik kepada imej di atas (imej asal berada di sebelah kiri, dan keputusan menggunakan operator songsang di sebelah kanan):

Image Inversed

Perhatikan bahawa beberapa ciri imej menjadi lebih jelas selepas menggunakan operator. Lihat, contohnya, di awan dan rumah api di gambar yang betul.

Transformasi Undang-undang Kuasa

Pengendali ini, yang juga dikenali sebagai pembetulan gamma, adalah pengendali lain yang boleh kita gunakan untuk meningkatkan imej. Mari lihat persamaan operator. Pada piksel (i, j), operator kelihatan seperti berikut:

I (i, j) ialah nilai intensiti pada lokasi imej (i, j); dan k dan gamma adalah pemalar positif. Saya tidak akan masuk ke butiran matematik di sini, tetapi saya percaya bahawa anda boleh mendapatkan penjelasan terperinci mengenai topik ini dalam buku pemprosesan imej. Walau bagaimanapun, penting untuk diperhatikan bahawa dalam kebanyakan kes, k = 1, jadi kami akan mengubah nilai gamma terutamanya. Persamaan di atas dapat dikurangkan menjadi:

Saya akan menggunakan perpustakaan OpenCV dan NumPy di ​​sini. Anda boleh menyemak tutorial saya Memperkenalkan NumPy sekiranya anda perlu mempelajari lebih lanjut tentang perpustakaan. Imej ujian kami akan kembali menjadi boat.tiff (teruskan dan muat turun).

Skrip Python untuk melaksanakan pengendali Transformasi Undang-Undang Power kelihatan seperti berikut:

Perhatikan bahawa nilai gamma yang kami pilih ialah 0.6. Rajah di bawah menunjukkan imej asal dan hasil penggunaan pengendali Transformasi Undang-undang Tenaga pada imej itu (imej kiri menunjukkan imej asal, dan imej yang tepat menunjukkan hasil selepas menggunakan operator transformasi undang-undang kuasa).

Power Law Transformation

Keputusan di atas adalah apabila gamma = 0.6. Mari lihat apa yang berlaku apabila kita meningkatkan gamma kepada 1.5, contohnya:

power law transformation with a higher gamma

Perhatikan bahawa apabila kita meningkatkan nilai gamma, imej menjadi lebih gelap, dan sebaliknya.

Ada yang mungkin bertanya mengenai penggunaan kuasa transformasi undang-undang. Sebenarnya, peranti yang berbeza digunakan untuk pengambilalihan imej, percetakan, dan paparan yang bertindak balas menurut pengendali transformasi undang-undang kuasa. Ini disebabkan oleh fakta bahawa otak manusia menggunakan pembetulan gamma untuk memproses imej. Sebagai contoh, pembetulan gamma dianggap penting apabila kita mahu imej dipaparkan dengan betul (kontras imej terbaik dipaparkan dalam semua imej) pada monitor komputer atau skrin televisyen.

Kesimpulan

Dalam tutorial ini, anda telah belajar bagaimana untuk meningkatkan imej menggunakan Python. Anda telah melihat cara menyerlahkan ciri menggunakan operator songsang imej, dan bagaimana transformasi undang-undang kuasa dianggap pengendali penting untuk memaparkan imej dengan betul pada monitor komputer dan skrin televisyen.

Tambahan pula, jangan teragak-agak untuk melihat apa yang kami ada untuk dijual dan untuk belajar di Pasar Envato, dan sila bertanya apa-apa soalan dan beri maklum balas berharga anda menggunakan suapan di bawah.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.