0
SEPTEMBER 1, 2020
PEMROGRAMAN FUNGSIONAL
PEMROGRAMAN FUNGSIONAL
MATERI POKOK
Pada teknologi sampai saat ini, banyak orang orang yang khusus nya menggunakan mesin
untuk memproses gambar sebagai tujuan yang di rencanakan. Mereka sama hal nya dengan
mencari dan mengetahui spot spot yang mungkin mencurigakan atau bisa di ketahui dari lokasi
spot tersebut bisa kita gunakan untuk mengetahui apakah ada hal lain yang mungkin menandakan
suatu gambar tersebut menjadi miss match.
Banyak dari teknologi yang dipakai sekarang adalah seperti contoh mesin scanner yang
sering di gunakan dalam mesin x ray di bandara sebagai pengecekan apakah ada barang barang
yang termasuk dalam kategori berbahaya. Dan juga CCTV yang bisa mendeteksi adanya
pergerakan yang di deteksi oleh sensor gerak yang sudah di install di dalam CCTV tersebut.
Processing image merupakan suatu proses yang melibatkan sebuah hasil citra warna dan
bentuk dari suatu gambar sehingga akan di proses menggunakan pemahaman mesin atau library
yang akan diterapkan ke dalam fungsi supaya mesin tersebut bisa mendeteksi secara otomatis.
Program yang dirancang oleh beberapa library tertentu bisa di susun berdasarkan apa yang di
tujukan untuk sebuah output yang di inginkan sehingga mesin akan mengerti dan mulai
memproses dengan sendirinya. Oleh karena itu program dari beberapa function dan juga library
juga di susun dengan terstruktur sehingga mesin akan memprosesnya dengan secara terstruktur
juga.
MATERI PRAKTIKUM
Matplotlib adalah library visualisasi di Python untuk plot array 2D. Matplotlib adalah pustaka
visualisasi data multi-platform yang dibangun di array NumPy dan dirancang untuk bekerja dengan
tumpukan SciPy yang lebih luas. Ini diperkenalkan oleh John Hunter pada tahun 2002. Salah satu manfaat
visualisasi terbesar adalah memungkinkan kita akses visual ke sejumlah besar data dalam visual yang
mudah dicerna. Matplotlib terdiri dari beberapa plot seperti garis, bar, tebar, histogram dll.
Contoh penggunaan library :
import matplotlib.pyplot as plt
import matplotlib.image as img
Berikut adalah sebagai contoh program yang akan membaca sebuah image yang di panggil
berdasarkan nama citra beserta dengan format ekstensi yang di gunakan :
Untuk melihat sebuah type gambar yang diproses maka berikan function yang membaca
format dalam gambar tersebut.
In[1]: type(img)
Out[1]: PIL.JpegImagePlugin.JpegImageFile
Setiap gambar pasti memiliki size yang berbeda beda, maka kita bisa mendeteksi ukuran
gambar yang kita proses menggunakan fungsi size.
In[1]: img.size
2. Image Processing
Sebelum kita memproses sebuah citra, kita perlu tau sifat apa saja yang dimiliki oleh citra
tersebut, mulai dari format, bentuk, sampai ke warna citra tersebut. Sehingga citra tersebut ketika
di proses menggunakan mesin, kita perlu menyesuaikan seluruh bentuk dari citra tersebut supaya
dapat mudah di pahami oleh mesin tersebut untuk bisa di proses sesuai dengan output yang kita
inginkan.
Untuk memulai memproses gambar, maka kita harus tau ukuran asli dari gambar tersebut
menggunakan format fungsi plt imshow.
In[1]: plt.imshow(img)
Out[1]:
Kita juga bisa menghilangkan garis yang ada di setiap sisi dari gambar yang di proses
dengan menghilangkan visible dan mengubahnya menjadi False.
Out[1]:
Dan kita bisa me resize ukuran gambar tersebut sesuai dengan keinginan kita dan juga
sebagai penyesuaian sehingga mesin bisa memproses dan bekerja dengan baik. Kebanyakan dari
project data citra prosessing, banyak yang merubah ukuran / resize ukuran yang dengan mengatur
dimensi yang sama.
Out[3]:
Kita juga memproses warna citra sesuai apa yang mungkin kita inginkan, sehingga
beberapa bit dalam warna akan terbaca sangat mudah oleh mesin, ini berguna sekali ketika ingin
memproses perbandingan dengan gambar yang lain.
In[1]: img[:, :, 1] = 0
img[:, :, 2] = 0
Out[1]:
Kita bisa melihat sebuah aturan dimensi array yang digunakan dalam data yang merupakan
kumpulan bit pixel dalam format RGB yang di susun menjadi sebuah matrix array sehingga
membentuk sebuah gambar tersebut.
[[ 3, 68, 126],
[ 3, 68, 126],
[ 2, 68, 126],
...,
[ 7, 52, 111],
[ 13, 37, 75],
[ 8, 15, 7]],
[[ 3, 68, 126],
[ 3, 68, 126],
[ 2, 68, 126],
...,
[ 7, 52, 111],
[ 13, 37, 75],
[ 8, 15, 7]],
...,
[[ 1, 38, 82],
[ 2, 39, 83],
[ 1, 40, 83],
...,
[ 6, 45, 100],
[ 13, 33, 68],
[ 8, 14, 4]],
[[ 1, 38, 82],
[ 2, 39, 83],
[ 1, 40, 83],
...,
[ 6, 45, 100],
[ 13, 33, 68],
[ 8, 14, 4]],
[[ 1, 38, 82],
[ 2, 39, 83],
[ 1, 40, 83],
...,
[ 6, 45, 100],
[ 13, 33, 68],
[ 8, 14, 4]]], dtype=uint8)
Perhatikan bahwa entri img_array bilangan bulat positif. Ini adalah kasus karena, seperti yang
disebutkan di atas, dalam aplikasi komputer koordinat RGB sering diwakili oleh bilangan bulat dalam
kisaran 0-255. Dengan tujuan memanipulasi array ini, akan lebih mudah untuk mengonversi entrinya
menjadi mengapung dalam rentang 0,0-1,0. Ini dapat dilakukan dengan membagi semua entri img_array
255.
...
Kita juga dapat memunculkan gambar tersebut menggunakan fungsi imshow yang sudah
di inisialisasikan sebelumnya.
In[1]: plt.figure(figsize=(10,10))
plt.imshow(norm)
plt.show()
Out[1]:
In[1]: plt.figure(figsize=(10,6))
for i in range(1,5):
plt.subplot(2,2,i)
x = 1 - 0.2*(i-1)
plt.axis('off')
plt.title('x={:.1f}'.format(x))
plt.imshow(norm*x)
plt.show()
Out[1]:
Kita juga bisa memotong gambar tersebut dengan fungsi yang ada dari imshow yang
dimana mengatur size figure dari gambar tersebut. Sehingga pada saat pemotongan gambar, akan
tampil berdasarkan dimensi yang sudah di tentukan.
In[1]: plt.figure(figsize=(6,6))
plt.imshow(norm[:150,100:270,:])
plt.axis('off')
plt.show()
Out[1]:
RGB adalah model warna yang biasa digunakan untuk menggambarkan warna yang
ditampilkan di layar komputer.RGB menggunakan tiga warna dasar: merah, hijau, dan biru.
Warna lain diperoleh dengan mencampur komponen dasar ini dalam berbagai proporsi.
Dalam model RGB setiap warna dijelaskan oleh tiga angka yang memberikan intensitas
merah, hijau, dan biru. Dalam matplotlib angka-angka ini antara 0 (full off) hingga 1 (penuh),
tetapi dalam banyak aplikasi komputer lain mereka diambil untuk menjadi bilangan bulat antara
0 dan 255. Triple (0,0,0) mewakili warna hitam dan (1,1,1) (atau (255.255.255)) mewakili putih.
Fungsi imshow() dan imsave() dapat membuat gambar dengan warna yang ditentukan
oleh koordinat RGB.Untuk melakukan ini, kami menggunakan array numpy 3 dimensi a dimensi
m × n × 3.
Array semacam itu terdiri dari tiga irisan a[:,:, 0], a[:,:, 1], dan a[:,:, 2] yang memberikan
koordinat warna RGB dalam gambar.
red_img[:, :,[1,2]] = 0
plt.figure(figsize=(10,10))
plt.imshow(red_img)
plt.axis('off')
plt.show()
Out[1]:
1. Rotating Image
Memutar gambar dengan menggunakan fungsi rotasi dengan modul PIL yang kemudian di
simpan dengan nama tertentu.
2. Cropping Image
Fungsi ini mengambil koordinat piksel 4-tuple (kiri, atas, kanan, bawah), dan mengembalikan bidang
persegi dari gambar yang digunakan.
3. Resizing Image
Setiap ukuran gambar disediakan sebagai lebar dan tinggi yaitu dalam 2-tuple. Sehingga
ketika resolusi gambar asli memiliki panjang dan tinggi akan di atur berdasarkan perubahan 2 tuple
tersebut.
4. Pasting Image
Untuk menggabungkan kedua gambar memerlukan 2 argumen yang dimana argumen itu
dapat menjadi 2-tuple (menentukan sudut kiri atas), atau 4-tuple (kiri, atas, kanan, bawah) - dalam
hal ini ukuran gambar yang ditempel harus sesuai dengan ukuran bidang kotak ini, atau Tidak Ada
yang setara dengan (0, 0).
5. Histogram evaluasi
Fungsi ini akan mengembalikan histogram gambar sebagai daftar jumlah piksel, satu untuk
setiap piksel dalam gambar. (Histogram gambar adalah representasi grafis dari distribusi nada
dalam gambar digital.Ini berisi apa semua nilai kecerahan yang terkandung dalam gambar.Ini
memplot jumlah piksel untuk setiap nilai kecerahan.Ini membantu dalam melakukan pengaturan
pencahayaan.
In[1]: print(img.histogram())
Out[1]:
6. Transpose Image
Fungsi ini memiliki fitur untuk membuat cermin gambar. Fungsi ini menggunakan rumus matrix
transpose ketika gambar asli akan di cerminkan menjadi gambar transpose.
Fungsi ini memisahkan gambar dalam mode RGB, membuat tiga gambar baru yang masing-
masing berisi salinan band individual asli.
In[1]: print(img.split())
Out[1]: <PIL.Image.Image image mode=L size=310x163 at 0x1F3D30861C8>,
<PIL.Image.Image image mode=L size=310x163 at 0x1F3D3086208>,
<PIL.Image.Image image mode=L size=310x163 at 0x1F3D3086288>
8. Membuat thumbnaill
Metode ini membuat thumbnail gambar yang dibuka.Ini tidak mengembalikan objek
gambar baru, itu membuat modifikasi di tempat untuk objek gambar yang saat ini dibuka itu
sendiri.Jika Anda tidak ingin mengubah objek gambar asli, buat salinan lalu terapkan metode
ini.Metode ini juga mengevaluasi yang tepat untuk menjaga rasio aspek gambar sesuai dengan
ukuran yang dilewati.
C. Kesimpulan
Banyak cara untuk memanipulasi gambar mulai dari mengubah bentuk dan mengevaluasi
gambar tersebut yang menghasilkan output yang akan di proses oleh mesin sesuai dengan
keinginan user. Proses ini banyak digunakan dalam proyek Data Sains untuk memproses gambar
dengan cara memprediksi dan melakukan pelatihan mesin untuk mencocokkan gambar dari data
yang banyak. Sehingga banyak dilakukan pemrosesan gambar yang melatih mesin untuk
mengenali gambar yang di inputkan oleh user.
LEMBAR KERJA
KEGIATAN 1
1. Download Dataset image melalui web https://www.kaggle.com/ dan ambilah 16 gambar dari
kumpulan image dari dataset tersebut (10 Poin)
2. Lakukanlah proses sebagai berikut :
- Jika gambar bukan ber format jpg maka ubah lah format tersebut menjadi jpg menggunakan
code python (5 Poin)
- Gabungkan lah seluruh 16 image menjadi 1 image secara rapi dan teratur (5 Poin)
Output yang di harapkan :
- Ubah size gambar tersebut menjadi (P = Angkatan) x (T = Nim terakhir! Bila N < 200 maka
2N + 200 ) pixel (5 Poin)
- Buatlah evaluasi dari gambar tersebut seperti output berikut! (5 Poin)
RUBRIK PENILAIAN
1. Tidak menggunakan Google Collab ( - 20 Poin )
2. Dataset gambar sama persis dengan yang lain ( - 30 Poin )
3. Struktur program 80% sama dengan yang lain ( - 40 Poin )
4. Ketahuan Copy Paste / Copy Cell dengan yang lain, dilihat dari Riwayat Runtime dan
Output. ( - 60 Poin )
NB :
Di harapkan untuk menggunakan 1 runtime Collab saja, tidak di perkenankan membuat banyak
Collab dan ber Alasan hasil dari Copy Cell runtime Collab lain yang telah di buat sendiri!