• Tidak ada hasil yang ditemukan

Laporan Praktikum Pengolahan Citra Menggunakan Python

N/A
N/A
Nanda Nour Janah

Academic year: 2024

Membagikan " Laporan Praktikum Pengolahan Citra Menggunakan Python"

Copied!
19
0
0

Teks penuh

(1)

LAPORAN PRAKTIKUM

PENGOLAHAN CITRA MENGGUNAKAN PYTHON

Dosen Pengampu : Dedi Irawan, S.Kom., M.T.I.

Oleh :

Nanda Nour Janah NPM 21430077

PROGRAM STUDI S1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER

UNIVERSITAS MUHAMMADIYAH METRO

2023

(2)

KATA PENGANTAR

Dalam rangka menyelesaikan tugas mata kuliah Pengolahan Citra, dengan ini saya menyampaikan Laporan Praktikum Pengolahan Citra Menggunakan Python.

Laporan ini dibuat untuk memenuhi tugas mata kuliah Pengolahan Citra.

Laporan praktikum ini berisi program-program sederhana yang mampu melakukan pengolahan citra seperti menampilkan gambar, histogram, masking, threshold dan rescale resize menggunakan library OpenCV dan Matplotlib.

Program – program sederhana yang saya buat diharapkan dapat memberikan manfaat serta pemahaman baru bagi kami mengenai pengolahan citra digital dan implementasinya menggunakan Bahasa pemrograman Python. Saya menyadari bahwa program – program ini masih jauh dari kata sempurna, oleh karena itu kritik dan saran yang membangun sangat saya harapkan.

Akhir kata, saya ucapakan terima kasih kepada Dosen Pengampu Bapak Dedi Irawan, S.Kom., M.T.I dan pihak – pihak yang telah membantu dalam penyelesaian tugas mata kuliah ini.

Metro, 09 Mei 2023

Penulis

(3)

A. Install Python 3.11

1. Buat folder pada drive C: dan beri nama “Python 3.11”

2. Download file instalasi pada website Python Python Release Python 3.11.2 | Python.org

3. Install Python, pilih Customize installation

4. Pilih Next

(4)

5. Pilih Browse

6. Pilih folder yang sudah dibuat tadi, lalu klik Ok

7. Klik Install

(5)

8. Buka Command Prompt dengan menekan tombol Windows + R pada keyboard dan ketikkan “cmd”, lalu klik Ok

9. Lakukan upgrade pip dan install matplotlib

a) C:\ Python311> python.exe -m pip install --upgrade pip

b) C:\ Python311>python.exe -m pip install opencv-python

c) C:\ Python311>python.exe -m pip install matplotlib

(6)

B. Menampilkan gambar

1. Buat folder pada drive D: dengan nama Python 21430077, folder ini untuk menyimpan file coding dan media yang akan ditampilkan nantinya

2. Buka aplikasi IDLE (Python 3.11)

3. Buat file baru dengan membuka menu file atau dengan menekan Ctrl+N

4. Selanjutnya ketikkan coding di bawah ini, untuk nama file pada code harus sama dengan nama file yang akan ditampilkan

import cv2

gambar = cv2.imread('rosella.jpg')

cv2.imshow('Gambar burung Crimson Rosella',gambar) cv2.waitKey()

5. Kemudian klik pada menu Run lalu klik Run Modul

6. Hasil output seperti di bawah

(7)

Kode di atas merupakan kode python yang menggunakan library OpenCV untuk membaca dan menampilkan gambar. Pertama, kode mengimport modul “cv2”

dari library OpenCV. Selanjutnya, gambar “rosella.jpg” dimuat ke dalam variable “gambar” menggunakan fungsi “cv2.imread()”. Kemudian, gambar tersebut ditampilkan di layar menggunakan fungsi “cv2.imshow()”. Setelah itu, kode menunggu input dari pengguna menggunakan fungsi “cv2.waitKey()”. Jadi, Ketika kode dieksekusi, gambar “rosella.jpg” akan ditampilkan di layar dalam jendela dengan judul “Gambar Burung Crimson Rosella”.

C. Membagi gambar menjadi 4 bagian

1. Siapkan gambar pada folder Python 21430077.

2. Buka IDLE (Python 3.11)

3. Lalu ketikkan coding seperti di bawah import cv2

image = cv2.imread('duck.jpg') (h, w) = image.shape[:2]

(b, g, r) = image [0, 0]

print ("Pixel pada (0, 0) - red : {}, green : {}, blue : {}". format(r,g,b)) image[0,0] = (255, 0, 0)

(b, g, r) = image[0, 0]

print ("Pixel pada (0, 0) - red : {}, green : {}, blue : {}". format(r,g,b)) (cX, cY) = (w//2, h//2)

kiri_atas = image [0:cY, 0:cX]

kanan_atas = image [0:cY, cX:w]

kanan_bawah = image [cY:h, cX:w]

kiri_bawah = image [cY:h, 0:cX]

(8)

cv2.imshow('Kiri Atas', kiri_atas) cv2.imshow('Kanan Atas', kanan_atas) cv2.imshow('Kanan Bawah', kanan_bawah) cv2.imshow('Kiri Bawah', kiri_bawah) cv2.waitKey(0)

4. Lalu Run Modul, dan hasil output seperti di bawah ini

Kode di atas menggunakan library OpenCV untuk memanipulasi gambar.

Pertama-tama, kode membaca gambar “duck.jpg” menggunakan fungsi

“cv2.imread()” dan menyimpannya ke dalam variable “image”.

Kemudian, kode mengambil dimensi gambar (tinggi dan lebar) menggunakan method”.shape” dan menyimpannya ke dalam variable “h” dan “w”.

Selanjutnya, kode mengambil nilai piksel (red, green, dan blue) pada koordinat (0,0) menggunakan notasi slicing pada array “image”. Kemudian, nilai piksel tersebut dicetak menggunakan fungsi “print()”. Selanjutnya, nilai piksel tersebut diubah menjadi (255,0,0) dan dicetak Kembali untuk memastikan perubahan nilai. Kemudian, kode membagi gambar menjadi 4 bagian yang sama besar menggunakan notasi slicing. Setelah itu, keempat bagian tersebut ditampilkan di jendela yang berbeda menggunakan fungsi

“cv2.imshow()”. Kode menunggu input dari pengguna menggunakan fungsi

“cv2.waitKey(0)” daan menutup jendela saat pengguna menekan tombol pada keyboard.

D. Membagi gambar menjadi 2 bagian (atas dan bawah) 1. Siapkan gambar yang akan ditampilkan

2. Buka IDLE (Python 3.11)

3. Ketikkan code sperti di bawah ini import cv2

(9)

image = cv2.imread('duck.jpg') (h, w) = image.shape[:2]

(b, g, r) = image [0, 0]

print ("Pixel pada (0, 0) - red : {}, green : {}, blue : {}". format(r,g,b)) image[0,0] = (255, 0, 0)

(b, g, r) = image[0, 0]

print ("Pixel pada (0, 0) - red : {}, green : {}, blue : {}". format(r,g,b)) (cX, cY) = (w//2, h//2)

atas = image [0:cY, 0:]

bawah = image [cY:h, 0:]

cv2.imshow('Atas', atas) cv2.imshow('Bawah', bawah) cv2.waitKey(0)

4. Lalu Run Modul, dan hasil output akan seperti ini

Kode tersebut membaca gambar “duck.jpg” menggunakan fungsi

“cv2.imread()”. Kemudian, kode menghitung titik tengah gambar (cX, cY) dan membagi gambar menjadi dua bagian, yaitu bagian atas (0:cY, 0:w) dan bagian bawah (cY:h, 0:w) menggunakan notasi slicing. Terakhir, kode menampilkan keda gambar tersebut di jendela yang berbeda menggunakan fungsi “cv2.imshow()”, menunggu input daari pengguna menggunakan fungsi “cv2.waitKey(0)”, daan menutup jendela saat penggguna menekan tombol pada keyboard.

E. Membagi gambar menjadi 2 bagian (kanan dan kiri) 1. Siapkan gambar yang akan ditampilkan

(10)

2. Buka IDLE (Python 3.11)

3. Ketikkan code seperti di bawah ini import cv2

image = cv2.imread('duck.jpg') (h, w) = image.shape[:2]

(b, g, r) = image [0, 0]

print ("Pixel pada (0, 0) - red : {}, green : {}, blue : {}". format(r,g,b)) image[0,0] = (255, 0, 0)

(b, g, r) = image[0, 0]

print ("Pixel pada (0, 0) - red : {}, green : {}, blue : {}". format(r,g,b)) (cX, cY) = (w//2, h//2)

kiri = image [0:, 0:cX]

kanan = image [0:, cX:w]

cv2.imshow('Kiri', kiri) cv2.imshow('Kanan', kanan) cv2.waitKey(0)

4. Run Modul dan hasilnya akan seperti ini

Kode tersebut membaca gambar “duck.jpg” menggunakan OpenCV dan membagi gambar menjadi dua bagian, kode menghitung titik tengah gambar (cX, cY) dan membagi gambar menjadi dua bagian, yaitu bagian kiri (0:, 0:cX) dan bagian kanan (0:, cX:w) menggunakan notasi slicing dan menyimpannya ke dalam variable “kiri” dan “kanan”. Terakhir, kode menampilkan kedua bagian gambar tersebut di jendela yang berbeda menggunakan fungsi “cv2.imshow()”.

(11)

F. Membagi gambar menjadi 6 bagian 1. Siapkan gambar

2. Buka IDLE (Python 3.11)

3. Ketikkan coding seperti di bawah ini import cv2

image = cv2.imread('duck.jpg') (h, w) = image.shape[:2]

(b, g, r) = image [0, 0]

print ("Pixel pada (0, 0) - red : {}, green : {}, blue : {}". format(r,g,b)) image[0,0] = (255, 0, 0)

(b, g, r) = image[0, 0]

print ("Pixel pada (0, 0) - red : {}, green : {}, blue : {}". format(r,g,b)) (cX, cY) = (w//2, h//2)

kiri_atas = image [0:cY, 0:cX-w//6]

atas = image [0:cY, cX-w//6:cX+w//6]

kanan_atas = image [0:cY, cX+w//6:w]

kiri_bawah = image [cY:h, 0:cX-w//6]

bawah = image [cY:h, cX-w//6:cX+w//6]

kanan_bawah = image [cY:h, cX+w//6:w]

cv2.imshow('Kiri Atas', kiri_atas) cv2.imshow('atas', atas)

cv2.imshow('Kanan Atas', kanan_atas) cv2.imshow('Kiri Bawah', kiri_bawah) cv2.imshow('bawah', bawah)

cv2.imshow('Kanan Bawah', kanan_bawah) cv2.waitKey(0)

4. Run Modul dan hasilnya seperti ini

(12)

Kode di atas membaca sebuah gambar “duck.jpg”, lalu menampilkan nilai RGB dari piksel pada posisi (0,0), mengubah nilai pixel tersebut menjadi (255,0,0) dan menampilkan Kembali nilai RGB-nya.

Selanjutnya, program tersebut membagi gambar menjadi enam bagian yaitu, kiri_atas, atas, kanan_atas, kiri_bawah, bawah dan kanan_bawah, dan menampilkan setiap bagian tersebut pada jendela gambar terpisah dengan menggunakan funsi “cv2.imshow()”

G. Menampilkan histogram gambar 1. Siapkan gambarnya

2. Buka IDLE (Python 3.11) 3. Ketikkan kode di bawah ini

import cv2

import numpy as np

from matplotlib import pyplot as plt gambar = cv2.imread('lavender.jpg') cv2.imshow('lavender', gambar) color = ('b', 'g', 'r')

for i, col in enumerate (color):

histr = cv2.calcHist([gambar],[i],None,[256],[0,256]) plt.plot(histr,color = col)

plt.xlim([0,256]) plt.show()

4. Run Modul dan hasilnya seperti di bawah ini

(13)

Kode tersebut menggunakan library OpenCV dan Matplotlib. Gambar dibaca dengan menggunakan perintah “cv2.imread(‘lavender.jpg’)” dan ditampilkan pada layar dengan menggunakan fungsi “cv2.imshow()”. Selanjutnya variable “color” didefinisikan sebagai tuple yang berisi tiga karakter yaitu

“b”, “g” dan “r” yang merepresentasikan masing-masing channel warna pada gambar yaitu biru, hijau daan merah. Melalui perulangan “for”, setiap channel warna tersebut dihitung histogramnya dengan menggunakan

“cv2.calcHist([gambar],[i],None,[256],[0,256])”, dimana ‘i’

merepresentasikan indeks channel warna pada tuple “color”. Histogram tersebut kemudian direpresentasikan daalam bentuk plot dengan menggunakan “plt.plot(histr,color = col)” dan “plt.show()”. Dalam plot tersebut, sumbu x merepresentasikan nilai piksel (0-255) dan sumbu y merepresentasikan frekuensi kemunculan nilai piksel tersebut.

H. Masking lingkaran pada gambar

1. Siapkan gambar pada folder Python 21430077 2. Buka IDLE (Python 3.11)

3. Ketikkan kode seperti di bawah ini import cv2 as cv

import numpy as np

#membuka/load gambar dari komputer gambar = cv.imread('owl.jpg')

#menampilkan gambar

cv.imshow('gambar asli', gambar)

blank = np.zeros(gambar.shape[:2], dtype='uint8') cv.imshow('Blank Image', blank)

#mask dengan bentuk setengah lingkaran

mask = cv.circle(blank, (gambar.shape[1]//2 + 45, gambar.shape[0]//2), 100, 255, -1)

cv.imshow('Mask', mask)

masked = cv.bitwise_and(gambar, gambar, mask=mask) cv.imshow('Masked Image', masked)

cv.waitKey(0)

4. Hasilnya akan seperti di bawah ini

(14)

Kode di atas adalah contoh penggunaan masking pada gambar menggunakan library OpenCV di Python. Pertama, gambar di muat menggunakan fungssi

“cv.imread()”. Kemudian, di buat gambar kosong (blank image) menggunakan “np.zeros()” dengan ukuran yang sama dengan ukuran gambar asli. Gambar kosong tersebut nantinya akan digunakan sebagai basis untuk membuat mask. Mask dibuat menggunakan fungsi “cv.circle()”, di mana titik pusat dan radius lingkaran yang dibuat ditentukan. Nilai piksel di dalam lingkaran diberi nilai 255(putih) sedangkan piksel di luar lingkaran diberi nilai 0 (hitam). Hasil mask tersebut ditampilkan menggunakan

“cv.imshow()”. Terakhir, gambar asli di-masking menggunakan bitwise AND (cv.bitwise_and()) dengan mask yang telah dibuat sebelumnya. Hasil gambar yang telah di-asking ditampilkan menggunakan “cv.imshow()”. Sehingga hasil yang ditampilkan adalah gambar asli dengan lingkaran setengah yang ditampilkan saja dan bagian lainnya menjadi hitam

I. Masking setengah lingkaran pada gambar

1. Siapkan gambar yang akan di tampilkan di folder Python 21430077 2. Buka IDLE (Python 3.11)

3. Ketikkan coding seperti di bawah ini import cv2 as cv

import numpy as np

#membuka/lord gambar dari komputer gambar = cv.imread ('deer.jpg')

#menampilkan gambar

cv.imshow('gambar asli',gambar)

blank = np.zeros(gambar.shape[:2], dtype='uint8')

(15)

cv.imshow('blank image', blank)

#mask dengan bentuk setengah lingkaran

circle = cv.circle(blank.copy(),(gambar.shape [1]//2 + 30,gambar.shape[0]//2), 100, 255,-1)

rectangle = cv.rectangle (blank.copy(),(30,30),(370,370),255, -1) weird_shape =cv.bitwise_and(circle, rectangle)

cv.imshow('weird shape', weird_shape)

masked = cv.bitwise_and(gambar, gambar, mask=weird_shape) cv.imshow('masked image', masked)

cv.waitKey(0)

4. Run Modul, dan hasilnya akan seperti ini

Pada kode di atas gambar “deer.jpg” dimuat dengan menggunakan OpenCV dan menampilkan gambar tersebut. Kemudian, dibuat blank image dengan ukuran yang sama dengan gambar asli menggunakan NumPy. Kemudian membuat dua bentuk mask setengah lingkaran dan persegi Panjang dengan menggunakan “cv.circle()” dan “cv.rectangle()”. Lalu kedua mask digabungkan menggunakan “bitwise_and()” yang akan menghasilkan bentuk setengah lingkaran.

J. Thresholding pada gambar

1. Siapkan gambar yang akan di buat threshold pada folder Python 21430077 2. Buka IDLE (Python 3.11), dan tuliskan code di bawah ini

import cv2 as cv

#membuka/load gambar dari komputer gambar = cv.imread('starfish.jpg')

(16)

#menampilkan gambar gray

gray = cv.cvtColor(gambar, cv.COLOR_BGR2GRAY) cv.imshow('Gambar Gray', gray)

# Simple Thresholding

threshold, thresh = cv.threshold(gray, 150, 255, cv.THRESH_BINARY ) cv.imshow('Simple Thresholded', thresh)

threshold, thresh_inv = cv.threshold(gray, 150, 255, cv.THRESH_BINARY_INV )

cv.imshow('Simple Thresholded Inverse', thresh_inv)

# Adaptive Thresholding

adaptive_thresh = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY_INV, 11, 9)

cv.imshow('Adaptive Thresholding', adaptive_thresh) cv.waitKey(0)

3. Run Modul, dan hasilnya seperti ini

(17)

Code di atas adalah implementasi dari beberapa Teknik thresholding pada cutra grayscale menggunakan OpenCV. Pertama, gambar dimuat dan diubah ke citra grayscale. Kemudian, dilakukan thresholding dengan metode Simple

(18)

Thresholding menggunakan nilai threshold 150. Selain itu, dilakukan juga thresholding dengan metode Adaptive Thresholding menggunakan Teknik Gaussian dengan ukuran block 11 dan konstanta C 9. Hasil dari tiap thresholding ditampilkan pada layar dengan menggunakan “cv.imshow()”.

K. Rescale dan Resize pada video

1. Siapkan video yang akan digunakan ke folder Python 21430077 2. Buka IDLE (Python 3.11) dan ketikkan coding di bawah ini

import cv2 as cv

def rescaleFrame(frame, scale=1.00):

# Images, Videos and Live Video width = int(frame.shape[1] * scale) height = int(frame.shape[0] * scale) dimensions = (width,height)

return cv.resize(frame, dimensions, interpolation=cv.INTER_AREA) def changeRes(width,height):

# Live video capture.set(3,width) capture.set(4,height)

# Reading Videos

capture = cv.VideoCapture('jpnlndscp.mp4') while True:

isTrue, frame = capture.read()

frame_resized = rescaleFrame(frame, scale=.2)

cv.imshow('Video', frame)

cv.imshow('Video Resized', frame_resized) if cv.waitKey(20) & 0xFF==ord('d'):

break capture.release()

cv.destroyAllWindows()

3. Run Modul, dan hasilnya akan seperti di bawah ini

(19)

kode di atas digunakan untuk membaca video dan menampilkannya dalam dua ukuran yang berbeda di jendela tampilan. Pertama, video ditampilkan dalam ukuran asli pada jendela “Video” dan kedua, video ditampilkan dalam ukuran yang telah diperkecil sebesar 20% dari ukuran asli pada jendela

“Video Resized”. Code tersebut menggunakan dua fungsi yaitu

“rescaleFrame” untuk mengubah ukuran frame video dan “changeRes”

untuk mengubah resolusi video. Selain itu, pada saat menjalankan program, pengguna dapat menghentikan tampilan video dengan menekan tombol “d”

pada keyboard.

Referensi

Dokumen terkait

Hasil kuisioner responden yang belum mengambil mata kuliah Pengolahan Citra Digital Pedoman Praktikum Topik VI.. Citra Digital Pedoman Praktikum

Untuk merotasi citra, dapat menggunakan method wrapAffine mengambil citra asli, matriks citra yang di rotasi dan lebar & tinggi dari citra sebagai argumen. RotasiCitra

Tujuan penelitian ini adalah mengembangkan metode penghitungan benih udang vaname dengan pengolahan citra menggunakan bahasa pemrograman C# (C-Sharp), serta untuk

Praktikum ini dimaksudkan sebagai pengaplikasian dari teori-teori yang sudah didapat pada saat mengikuti mata kuliah Pengolahan Citra Digital seperti melakukan koreksi

Laporan praktikum Geologi Penginderaan Jauh tahun 2022 tentang pengolahan data citra menggunakan NDVI, NDWI, dan

Laporan praktikum algoritma dan pemrograman modul ke-1 mengenai pengenalan pemakaian Netbeans dan program

Laporan praktikum tentang pengolahan telur asin “Abu Gosok” yang disusun oleh mahasiswa Manajemen Agribisnis IPB

Laporan praktikum 8 Algoritma pemograman 2