Anda di halaman 1dari 18

VERSION 1.

0
SEPTEMBER 1, 2020

PEMROGRAMAN FUNGSIONAL

VISUALIZATION & PROCESSING IMAGE – MODUL 6

TIM PENYUSUN: - WILDAN SUHARSO, S.KOM., M.KOM.


- CHRISTIAN. S.K. ADITYA, S.KOM., M.KOM
- MOCH CHAMDANI MUSTAQIM

PRESENTED BY: LAB. TEKNIK INFORMATIKA


UNIVERSITAS MUHAMMADIYAH MALANG
Laboratorium Teknik Informatika

PEMROGRAMAN FUNGSIONAL

CAPAIAN PEMBELAJARAN MATA KULIAH


• Mahasiswa mampu memahami sifat sifat processing citra.
• Mahasiswa mampu memproses citra secara visual dengan baik.
• Mahasiswa mampu mengenerate citra dengan sifat dan fungsi yang telah disediakan.

SUB CAPAIAN PEMBELAJARAN MATA KULIAH


• Mahasiswa mampu mengimplementasikan library PILLOW dan MATPLOTLIB IMAGE
• Mahasiswa mampu mengimplementasikan seluruh Funcion yang ada dalam prosesing citra

KEBUTUHAN HARDWARE & SOFTWARE


• PC / Laptop
• Anaconda Compiler

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

9/1/2020 PEMROGRAMAN Fungsional 1


Laboratorium Teknik Informatika

juga di susun dengan terstruktur sehingga mesin akan memprosesnya dengan secara terstruktur
juga.

MATERI PRAKTIKUM

A. Image With MatPlotlib Module

1. Fungsi dasar image

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 :

In[1]: img = Image.open("umm.jpeg")


img
Out[1]:

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

9/1/2020 PEMROGRAMAN Fungsional 2


Laboratorium Teknik Informatika

Setiap gambar pasti memiliki size yang berbeda beda, maka kita bisa mendeteksi ukuran
gambar yang kita proses menggunakan fungsi size.

In[1]: img.size

Out[1]: (300, 296)

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]:

9/1/2020 PEMROGRAMAN Fungsional 3


Laboratorium Teknik Informatika

Kita juga bisa menghilangkan garis yang ada di setiap sisi dari gambar yang di proses
dengan menghilangkan visible dan mengubahnya menjadi False.

In[1]: fig, ax = plt.subplots()


ax.imshow(img)
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.set_xticks([])
ax.set_yticks([])
plt.show()

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.

In[1]: xy2imgxy = lambda x,y: (img.size[0] * x / np.max(ticklx),\


img.size[1] * (np.max(tickly) - y) /
np.max(tickly))
In[2]: import numpy as np
ticklx = np.linspace(0,300,6)
tickly = np.linspace(0,300,6)
tickpx,tickpy = xy2imgxy(ticklx,tickly)
In[3]: fig,ax = plt.subplots()
ax.imshow(img)

# Rewrite x,y ticks


ax.set_xticks(tickpx)
ax.set_yticks(tickpy)
ax.set_xticklabels(ticklx.astype('int'))
ax.set_yticklabels(tickly.astype('int'))
plt.show()

9/1/2020 PEMROGRAMAN Fungsional 4


Laboratorium Teknik Informatika

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 = img[:, :, 0]


img
Out[1]:

Atau dengan menyesuaikan scale warna dari RGB.

In[1]: img[:, :, 1] = 0
img[:, :, 2] = 0
Out[1]:

9/1/2020 PEMROGRAMAN Fungsional 5


Laboratorium Teknik Informatika

3. Image Processing With imshow

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.

In[1]: img = Image.open("Windows.jpg")


In[2]: img_array = plt.imread(img)
img_array

Out[2]: array([[[ 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]],

[[ 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)

9/1/2020 PEMROGRAMAN Fungsional 6


Laboratorium Teknik Informatika

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.

In[1]: img_array = plt.imread(img)


img_array

Out[1]: [[[0.01176471 0.26666667 0.49411765]


[0.01176471 0.26666667 0.49411765]
[0.00784314 0.26666667 0.49411765]
...
[0.02745098 0.20392157 0.43529412]
[0.05098039 0.14509804 0.29411765]
[0.03137255 0.05882353 0.02745098]]

[[0.01176471 0.26666667 0.49411765]


[0.01176471 0.26666667 0.49411765]
[0.00784314 0.26666667 0.49411765]
...
[0.02745098 0.20392157 0.43529412]
[0.05098039 0.14509804 0.29411765]
[0.03137255 0.05882353 0.02745098]]

[[0.01176471 0.26666667 0.49411765]


[0.01176471 0.26666667 0.49411765]
[0.00784314 0.26666667 0.49411765]
...
[0.02745098 0.20392157 0.43529412]
[0.05098039 0.14509804 0.29411765]
[0.03137255 0.05882353 0.02745098]]

...

[[0.00392157 0.14901961 0.32156863]


[0.00784314 0.15294118 0.3254902 ]
[0.00392157 0.15686275 0.3254902 ]
...
[0.02352941 0.17647059 0.39215686]
[0.05098039 0.12941176 0.26666667]
[0.03137255 0.05490196 0.01568627]]

[[0.00392157 0.14901961 0.32156863]


[0.00784314 0.15294118 0.3254902 ]
[0.00392157 0.15686275 0.3254902 ]
...
[0.02352941 0.17647059 0.39215686]
[0.05098039 0.12941176 0.26666667]
[0.03137255 0.05490196 0.01568627]]

[[0.00392157 0.14901961 0.32156863]


[0.00784314 0.15294118 0.3254902 ]
[0.00392157 0.15686275 0.3254902 ]
...
[0.02352941 0.17647059 0.39215686]
[0.05098039 0.12941176 0.26666667]
[0.03137255 0.05490196 0.01568627]]]

9/1/2020 PEMROGRAMAN Fungsional 7


Laboratorium Teknik Informatika

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]:

Gambar dapat dimodifikasi dengan mengubah array numpy.Misalnya, jika kita


mengalikan array dengan angka 0≤x≤1 semakin besar nilai x maka akan semakin gelap kontras
gambar tersebut.

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]:

9/1/2020 PEMROGRAMAN Fungsional 8


Laboratorium Teknik Informatika

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.

9/1/2020 PEMROGRAMAN Fungsional 9


Laboratorium Teknik Informatika

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.

In[1]: red_img = norm.copy()

red_img[:, :,[1,2]] = 0

plt.figure(figsize=(10,10))
plt.imshow(red_img)
plt.axis('off')
plt.show()
Out[1]:

A. Image With Pillow Module


Modul Gambar menyediakan kelas dengan nama yang sama yang digunakan untuk
mewakili PIL Image. Modul ini juga menyediakan sejumlah fungsi pabrik, termasuk fungsi
untuk memuat gambar dari file, dan untuk membuat gambar baru.

In[1]: from PIL import Image

9/1/2020 PEMROGRAMAN Fungsional 10


Laboratorium Teknik Informatika

Contoh Implementasi Program

1. Rotating Image

Memutar gambar dengan menggunakan fungsi rotasi dengan modul PIL yang kemudian di
simpan dengan nama tertentu.

In[1]: img = Image.open("windows.jpg") #Path


img = img.rotate(180) #Rotate Function
img.save("rotated_windows.jpg") #Saving Path
Out[1]:

2. Cropping Image

Fungsi ini mengambil koordinat piksel 4-tuple (kiri, atas, kanan, bawah), dan mengembalikan bidang
persegi dari gambar yang digunakan.

In[1]: img = Image.open("windows.jpg")


width, height = img.size
area = (0, 0, width/4, height/4)
img = img.crop(area)
img.save("cropped_windows.jpg")
Out[1]:

9/1/2020 PEMROGRAMAN Fungsional 11


Laboratorium Teknik Informatika

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.

In[1]: img = Image.open("picture.jpg")


width, height = img.size
img = img.resize((width/2, height/2))
img.save("resized_picture.jpg")

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).

In[1]: img = Image.open("windows.jpg")


img2 = Image.open("cropped_windows.jpg")
img.paste(img2, (50, 50))
img.save("windows2.jpg")
Out[1]:

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.

9/1/2020 PEMROGRAMAN Fungsional 12


Laboratorium Teknik Informatika

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.

In[1]: img = Image.open("windows.jpg")


transposed_img = img.transpose(Image.FLIP_LEFT_RIGHT)
transposed_img.save("transposed_windows.jpg")
Out[1]:

7. Split image RGB

Fungsi ini memisahkan gambar dalam mode RGB, membuat tiga gambar baru yang masing-
masing berisi salinan band individual asli.

9/1/2020 PEMROGRAMAN Fungsional 13


Laboratorium Teknik Informatika

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.

In[1]: img = Image.open("windows.jpg")


img.thumbnail((200, 200))
img.save("thumb_windows.jpg")
Out[1]:

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.

9/1/2020 PEMROGRAMAN Fungsional 14


Laboratorium Teknik Informatika

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)

3. Ambilah 4 gambar, manipulasikan ke empat gambar tersebut dengan kriteria berikut :


- Putar gambar 1 sebesar 90 derajat, gambar 2 sebesar 180 derajat, gambar 3 sebesar 270
derajat, gambar 4 sebesar 360 derajat (10 Poin)
- Gabungkan ke empat gambar tersebut, kemudian gunakanlah fungsi Transpose dan resize
gambar tersebut menjadi N x N atau persegi! (N = Nim Kalian! Bila N < 50 maka N + 50)
(10 Poin)
- Gabungkan hasil dari kedua gambar tersebut (Sebelum di Transpose & Setelah di Transpose)
menjadi 1 gambar! (5 Poin)

9/1/2020 PEMROGRAMAN Fungsional 15


Laboratorium Teknik Informatika

Output yang di harapkan!

- Buatlah evaluasi dari gambar tersebut seperti nomor 2! (5 Poin)


4. Buatlah evaluasi hasil akhir dari kedua gambar yang telah kalian buat di nomor 2 dan 3
dengan kriteria sebagai berikut!
- Histogram gambar. (5 Poin)
- Evaluasi original matrix & array matrix RGB (5 Poin)
- Simpan Thumbnail dari ke dua gambar tersebut! (5 Poin)

Tambahan poin penilaian jika : (10 - 25 Poin)


Dari seluruh gambar yang sudah di anda buat di Kegiatan 1, lakukan lah proses sebagai berikut :
- Rombaklah ulang program tersebut!
- Buatlah perulangan yang me generate secara otomatis yang dimana warna per satuan gambar
sebelum di gabung!
- Warna tersebut berupa warna dari manipulasi RGB! Sehingga per satuan gambar sudah di
manipulasi dengan warna lain (merah/kuning/hijau/dll)!
- Setiap satuan gambar, terdiri dari satuan warna RGB yang berbeda beda!
- Penilaian berupa kreatifitas program kalian!

Ketentuan Demo Praktikum Modul 6 :


1. Wajib menggunakan Google Collab!
2. Menampilkan gambar di baris code dengan fungsi image python! Tidak boleh di luar code!
3. Menjelaskan program secara rinci dengan fungsi2 yang di gunakan!

9/1/2020 PEMROGRAMAN Fungsional 16


Laboratorium Teknik Informatika

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!

9/1/2020 PEMROGRAMAN Fungsional 17

Anda mungkin juga menyukai