0% menganggap dokumen ini bermanfaat (0 suara)
822 tayangan

1-Modul Citra - Python

Dokumen tersebut membahas tentang dasar-dasar Python untuk pengolahan citra, meliputi pengenalan Python, instalasi Python, dan perintah dasar Python untuk aplikasi pengolahan citra seperti operasi matematika, vektor, dan matriks."

Diunggah oleh

muhammad syaukani
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
822 tayangan

1-Modul Citra - Python

Dokumen tersebut membahas tentang dasar-dasar Python untuk pengolahan citra, meliputi pengenalan Python, instalasi Python, dan perintah dasar Python untuk aplikasi pengolahan citra seperti operasi matematika, vektor, dan matriks."

Diunggah oleh

muhammad syaukani
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 51

PHYTON TUTORIAL

Dasar-Dasar
Pengolahan Citra
menggunakan
PHYTON
Sugeng Rianto
[email protected]

KOMPUTASI DAN PEMODELAN SAIN


Jurusan Fisika
Fakultas Matematika dan Ilmu Pengetahuan Alam
Univeritas Brawijaya, Malang, Januari - 2019
KATA PENGANTAR

Hal. | i
DAFTAR ISI

KATA PENGANTAR ................................................................................. i

DAFTAR ISI ............................................................................................ ii

MENGENAL PYTHON............................................................................. 1

1.1 Tentang Python .............................................................................. 1

1.2 Memulai Python ............................................................................. 2

1.3 Mendapatkan Python ..................................................................... 3

1.4 Menginstal Python.......................................................................... 3

Instalasi Unix dan Linux .................................................................. 3

Instalasi Windows........................................................................... 4

Menyiapkan PATH .......................................................................... 4

Pengaturan jalur di Windows ......................................................... 5

Variabel Lingkungan Python ........................................................... 5

Menjalankan Python ...................................................................... 6

Script dari baris perintah ................................................................ 7

Lingkungan Pengembangan Terpadu ............................................. 7

PERINTAH DASAR PYTHON UNTUK APLIKASI PENGOLHAN CITRA ..... 13

2.1 Operasi Dasar Matematis ............................................................. 13

2.1.1 Peubah/ Variable ....................................................................... 13

Operator aritmatika ..................................................................... 14

Operator pembanding .................................................................. 14

Operator logika............................................................................. 15

Operator bitwise .......................................................................... 16

Hal. | ii
Operator penugasan .................................................................... 16

Operator khusus ........................................................................... 17

2.2 Operasi Vektor.............................................................................. 19

2.3 Operasi Matrik .............................................................................. 22

2.4 Fungsi dalam Python .................................................................... 27

DASAR-DASAR PENGOLAHAN CITRA DAN PEMROGRAMANNYA....... 29

3.1 Pendahuluan ................................................................................ 29

3.2 Citra Digital ................................................................................... 29

Pita (Band) .................................................................................... 30

Mode ............................................................................................ 31

Ukuran (size) ................................................................................ 31

Koordinat...................................................................................... 32

Palet ............................................................................................. 32

Info ............................................................................................... 32

Filter ............................................................................................. 32

3.3. Pemuatan Citra ............................................................................ 33

3.4 Membaca dan menyimpan citra .................................................. 34

3.5 Manipulasi Citra ........................................................................... 35

Pemotongan (Cropping) ............................................................... 36

Tempel (Paste), gabung (Merge), dan urai(split) ......................... 38

3.6 Transformasi dan Peningkatan (enhancement) ........................... 40

Transformasi ................................................................................ 40

Peningkatan citra ......................................................................... 43

Hal. | iii
Hal. | iv
MENGENAL PYTHON

1.1 Tentang Python


Python adalah bahasa pemrograman yang berdaya guna dan
mudah dipelajari. Dia memiliki struktur data tingkat tinggi yang
efisien dengan pendekatan sederhana tetapi efektif untuk
pemrograman berorientasi objek. Sintaksis Python yang elegan
dengan pengetikan dinamis dan sifat tafsirannya alami,
menjadikannya bahasa yang ideal untuk skrip dan pengembangan
aplikasi yang cepat di banyak bidang dalam berbagai platform.
Phyton juga memiliki kinerja tinggi untuk komputasi berbagai
masalah teknik yang mengintegrasikan komputasi, visualisasi, dan
pemrograman dalam suatu modul-modul yang sangat mudah untuk
pakai. Penggunaan Matlab meliputi bidang–bidang:
• Matematika dan Komputasi
• Pembentukan Algorithm
• Akusisi Data
• Pemodelan, simulasi, dan pembuatan prototipe
• Analisa data, explorasi, dan visualisasi
• Grafika dan Rekayasa
Sistem Python bersifat interaktif dan memiliki elemen data dalam
larik/array, sehingga pengguna tidak lagi dipusingkan dengan
masalah dimensi. Hal ini memungkinkan pememecahan banyak
masalah teknis yang terkait dengan komputasi, kususnya yang
berhubungan dengan matrix dan formulasi vektor, yang mana
masalah tersebut merupakan momok apabila kita harus
menyelesaikannya dengan menggunakan bahasa level rendah
seperti Pascall, C dan Basic.
Penerjemah dan pustaka standar Python tersedia secara bebas
dalam bentuk kode asal atau biner untuk semua platform dan dapat

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 1


didistribusikan secara bebas yang dapat diunduh dari situs Web
Python, https://www.python.org/. Pada Situs yang sama juga
berisi distribusi dan pointer ke banyak modul Python dari pihak
ketiga yang tersedia secara gratis, baik berupa program, alat,
maupun dokumentasi tambahan.

1.2 Memulai Python


Python dirancang agar mudah dibaca, karenanya sering
menggunakan kata kunci bahasa Inggris yang memiliki konstruksi
sintaksis yang lebih sedikit daripada bahasa lain. Beberapa
keunggulan Python antara lain:
Python is Interpreted - Python diproses pada saat runtime oleh
penerjemah, sehingga tidak perlu mengkompilasi program
sebelum menjalankannya. Ini mirip dengan PERL dan PHP.
 Python is Interactive – Pengguna sebenarnya bisa duduk di
prompt Python dan berinteraksi dengan penerjemah secara
langsung saat menulis program.
 Python is Object-Oriented - Python mendukung gaya atau
teknik pemrograman Berorientasi Objek yang merangkum
kode di dalam objek.
 Python is a Beginner's Language - Python adalah bahasa
yang bagus untuk pemrogram tingkat pemula dan
mendukung pengembangan berbagai aplikasi mulai dari
pemrosesan teks sederhana hingga peramban WWW hingga
permainan/games.

Python tersedia di berbagai platform dari windows, Linux hingga


Mac OS X. Untuk menggunakan Python perlu mengerti cara
mengatur lingkungan Python seperti yang dijelaskan seksi
berikutnya.

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 2


1.3 Mendapatkan Python
Kode sumber, binari, dokumentasi, berita, dll., yang terbaru dan
terkini, tersedia di situs resmi Python https://www.python.org/.
Sedangkan dokumentasi Python dapat diperoleh
dari https://www.python.org/doc/ . Dokumentasi tersedia dalam
format HTML, PDF, dan PostScript.

1.4 Menginstal Python


Distribusi Python tersedia untuk berbagai platform. Anda hanya
perlu mengunduh kode biner yang sesuai dengan platform Anda
dan menginstal Python. Jika kode biner untuk platform Anda tidak
tersedia, Anda memerlukan kompiler C untuk mengkompilasi kode
sumber secara manual. Kompilasi kode sumber menawarkan lebih
banyak fleksibilitas dalam hal pilihan fitur sesuai kebutuhan.
Berikut ini adalah ikhtisar cepat menginstal Python di berbagai
platform.

Instalasi Unix dan Linux


Berikut adalah langkah-langkah sederhana untuk menginstal
Python di mesin Unix / Linux.
 Buka browser Web dan
buka https://www.python.org/downloads/ .
 Ikuti tautan untuk mengunduh kode sumber zip yang
tersedia untuk Unix / Linux.
 Unduh dan ekstrak file.
 Mengedit Modul / Pengaturan file jika Anda ingin
menyesuaikan beberapa opsi.
 jalankan skrip ./configure
 make
 make install

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 3


Proses tersebut menginstal Python di lokasi
standar /usr/local/bin dan pustakanya di / usr/local/lib/pythonXX
di mana XX adalah versi Python.

Instalasi Windows
Langkah-langkah untuk menginstal Python di mesin Windows
adalah:
• Buka browser Web dan buka
https://www.python.org/downloads/.
• Ikuti tautan untuk file pemasang python-XY.msi Windows
di mana XYZ adalah versi yang perlu Anda instal.
• Untuk menggunakan pemasang ini python-XY.msi , sistem
Windows harus mendukung Microsoft Installer 2.0. Simpan
file penginstal ke mesin lokal Anda dan kemudian jalankan
untuk mencari tahu apakah mesin Anda mendukung MSI.
• Jalankan file yang diunduh. Ini menampilkan wizard
pemasangan Python, yang sangat mudah
digunakan. Terima saja pengaturan default, tunggu sampai
instalasi selesai, dan Anda selesai.

Menyiapkan PATH
Program dan file yang dapat dieksekusi lainnya bisa berada di
direktori yang berbeda, sehingga sistem operasi menyediakan jalur
pencarian yang mencantumkan direktori yang dicari OS untuk file
yang dapat dieksekusi.
Path disimpan dalam variabel lingkungan, yang merupakan string
bernama yang dikelola oleh sistem operasi. Variabel ini berisi
informasi yang tersedia untuk shell perintah dan program lain.
Variabel path disebut sebagai PATH di Unix sebagai kasus sensitif,
sedangkan pada Windows tidak.

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 4


Pengaturan jalur di Windows
Penambahan direktori Python ke jalur untuk sesi tertentu di
Windows:
• Pada prompt perintah - ketik path%path%; C:\Python dan
tekan Enter.
• Catatan - C:\Python adalah jalur direktori Python

Variabel Lingkungan Python


Berikut adalah variabel lingkungan penting, yang dapat dikenali
oleh Python

Variabel & Deskripsi

PYTHONPATH
memiliki peran yang mirip PATH. Variabel ini memberi tahu
Python tempat mencari file-file modul yang diimpor ke suatu
program, yakni harus mencakup direktori pustaka sumber Python
dan direktori yang berisi kode sumber Python. PYTHONPATH
kadang-kadang ditentukan oleh pemasang Python.

PYTHON STARTUP
Berisi jalur file inisialisasi yang mengandung kode sumber
Python. Itu dieksekusi setiap kali Anda memulai penerjemah. Itu
dinamai .pythonrc.py di Unix dan berisi perintah yang memuat
utilitas atau memodifikasi PYTHONPATH.

PYTHON CASE OK
Digunakan di Windows untuk menginstruksikan Python untuk
menemukan kecocokan tidak peka huruf besar-kecil dalam sebuah
pernyataan impor. Setel variabel ini ke nilai apa pun untuk
mengaktifkannya.

PYTHON HOME
Jalur pencarian modul alternatif. Biasanya tertanam di direktori
PYTHONSTARTUP atau PYTHONPATH untuk memudahkan
pertukaran pustaka modul.

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 5


Menjalankan Python
Ada tiga cara berbeda untuk memulai Python. Python dapat
dimulai dari Unix, DOS, atau sistem lain yang memberikan
command-line atau jendela shell. Kemudian masukkan Python pada
baris perintah. Koding langsung dilakukan di interpreter interaktif
seperti berikut:

$python # Unix/Linux
Atau
python% # Unix/Linux
Atau
C:> python # Windows/DOS

Berikut adalah daftar semua opsi baris perintah yang tersedia.

Opsi & Deskripsi

-d : memberikan hasil debug.

-HAI: menghasilkan bytecode yang dioptimalkan (menghasilkan


file .pyo).

-S
Jangan menjalankan situs impor untuk mencari jalur Python saat
startup.

-v : keluaran verbose (jejak terperinci pada laporan impor).

-X : menonaktifkan pengecualian bawaan berbasis kelas (cukup


gunakan string); usang mulai dengan versi 1.6.

-c cmd :jalankan skrip Python yang dikirim sebagai string cmd

Mengajukan : jalankan skrip Python dari file yang diberikan

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 6


Script dari baris perintah
Skrip Python dapat dieksekusi pada command line (Gambar 1)
dengan memohon penerjemah pada aplikasi Anda, seperti berikut.

$python script.py # Unix/Linux


atau
python% script.py # Unix/Linux
atau
C: >python script.py # Windows/DOS
Catatan - Pastikan mode izin file memungkinkan eksekusi.

Gambar 1. Halaman Python Command Line

Lingkungan Pengembangan Terpadu


Python dapat dijalankan dari lingkungan Graphical User Interface
(GUI) juga (Gambar 2), jika tersedia aplikasi GUI di sistem Anda
yang mendukung Python seperti berikut:
• Unix - IDLE adalah IDE Unix pertama untuk Python.
• Windows - PythonWin adalah antarmuka Windows
pertama untuk Python dan merupakan IDE dengan GUI.
• Macintosh - Versi Macintosh dari Python bersama dengan
IDLE IDE tersedia dari situs web utama, dapat diunduh
sebagai file MacBinary atau BinHex.

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 7


Gambar 2 . Halaman Python GUI

Pastikan lingkungan Python diatur dengan benar dan berfungsi


dengan baik.
Catatan - Semua contoh yang diberikan dalam bab-bab selanjutnya
dijalankan dengan versi PythonXY 2.7. (diunduh dari laman web kelas
virtual UB /VLM).
Beberapa lingkungan Pemrograman Python tersedia dalam
jaringan, sehingga Anda dapat mengeksekusi semua contoh yang
tersedia secara online ketika Anda sedang belajar teori. Jangan ragu
untuk memodifikasi contoh apa pun dan menjalankannya secara
online seperti pada tautan berikut:
https://www.tutorialspoint.com/python/python_environment.htm,

atau
https://www.tutorialspoint.com/python/pdf/python_environment.pdf.

Pada buku ini selanjutnya akan dibahas penggunaan Python pada


lingkungan terpadu dengan sistem operasi Windows. Contoh dan
penjelasan mengenai penggunaan Python pada windows dengan

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 8


lingkungan terpadu dari PythonXY akan diuraikan pada sesi
berikutnya.
Setelah installer diunduh dan diperoleh file PythonXY.msi dan
diinstall akan didapatkan ikon seperti pada Gambar 3a. Pada
gambar tersebut bila dieksekusi akan diperoleh tampilan seperti
Gambar 3b, yakni konsol utama dari PythonXY.
Pada konsol utama tersebut terdapat berbagai fitur Python
(Shortcuts), dokumentasi, dan penjelasan tentang Python. Pada
jendela Shorcuts bisa dipilih berbagai aplikasi, konsol interaktif,
pilihan spyder, direktori kerja dari skrip Python, dan pilihan folder
logging. dan Selanjutnya pemrograman bisa dilakukan melalui
berbagai pilihan seperti: Python, IPhyton, QPython, dan Spyder.
Gambar 4a menunjukan jendela konsol untuk Python Enthough.
Jendela tersebut diperoleh dari penekanan tombol C: dengan
pilihan Python. Bila pilihan diganti dengan IPhyton atau QPython
maka akan diperoleh jendela tampilan seperti pada Gambar 4b.
Sedangkan pada Gambar 5 ditunjukan konsol untuk pilihan Spyder
pada konsol utama.
Python Spyder memiliki fitur jendela yang lebih lengkap
dibandingkan dengan yang lain. Fitur tersebut mengandung
Jendela file yang bisa dipergunakan untuk membuka dan
mengeksekusi kode-kode program Python. Selain jendela file juga
terdapat konsol interaktif yang bisa dipergunakan untuk menguji
kode program baris demi baris dan sekaligus menunjukan hasil
eksekusi program.

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 9


a) b)

Gambar 3. a) Ikon PhytonXY pada desktop, b) Konsol utama PythonXY

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 10


a)

b)

Gambar 4. Jendela tampilan konsol a) Python Enthough; b) Interaktif


Python

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 11


Gambar 5. Jendela Python Spyder

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 12


PERINTAH DASAR PYTHON UNTUK APLIKASI
PENGOLHAN CITRA

2.1 Operasi Dasar Matematis

2.1.1 Peubah/ Variable


Variabel adalah lokasi memori yang digunakan untuk menyimpan
data. Misalkan variable a dipakai untuk menyimpan data 5 maka
dituliskan:
>>> a = 5
Di sini, a adalah variabel yang telah ditugaskan untuk menyimpan
data 5. Dalam Python tipe data tidak perlu didefinisikan dalam
variabel. Sehingga dapat dilakukan sesuatu seperti ini:
>>> a = 5
>>> print("a =", 5)
>>> a = "High five"
>>> print("a =", a)

2.1.2 Operator

Operator adalah simbol khusus dalam Python yang dipakai untuk


melakukan perhitungan aritmatika atau logika. Nilai yang
dioperasikan oleh operator disebut operan.
Sebagai contoh:
>>> 2+3
5

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 13


Dalam contoh tersebut, + adalah operator yang melakukan
penambahan, 2 dan 3 adalah operan dan 5 merupakan output dari
operasi.

Operator aritmatika
Operator aritmatika digunakan untuk melakukan operasi
matematika seperti penjumlahan, pengurangan, penggandaan, dll.

Operator Arti Contoh

Tambahkan dua operan atau unari


+ x+y
plus

Kurangkan operan kanan dari kiri


- x–y
atau unari minus

* Kalikan dua operan x*y

Bagi operan kiri dengan operan


/ x/y
kanan (selalu menghasilkan float)

Modulus - sisa dari pembagian


% x % y (sisa x/y)
operan kiri di sebelah kanan

Bagi lantai - pembagian yang


// menghasilkan bilangan bulat x // y
disesuaikan ke kiri di garis bilangan

Eksponen - operan kiri dinaikkan ke x**y (x pangkat


**
kekuatan kanan y)

Operator pembanding
Operator perbandingan digunakan untuk membandingkan nilai
dengan hasil balik berupa True atau False yang sesuai dengan
kondisi.
Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 14
Operator Arti Contoh

Lebih besar - Benar jika operan kiri


> x> y
lebih besar dari kanan

Kurang dari itu - Benar jika operan


< x <y
kiri kurang dari kanan

Sama dengan - Benar jika kedua


== x == y
operan sama

Tidak sama dengan - Benar jika


!= x! = y
operan tidak sama

Lebih besar dari atau sama dengan -


>= Benar jika operan kiri lebih besar x> = y
atau sama dengan kanan

Kurang dari atau sama dengan -


<= Benar jika operan kiri kurang dari x <= y
atau sama dengan kanan

Operator logika
Ada 3 operator logika yang dipergunakan dalam Python, yakni
and, or, not.

Operator Arti Contoh

Benar jika kedua operan itu


and x and y
benar

Benar jika salah satu dari


or x or y
operan itu benar

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 15


Benar jika operan salah
not not x
(melengkapi operan)

Operator bitwise
Operator bitwise bertindak pada operan seolah-olah mereka
adalah string dari angka biner. Operator ini beroperasi bit demi
bit. Sebagai contoh, 2 adalah 10 dalam biner dan 7 adalah 111.
Dalam tabel di bawah ini: Misalkan x = 10 ( 0000 1010 dalam biner)
dan y = 4 ( 0000 0100 dalam biner)

Operator Berarti Contoh

& Bitwise DAN x & y = 0 ( 0000 0000)

| Bitwise ATAU x | y = 14 ( 0000 1110)

~ Bitwise tidak ~ x = -11 ( 1111 0101)

^ Bitor XOR x ^ y = 14 ( 0000 1110)

Pergeseran kanan
>> x >> 2 = 2 ( 0000 0010)
bitwise

Pergeseran ke kiri x << 2 = 40 ( 0010


<<
sedikit 1000)

Operator penugasan
Operator penugasan digunakan dalam Python untuk menetapkan
nilai ke variabel. Misalkan a = 5 adalah operator penugasan
sederhana yang memberikan nilai 5 di sebelah kanan ke
variabel a di sebelah kiri. Ada beberapa operator gabungan di

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 16


Python seperti a += 5, dimaksudkan untuk menambahkan variabel
dengan tetapan sama. Operator ini setara dengan a = a + 5.

Operator Contoh Setara dengan

= x=5 x=5

+= x+=5 x=x+5

-= x-=5 x=x-5

*= x*=5 x=x*5

/= x/=5 x=x/5

%= x% = 5 x = x% 5

// = x // = 5 x = x // 5

** = x ** = 5 x = x ** 5

&= x&=5 x=x&5

|= x|=5 x=x|5

^= x^=5 x=x^5

>> = x >> = 5 x = x >> 5

<< = x << = 5 x = x << 5

Operator khusus
Bahasa Python menawarkan beberapa jenis operator khusus seperti
operator identitas atau operator keanggotaan. Mereka dijelaskan di
bawah ini dengan contoh-contoh.

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 17


Operator identitas. Ada 2 macam operator identitas, Is dan is
not. Operator ini digunakan untuk memeriksa apakah dua nilai
(atau variabel) terletak pada bagian memori yang sama. Catat
bahwa dua variabel yang sama tidak menyiratkan bahwa mereka
identik.
Pada Contoh 1 terlihat bahwa x1 dan y1 adalah bilangan bulat dari
nilai yang sama, sehingga mereka sama dan identik. Sama halnya
dengan x2 dan y2 (string). Tetapi x3 dan y3 adalah list keduanya
sama tetapi tidak identik. Itu karena penerjemah menempatkan
mereka secara terpisah dalam memori meskipun mereka sama.

Operat
Arti Contoh
or

Benar jika operan identik (merujuk


Is x True
ke objek yang sama)

Benar jika operan tidak identik


is not x False
(tidak merujuk ke objek yang sama)

Contoh 1: Operator identitas

Operator keanggotaan. Ada 2 macam operator keanggotaan in


dan not in. Mereka digunakan untuk menguji apakah suatu nilai

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 18


atau variabel ditemukan dalam suatu urutan
(string, list, tuple, set dan kamus ). Kamus hanya bisa menguji
keberadaan kunci, bukan nilainya.

Operator Berarti Contoh

Benar jika nilai / variabel


in 5 in x
ditemukan dalam urutan

Benar jika nilai / variabel tidak


not in 5 not in x
ditemukan dalam urutan

2.2 Operasi Vektor


Pada sesi ini ditunjukan bagaimana melaksakan operasi vector
dalam Python dengan menggunakan modul NumPy. Penggunaan
modul dilakukan dengan mengimport modul NumPy dalam
program. Pada bahasan ini dijelaskan beberapa operasi vector
seperti:
• Produk skalar (dot)
• Produk silang (cross)
• dan banyak operasi lain pada matriks

Pada operasi matrik dan vector yang diterapkan pada elemen-


elemennya, maka array harus memiliki ukuran yang sama.
Dalam penambahan dan pengurangan vektor pada ilmu fisika,
misalkan penjumlahan vector gaya dilakukan dengan metode
jajaran genjang. Metode ini menyelesaikan (atau
memvisualisasikan) hasil penerapan dua vector gaya pada suatu
objek.
Penambahan dua vektor dapat direpresentasikan secara grafis
dengan menempatkan awal panah y di ujung panah x, dan

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 19


kemudian menggambar panah dari awal (ekor) x ke ujung (kepala)
y. Panah baru yang digambar mewakili vektor x + y (Gambar 3a).
Pengurangan vektor sama dengan menambahkan negatifnya. Jadi,
pengurangan vektor x dan y sama dengan menjumlahkan x dan –y,
𝑥 − 𝑦 = 𝑥 + (−𝑦)
Pengurangan dua vektor dapat didefinisikan secara geometris
sebagai berikut (Gambar 3b): untuk mengurangi y dari x, kita
tempatkan titik akhir x dan y pada titik yang sama, dan kemudian
gambar panah dari ujung y ke ujung x. Panah itu mewakili vektor x
- y, lihat gambar di sisi kanan. Secara matematis, kita mengurangi
komponen vektor y dari vektor x.
Produk skalar (perkalian dot) adalah operasi aljabar yang
mengambil koordinat dua vektor yang berukuran sama dan
mengembalikan angka tunggal. Hasilnya dihitung dengan
mengalikan entri yang sesuai dan menambahkan produk-produk
tersebut. Nama produk dot berasal dari kenyataan bahwa titik "·"
di antara dua vektor sering digunakan untuk menunjuk operasi ini.
Nama produk skalar berfokus pada sifat skalar dari hasilnya.
Produk skalar didefinisikan sebagai:

𝑎⃗. 𝑏⃗ = |𝑎⃗| 𝑏⃗ cos 𝑎⃗, 𝑏⃗

Jadi definisi produk skalar menjelaskan bahwa operasi vector ini


dapat digunakan untuk menghitung kosinus sudut antara dua
vektor. Produk skalar juga dapat dihitung sebagai:

𝑎⃗. 𝑏⃗ = 𝑎 𝑏 + 𝑎 𝑏
Cara menghitung produk skalar dengan Python dapat dilihat
seperti pada Contoh 2.
Produk silang atau produk vektor adalah operasi biner pada dua
vektor dalam ruang tiga dimensi. Hasilnya adalah vektor yang

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 20


tegak lurus terhadap vektor yang dikalikan dan normal ke bidang
yang mengandungnya.

(a) (b)

Gambar 6. Operasi penjumlahan dan pengurangan vektor

Produk silang dari dua vektor a dan b dilambangkan dengan a × b


dan didefinisikan sebagai:

𝑎⃗𝑥𝑏⃗ = |𝑎⃗| 𝑏⃗ 𝑠𝑖𝑛 𝑎⃗, 𝑏⃗

Contoh 2: Produk skalar

dimana n adalah vektor satuan tegak lurus terhadap bidang yang


mengandung a dan b dalam arah yang diberikan oleh kaidah tangan

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 21


kanan. Jika salah satu vektor yang dikalikan adalah nol atau
vektornya paralel maka produk silangnya adalah nol. Besarnya
produk scalar sama dengan luas jajar genjang dengan vektor
sebagai sisinya. Jika vektor tegak lurus, jajaran genjang adalah
persegi panjang dan besarnya produk adalah produk dari
panjangnya (Gambar 4).
Contoh 3: Produk Silang

Gambar 7. Produk silang/ vektor dari vektor a dan b.

2.3 Operasi Matrik


Operasi matrik pada Python juga menggunakan modul NumPy.
Beberapa contoh operasi matrik yang bisa dilakukan pada python
antara lain:
• Penjumlahan dan pengurangan matrik

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 22


• Perkalian matrik
• Perkalian array/ larik
• Transpose matrik
• Identitas matrik

Penjumlahan dan pengurangan dalam matrik dapat dilakukan


jika jumlah baris dan kolom dari matrik yang dijumlahakan sama
(lihat Contoh 4). Dalam contoh tersebut matrik X(3x3)
dijumlahkan dengan matrik Y(3x3) dan dihasilkan matrik Z(3x3).
1 2 3 −1 −2 −3 0 0 0
𝑋= 4 5 6 Y= −4 −5 −6 𝑍= 0 0 0
7 8 9 −7 −8 −9 0 0 0
Operasi perkalian dari dua matriks dapat dilakukan jika jumlah
kolom dari matriks kiri sama dengan jumlah baris dari matriks
kedua atau kanan (lihat Gambar 8). Secara matematis dihitung
seperti berikut:

𝑐 = 𝑎 𝑏

Contoh 4: Penjumlahan matrik

Perkalian matrik juga dapat dilakukan dengan menggunakan


Produk dot dari larik yang jumlah baris dan kolomnya sama seperti
pada vektor. Dalam modul numpy perintah dot dengan memanggil

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 23


modul diikuti dengan penugasannya misalkan x dan y adalah larik,
maka operasi dapat dilakukan dengan 2 cara. Cara pertama
mengubah larik ke matrik dengan memanggil modul seperti
berikut:
𝑀𝑋 = 𝑛𝑢𝑚𝑝𝑦. 𝑚𝑎𝑡(𝑥)
𝑀𝑌 = 𝑛𝑢𝑚𝑝𝑦. 𝑚𝑎𝑡(𝑦)

Gambar 8. Perkalian matrik

Disini 𝑀𝑋 dan 𝑀𝑌 adalah matrik yang dikasting dari larik x.


Selanjutnya perkalian matrik dapat dilakukan dengan operator “*”,
Misalkan 𝑀𝑍 adalah matrik hasil perkalian dari 𝑀𝑋 dan 𝑀𝑌, maka
dituliskan:
𝑀𝑍 = 𝑀𝑋 ∗ 𝑀𝑌
Operasi ini identik dengan mengoperasikan 2 larik melalui produk
dot seperti berikut
𝑀𝑍 = 𝑛𝑢𝑚𝑝𝑦. 𝑑𝑜𝑡(𝑥, 𝑦)
Perkalian larik/Array adalah perkalian antar elemen dari matrik,
misalkan x11.y11, x12.y12, …, xNN.yNN (Contoh 6). Python juga
memiliki pustaka untuk merubah larik menjadi matrik atau

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 24


sebaliknya (lihat Contoh 5). Pada contoh tersebut larik tupel-3
dengan variable x,y dirubah menjadi matrik-3 dengan perintah
mat(). Fungsi ini diambil dari modul numpy.
Transpose matrik adalah operasi yang mengubah baris suatu
matrik menjadi kolom atau sebaliknya. Operasi transpose hanya
berlaku untuk matrik. Misalkan larik x1=(1,2,3) dan larik
y1=(4,5,6), maka transpose x1 (x1T) tidak mengubah apa-apa,
tetapi jika x1 dirubah dahulu menjadi matrik (x1M: matrik baris)
maka operasi transpose terhadap x1M akan menghasilkan matrik
baris (x1T yang baru) (lihat Contoh 8).
Contoh 5: merubah larik menjadi matrik

Operasi matrik lain yang banyak digunakan adalah Identitity, Zeros,


dan Ones. Identitity, adalah matrik persegi yang dibentuk dengan
diagonal bernilai 1 dan yang lain bernilai nol. Zeros adalah
pembentukan matrik dalam ukuran (m,n) yang nilainya sama
dengan 0, sedangkan Ones adalah pembentukan matrik berukuran
(m,n) yang nilainya 1 (lihat Contoh 9).

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 25


Contoh 6: perkalian larik

Contoh 7: perkalian matrik

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 26


Contoh 8: Transpose matrik

2.4 Fungsi dalam Python


Python juga mampu untuk menuliskan fungsi yang didefinisikan
oleh pemakainya. Sebuah fungsi dibuat dengan menuliskan kata
simpanan def diikuti dengan nama fungsi dan argumen yang
dikirim dan dicari. Misalkan Pangkat (a,b) , hal ini menyatakan
bahwa pangkat adalah nama fungsi sedangkan (a,b) argumen
penugasannya. Berikut contoh koding untuk def sebagai fungsi
pangkat dengan sebutan y2 dan (y,p) sebagai argumen masukan
dan kembalian fungsi adalah y=yp.

Pada koding tersebut menyatakan fungsi y2 dengan argumen (y,p).


Fungsi tersebut bertugas sebagai fungsi pangkat yang dalam
Python dinyatakan sebagai y**=p, maksudnya adalah y=y pangkat

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 27


p atau y=yp, sehingga bila argumen y=3 dan p=3 berarti y=33
dengan kembalian fungsi adalah 27.
Contoh 9: matrik Identitas, Nol, dan Satu

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 28


DASAR-DASAR PENGOLAHAN CITRA DAN
PEMROGRAMANNYA

3.1 Pendahuluan
Pada bagian ini akan menjelaskan tentang dasar-dasar pengolahan
citra menggunakan PYTHON. Seperti yang telah dibahas
sebelumnya bahwa PYTHON merupakan bahasa komputasi yang
memilki banyak sekali fungsi built-in berkaitan dengan matrik dan
persamaan-persamaan yang biasa digunakan pada bidang tertentu.
PYTHON sangat memudahkan pengguna untuk melakukan
pemrograman dan pengguna juga tidak terlalu dipusingkan dengan
logika pemrograman, sehingga bisa lebih fokus pada logika
penyelesaian masalah yang dihadapi.

3.2 Citra Digital


Image atau citra adalah representasi spasial dari suatu objek dan
dalam bidang dua dimensi biasanya ditulis dalam koordinat
kartesian x-y, sehingga setiap koordinat merepresentasikan satu
sinyal terkecil dari objek. Biasanya koordinat terkecil ini disebut
sebagai piksel. Karena citra merupakan sistem koordinat yang
memiliki nilai, maka citra dapat dianggap sebagai sebuah matrik x-
y yang berisi nilai piksel.
Represntasi dari matriks tersebut dapat ditulis sebagai berikut:
𝑓(0,0) 𝑓(0,1) … 𝑓(0, 𝑁 − 1)
𝑓(1,0) 𝑓(1,1) … 𝑓(1, 𝑁 − 1)
𝑓(𝑥, 𝑦) =
⋮ ⋮ ⋮ ⋮
𝑓(𝑀 − 1,0) 𝑓(𝑀 − 1,1) … 𝑓(𝑀 − 1, 𝑁 − 1)

Dan di PYTHON representasi ini biasa ditulis menjadi

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 29


𝑓(1,1) 𝑓(1,2) … 𝑓(1, 𝑁)
𝑓(2,1) 𝑓(2,0) … 𝑓(2, 𝑁)
𝑓=
⋮ ⋮ ⋮ ⋮
𝑓(𝑀, 1) 𝑓(𝑀, 2) … 𝑓(𝑀, 𝑁)

Perlu diperhatikan bahwa indeks matriks pada PYTHON selalu


dimulai dengan angka 1, sehingga untuk f(0,0) akan sama dengan
f(1,1) pada PYTHON.
Bentuk matrik dari citra ini kemudian dapat diolah menurut teori-
teori tertentu untuk tujuan pemecahan masalah tertentu. Bentuk
matriks adalah perwujudan dari bentuk sinyal digital sehingga
proses pemecahan dan pengolahan matriks dari citra ini biasanya
disebut dengan digital image processing.
Pada Python pengolahan citra digital dapat dilakukan dengan
menggunakan Python Imaging Library (PIL), dimana citra
diproses sebagai raster; yaitu, data piksel persegi panjang. Citra
digital memiliki properti pita (band), modes, ukuran (size),
koordinat (coordinate) dan palet (palette).

Pita (Band)
Suatu citra dapat terdiri dari satu atau lebih pita data. PIL
memungkinkan pengguna menyimpan beberapa pita dalam satu
citra, asalkan mereka semua memiliki dimensi dan kedalaman yang
sama. Misalnya, gambar PNG mungkin memiliki pita 'R', 'G', 'B', dan
'A' yang mewakili pia warna merah, hijau, biru, dan alfa (nilai
transparansi). Operasi pengolahan citra biasanya bekerja pada
masing-masing band secara terpisah, misalnya, histogram. Asumsi
yang biasanya dipakai adalah setiap piksel memiliki satu nilai pada
setiap pita. Untuk mendapatkan jumlah dan nama pita dalam suatu
citra bisa digunakan metode getbands() .

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 30


Mode
Modus suatu citra didefinisikan sebagai jenis dan kedalaman piksel
dalam gambar. Mode standar yang biasanya tersedia antara lain:
• 1 (piksel 1-bit, hitam dan putih, disimpan dengan satu
piksel per byte)
• L (piksel 8-bit, hitam dan putih)
• P (piksel 8-bit, dipetakan ke mode lain menggunakan palet
warna)
• RGB (piksel 3x8-bit, warna asli)
• RGBA (Piksel 4x8-bit, warna asli dengan topeng
transparansi)
• CMYK (Piksel 4x8-bit, pemisahan warna)
• YCbCr (piksel 3x8-bit, format video berwarna)
• LAB (piksel 3x8-bit, ruang warna L*a*b)
• HSV (piksel 3x8-bit, Hue, Saturasi, Spasi nilai warna)
• I (piksel 32-bit integer bertanda)
• F (Piksel 32-bit mengambang)
PIL juga menyediakan dukungan terbatas untuk beberapa mode
khusus, termasuk LA(L dengan alpha), RGBx(true color dengan
padding) dan RGBa(true color dengan alpha yang di-
premultiplied). Mode citra dapat dibaca melalui atribut
mode . Atribut ini berupa string yang berisi salah satu nilai di atas.

Ukuran (size)
Ukuran citra dapat dibaca melalui atribut size . Atribut ini berupa
tuple-2, berisi ukuran horizontal dan vertikal dalam piksel.

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 31


Koordinat
Sistem koordinat yang digunakan dalam PIL berupa sistem
koordinat piksel Cartesian, dengan (0,0) di sudut kiri
atas. Koordinat biasanya disimpan dalam pustaka sebagai tupel-2
(x, y). Citra persegipanjang dinyatakan sebagai sebagai tupel-4,
dengan sudut kiri atas diberikan terlebih dahulu. Misalnya, persegi
panjang yang mencakup semua gambar 800x600 piksel ditulis
sebagai (0, 0, 800, 600).

Palet
Palet (p) merupakan palet warna yang dipakai untuk menentukan
warna aktual untuk setiap piksel.

Info
Selain informasi bawaan citra yang tersebut sebelumnya, citra
dapat dilampiri dengan informasi tambahan menggunakan atribut
info. Sebagian besar penangan citra dilakukan dengan
menambahkan properti ke atribut info saat memuat gambar, tetapi
menyimpan citra dapat diabaikan.

Filter
Untuk operasi geometri yang dapat memetakan beberapa piksel
input ke piksel keluaran tunggal, Pustaka Pencitraan Python
menyediakan empat filter resampling berbeda .
NEAREST : Memilih piksel terdekat dari citra input dan
mengabaikan semua piksel input lainnya.
BILINEAR : Mengubah ukuran, menghitung nilai piksel output
menggunakan interpolasi linier pada semua piksel yang dapat
berkontribusi pada nilai output. Interpolasi transformasi linier lain
digunakan jika citra input berukuran diatas 2x2.

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 32


BICUBIC: Mengubah ukuran, menghitung nilai piksel output
menggunakan interpolasi kubik pada semua piksel yang
berkontribusi pada nilai output. Penggunaan transformasi
interpolasi kubik lain pada citra input dengan lingkungan diatas
4x4 dilakukan.
LANCZOS : Menghitung nilai piksel output menggunakan filter
Lanczos berkualitas tinggi (sinc terpotong) pada semua piksel yang
dapat berkontribusi pada nilai output. Dalam versi PIL saat ini,
filter ini hanya dapat digunakan untuk metode resize dan
thumbnail.

3.3. Pemuatan Citra


Pada kelas Python utama, pengolahan citra merupakan bagian dari
modul kelas Python Imaging Library (PIL). Kelas ini di definisikan
dalam modul Python dengan nama PIL. Untuk membuat instansiasi
kelas dapat dilakukan dengan beberapa cara; baik dengan memuat
citra dari file, memproses citra lain, atau membuat citra dari awal.

Pemuatan citra dari file dapat dilakukan dengan menggunakan


fungsi open()dalam modul Image.
>>> from PIL import Image as C
>>> citra=C.open("flower1.jpg")
>>> citra.show()
Pada baris 1 modul PIL dipanggil beserta obyek Image. Perintah
itu digunakan untuk membaca file citra dengan perintah open, lalu
ditampilkan citra yang dibaca ditampilkan dengan perintah show().
Dalam skrip tersebut fungsi Image dari kelas PIL di impor dan
diberi nama C. Selanjutnya im adalah instansiasi untuk membuka
file “flower1.jpg”.

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 33


Jika file citra berhasil dibuka, fungsi tersebut mengembalikan
Image sebagai objek. Sehingga dapat menggunakan atribut
instan untuk memeriksa isi file.
Citra yang dibaca bisa diperiksa formatnya, ukurannya, ataupun
tipenya. Pada contoh hasil pembacaan ditampilkan dengan perintah
print menghasilkan format, ukuran, tipe dan dicetak berturut-turut
'JPEG', (259, 194), 'RGB'.
>>> print(citra.format, citra.size, citra.mode)
('JPEG', (259, 194), 'RGB')

Keluaran dari kode tersebut menunjukan atribut file flower1.jpg,


yakni tipe filenya adalah JPEG ukurannya 259x194 pixel dan berupa
cita RGB.
Atribut format mengidentifikasi sumber dari citra. Jika citra tidak
dibaca dari file, maka diset None. Sedangkan atribut size berupa 2-
tupel yang berisi lebar dan tinggi (dalam piksel). Sedangkan mode
mendefinisikan jumlah dan nama-nama pita pada citra, jenis dan
kedalaman pixel. Mode umum adalah "L" (luminance) untuk citra
skala abu-abu, "RGB" untuk citra warna asli, dan "CMYK" untuk
citra pra-cetak. Jika file tidak dapat dibuka, eksepsi IOError
dimunculkan.

Setelah memiliki instansiasi kelas Image, penggunakan metode


yang ditentukan oleh kelas untuk memproses dan memanipulasi
citra dapat dilakukan. Misalnya, metampilkan citra yang baru
saja dimuat dengan perintah show() (Gambar 9).

3.4 Membaca dan menyimpan citra


Python Imaging Library mendukung beragam format file citra.
Untuk membaca file dari disk, digunakan open() fungsi dalam
modul Image. Format file tidak harus diketahui untuk membuka file

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 34


citra. Pustaka PIL secara otomatis akan menentukan format
berdasarkan pada isi file.
Sedangkan penyimpanan file citra digunakan metode save(). Saat
menyimpan file, nama menjadi penting, karena pustaka tidak
mengetahui format penyimpanan file mana yang akan digunakan.
Format file ditentukan menggunakan ekstensi nama file.

Gambar 9. Perintah buka dan tampilkan pada kelas image.

3.5 Manipulasi Citra


Kelas image berisi metode yang memungkinkan manipulasi citra
pada luasan tertentu dari sebuah citra. Misalkan untuk
mengekstrak sub-persegi panjang dari citra dapat digunakan
metode crop(). Manipulasi citra dapat dilakukan melalui kelas
Image untuk berbagai keperluan, misalkan memotong, memutar,

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 35


mempaste, menyeplit ataupun memerger. Perintah crop, rotate,
paste, split dan merge adalah beberapa contoh perintah yang
dipakai untuk memanipulasi citra (Contoh 3.1).
Contoh 3.1 : manipulasi citra

Pemotongan (Cropping)
Pada Contoh 3.1, ditunjukan beberapa contoh manipulasi citra
dengan modul PIL. Perintah crop(box) misalnya adalah perintah
yang dipakai untuk memotong citra pada ukuran yang diset oleh
box, dalam contoh tersebut citra dipotong dari koordinat
pixel(10,10) sampai pixel(100,100), ukuran ini tidak boleh melebihi
ukuran pixel aslinya yakni (259,194). Selanjutnya hasil potongan
tersebut bisa ditampilkan dengan memanggil obyek show() dengan
perintah potong.show(). Perintah-perintah manipulasi citra yang
lain bisa dilihat pada listing program pada Contoh 3.1.
Pada Contoh 3.2. Daerah crop() ditentukan oleh tupel 4 sesuai
keberadaan koordinat(kiri, atas, kanan, bawah). Pustaka
Pencitraan Python menggunakan sistem koordinat dengan (0, 0) di
sudut kiri atas. Perhatikan juga bahwa koordinat merujuk ke posisi
di antara piksel, sehingga wilayah dalam contoh di atas persis
(259,194) piksel.

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 36


Daerah potongan itu sekarang bisa diproses dengan cara tertentu
dan ditempelkan kembali. Saat menempelkan daerah potongan itu
kembali, ukuran wilayah harus sama persis dengan wilayah yang
diberikan. Selain itu, wilayah tidak dapat diperluas di luar citra.
Namun, mode citra asli dan wilayah potongan tidak harus sama.
Jika tidak, wilayah tersebut secara otomatis dikonversi sebelum
ditempelkan (lihat Contoh 3.3 dan Gambar 10).
Contoh 3.2: Menyalin subrektangle dari sebuah citra

Gambar 10. Pemotongan citra dengan crop() (Gambar kiri hasil kroping
dari gambar kanan)

Jadi kelas Image berisi metode yang memungkinkan pengguna


untuk memanipulasi daerah tertentu dalam gambar. Untuk

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 37


mengekstrak sub-persegi panjang dari gambar, digunakan metode
crop().

Tempel (Paste), gabung (Merge), dan urai(split)


Paste adalah metode menempelkan citra pada area tertentu dalam
citra. Misalkan kita ingin memproses subrectangle, dan
menempelkannya kembali seperti pada Contoh 3.3. Pada contoh
tersebut area pemotongan diwakili oleh perintah box, kemudian
citra potong adalah citra hasil pemotongan citra asal pada
koordinat pixel yang ditunjuk oleh box. Citra potong tersebut lalu
diputar dengan metode Transpose sebesar 1800 dan di tempelkan
kembali pada citra asal. Hasil proses potong dan tempel ini bisa
dilihat seperti pada Gambar 11.
Contoh 3.3: Potong dan tempel (paste)
1. from PIL import Image as C # Import metode Image
2. citra=C.open("flower1.jpg") # Buka gambar flower1.jpg sebagai citra
3. box = (10, 10, 100, 100) # Buat area subrectangle
4. potong=citra.crop(box) # Potong citra pada area subrectangle
5. potongTranspose=potong.transpose(C.ROTATE_180) # Putar citra potongan 1800dengan
metode transpose
6. citra.paste(potongTranspose,box) # Tempelkan citra potongan pada citra asal
7. citra.show() # Tampilkan citra

PIL juga memungkinkan pengguna untuk bekerja dengan pita


tunggal secara individu dari citra multipita (multi-band), seperti
citra RGB. Metode split menciptakan satu set citra baru, masing-
masing berisi satu pita dari gambar multi-pita asal. Fungsi merge
berfungsi untuk menggabung citra. Fungsi ini mengambil mode
dan tupel citra, lalu menggabungkannya menjadi citra baru. Contoh
3.4. berikut menukar tiga pita gambar RGB menjadi BGR pada
potongan citra dan menggabungkaanya kembali ke citra asal
(Gambar 11).

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 38


Perhatikan bahwa untuk citra dengan pita tunggal, metode split()
mengembalikan citra itu sendiri. Bila bekerja dengan pita warna,
citra diubah terlebuh dahulu menjadi citra "RGB".

(a)

(b)

(c)

(d)
Gambar 11. Pemotongan (crop), penggabungan (merge) dan pemisahan
(split) pita. a) pemotongan citra seluas subpersegi tertentu. b) tempelkan
citra potongan yang sudang diputar kedalam citra asal. c) potongan citra
yang diurai(split) dengan warna BGR. d) penggabungan citra potong
BGR dengan citra asal.

Contoh 3.4. Pemotongan dan penguraian pita warna


1. from PIL import Image as C # Import metode Image
2. citra=C.open("flower1.jpg") # Buka gambar flower1.jpg sebagai citra
3. box = (10, 10, 100, 100) # Buat area subrectangle
4. potong=citra.crop(box) # Potong citra pada area subrectangle
5. r,g,b=potong.split() # Urai warna RGB citra potong
6. potong_bgr=C.merge("RGB",(b,g,r)) # Ubah citra rgb menjadi B,G,R
7. citra.paste(potong_bgr,box) # Tempelkan citra potongBGR pada citra asal
8. citra.show() # Tampilkan citra

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 39


3.6 Transformasi dan Peningkatan (enhancement)

Transformasi
Pustaka PIL memungkinkan konversi gambar di antara
representasi mode piksel yang berbeda menggunakan metode
convert(). Misalkan perintah
citra = Image. open ( "flower3.jpg" ) . convert ( "L" )
melakukan transformasi mode (lihat sub-bab 3.2 tentang mode
citra) yang didukung. Pada perintah itu citra diubah ke citra hitam
putih, yakni dengan mentransformasikan ke mode "L". Konversi
mode lain harus menggunakan citra perantara (biasanya
citra"RGB").
Transformasi titik, yakni merubah nilai setiap titik piksel dengan
mengalikan nilai piksel pada suatu konstanta. Transformasi titik
dapat dilakukan dengan metode point(). Misalkan menerapkan
transformasi titik dengan mengalikan setiap piksel dengan 2 maka
dapat diperintahkan
ubahTitik=citra.point(lambda i:i*2)
Teknik ini dapat dipakai untuk menerapkan ekspresi sederhana
apa pun pada citra dengan cepat. Metode point() juga dapat
digabungkan dengan metode paste() untuk memodifikasi citra
secara selektif (misalnya memanipulasi kontras citra). Dalam
banyak kasus, fungsi objek yang mengharapkan satu argumen
dapat diteruskan ke metode ini dan setiap piksel diproses menurut
fungsi itu.
Transformasi geometris. PIL menggunakan metode resize() dan
rotate() untuk melakukan transformasi geometris. Metode resize()
mengambil tuple citra untuk membuat ukuran baru. Sedangkan

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 40


rotate() merubah geometri citra melalui sudut dalam derajat yng
berlawanan arah jarum jam. Misalkan transformasi geometri
sederhana dapat dilakukan seperti berikut:
resizeC128 = im.resize((128, 128))
putarC45= im.rotate(45) # putar 45 derajat berlawanan jarum jam

Penugasan variable citra resizeC128 tersebut bermakna merubah


ukuran citra menjadi 128x128 piksel. Sedangkan putarC45
bermakna merubah geometri citra sehingga setiap piksel citra
bergeser dengan sudut 45 berlawanan arah jarum jam.
Transformasi putar juga dapat dilakukan dengan metode
transpose(). Transformasi geometri yang lain seperti pelipatan
(flip) juga bisa dilakukan dengan metode transpose(). Flip dapat
digunakan untuk membalik citra di sekitar sumbu horizontal atau
vertikal. Beberapa contoh transformasi seperti berikut:
out = im.transpose(Image.FLIP_LEFT_RIGHT)
out = im.transpose(Image.FLIP_TOP_BOTTOM)
out = im.transpose(Image.ROTATE_90)
out = im.transpose(Image.ROTATE_180)
out = im.transpose(Image.ROTATE_270)

Implementasi Python untuk transformasi ini dapat dilihat seperti


pada Contoh 3.5 dan Gambar 12.
Contoh 3.5: Transformasi citra
1. from PIL import Image as C
2. import numpy as np
3. citra = C.open("flower2.jpg")
4. # transformasi warna
5. ubahBW=citra.convert("L")
6. ubahRGBA=citra.convert("RGBA")
7. ubahPalet=citra.convert("P")
8. # transformasi citra array
9. npCitra=np.array(citra)
10. npCitra=npCitra-50

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 41


11. npCitraBaru=C.fromarray(npCitra)
12. print npCitra.shape
13. # transformasi titik
14. ubahTitik=citra.point(lambda i:i*2)
15. #transformasi geometri
16. resizeC128 = citra.resize((128, 128))
17. putarC45= citra.rotate(45)
18. #simpan
19. resizeC128.save("resizeC128.bmp");putarC45.save("putarC45.bmp")
20. npCitraBaru.save("npCitraBaru.bmp"); citra.save("citraAsal.bmp")
21. ubahRGBA.save("UbahRGBA.jpg");
22. ubahBW.save("UbahBW.bmp"); ubahPalet.save("UbahPalet.bmp")
23. ubahRGBA.save("UbahRGBA.jpg"); #tidak bisa bmp

Citra asal Hitam putih

Array-20 Palet warna

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 42


Pixel x 2

Putar 45
Gambar 12. Transformasi citra.

Contoh 3.6: Penggunaan filter dari modul PIL


1. from PIL import Image as im
2. from PIL import ImageFilter as imf
3. citra=im.open("flowerf.png")
4. citra.show()
5. CE=citra.filter(imf.EMBOSS)
6. CEN=citra.filter(imf.EDGE_ENHANCE)
7. CFE=citra.filter(imf.FIND_EDGES)
8. CGB=citra.filter(imf.GaussianBlur)
9. CC=citra.filter(imf.CONTOUR)
10. CE.show();CEN.show();CFE.show();CGB.show();CC.show()

Peningkatan citra
PIL menyediakan sejumlah metode dan modul yang dapat
digunakan untuk meningkatkan kualitas citra. Modul Filter berupa
modul Python ImageFilter dan berisi sejumlah filter tambahan
yang berfungsi dalam pra-peningkatan citra. Modul ini dapat
digunakan dengan memanggil metode filter() dan diikuti dengan
fungsinya. Misalkan filter(ImageFilter.GaussianBlur) digunakan
untuk melakukan peningkatan citra dengan memberikan filter
pengkaburan gauss. Contoh Python skrip untuk filter dapat dilihat

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 43


seperti pada Contoh 3.6 dan beberapa keluarannya ditunjukan
pada Gambar 13.

Citra asli Contour

Edge Enhancement Emboss

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 44


Find Edge Median

Kontras 60% Penguatan Brightness


Gambar 13. Penggunaan modul Filter dan ImageEnhance untuk
peningkatan kualitas citra.

Peningkatan kualitas citra lebih lanjut dapat dilakukan dengan


menggunakan kelas-kelas dalam modul ImageEnhance. Perangkat
penguatan citra lebih lanjut seperti penyesuaian kontras,
kecerahan, keseimbangan warna, dan penajaman citra.
Pemanggilan modul ImageEnhance ini ditunjukan seperti berikut:
from PIL import ImageEnhance as Enh # Import ImageEnhance dengan nama alias Enh
from PIL import Image as C # Import Image dengan alias C

citra = C.open("flower3.jpg") # buka citra dari gambar flower3.jpg


kontras30 = Enh.Contrast(citra) # buat citra dengan penguatan kontras
citra.enhance(5).save("contrast5.bmp") # buat pengauatan kontras 5x dan simpan

Dasar Image Processing Menggunakan PYTHON, Sugeng Rianto 45

Anda mungkin juga menyukai