0% menganggap dokumen ini bermanfaat (0 suara)
227 tayangan13 halaman

Modul Praktikum 1 - Computer Vision

Notebook ini memberikan pengenalan dasar tentang pemrosesan citra dan computer vision menggunakan OpenCV. Topik utama yang dibahas meliputi membaca citra, mengecek atribut citra, representasi matriks citra, citra berwarna dan saluran citra, menampilkan citra menggunakan matplotlib, dan menyimpan citra. Contoh kode juga diberikan untuk membaca dan memproses citra grayscale dan berwarna.

Diunggah oleh

Tantyo Widyatmoko
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)
227 tayangan13 halaman

Modul Praktikum 1 - Computer Vision

Notebook ini memberikan pengenalan dasar tentang pemrosesan citra dan computer vision menggunakan OpenCV. Topik utama yang dibahas meliputi membaca citra, mengecek atribut citra, representasi matriks citra, citra berwarna dan saluran citra, menampilkan citra menggunakan matplotlib, dan menyimpan citra. Contoh kode juga diberikan untuk membaca dan memproses citra grayscale dan berwarna.

Diunggah oleh

Tantyo Widyatmoko
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/ 13

9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook

Getting Started with Image


Notebook ini akan membantu Anda mengambil langkah pertama dalam mempelajari Image Processing dan
Computer Vision menggunakan OpenCV. Anda akan mempelajari beberapa pelajaran penting dengan
menggunakan beberapa contoh sederhana. Dalam buku catatan ini, Anda akan mempelajari hal-hal berikut:

Membaca gambar
Periksa atribut gambar seperti tipe data dan bentuk
Representasi matriks dari sebuah gambar di Numpy
Gambar Berwarna dan saluran gambar pemisahan/penggabungan
Menampilkan gambar menggunakan matplotlib
Menyimpan gambar

Import Libraries

In [45]:

1 import cv2
2 import numpy as np
3 import matplotlib.pyplot as plt
4 %matplotlib inline
5 from IPython.display import Image
6

Display Image Directly

Menggunakan fungsi gambar ipython untuk memuat dan menampilkan gambar.

In [46]:

1 # Display 18x18 pixel image


2 Image(filename='/content/drive/MyDrive/Colab Notebooks/Pertemuan 1/checkerboard_18x18.p

Out[46]:

In [47]:

1 # Display 84x84 pixel image


2 Image(filename='/content/drive/MyDrive/Colab Notebooks/Pertemuan 1/checkerboard_84x84.j

Out[47]:

Membaca Citra menggunakan OpenCV

OpenCV memungkinkan membaca berbagai jenis citra (JPG, PNG, dll). Anda dapat memuat citra grayscale,
localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 1/13
9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook

citra berwarna atau memuat citra dengan kanal Alpha. Ini menggunakan fungsi cv2.imread() yang memiliki
sintaks berikut:

Function Syntax

retval = cv2.imread( filename[, flags] )

retval : Adalah citra jika berhasil dimuat. Jika tidak, Tidak Ada. Ini dapat terjadi jika nama file salah atau file
rusak.

Fungsi ini memiliki 1 argumen input yang diperlukan dan satu flag opsional:

1. filename : Ini bisa menjadi jalur absolut atau relatif. Ini adalah argumen wajib.
2. flags : flags ini digunakan untuk membaca citra dalam format tertentu (misalnya, grayscale/warna/dengan
kanal alfa). Ini adalah argumen opsional dengan nilai default cv2.IMREAD_COLOR atau 1 yang memuat
citra sebagai citra berwarna.

Sebelum kita melanjutkan dengan beberapa contoh, mari kita lihat juga beberapa flag yang tersedia.

Flags

1. cv2.IMREAD_GRAYSCALE atau 0 : Memuat citra grayscale


2. cv2.IMREAD_COLOR atau 1 : Memuat citra berwarna. Setiap transparansi citra akan diabaikan. Ini adalah
flag default.
3. cv2.IMREAD_UNCHANGED atau -1 : Memuat citra seperti itu termasuk kanal alfa.

In [48]:

1 # Baca citra sebagai skala grayscale


2 cb_img = cv2.imread("/content/drive/MyDrive/Colab Notebooks/Pertemuan 1/checkerboard_18
3
4 # Menampilkan data citra (nilai piksel), elemen array numpy 2D.
5 # Setiap nilai piksel adalah 8-bit [0,255]
6 print(cb_img)

[[ 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0]

[ 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0]

[ 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0]

[ 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0]

[ 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0]

[ 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0]

[255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255]

[255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255]

[255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255]

[255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255]

[255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255]

[255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255]

[ 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0]

[ 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0]

[ 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0]

[ 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0]

[ 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0]

[ 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0]]

Display atribut citra

localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 2/13


9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook

In [49]:

1 # Menampilkan size citra


2 print("Image size is ", cb_img.shape)
3
4 # Menampilkan tipe data
5 print("Data type of image is ", cb_img.dtype)

Image size is (18, 18)

Data type of image is uint8

Display Citra menggunakan Matplotlib

In [50]:

1 # Display image.
2 plt.imshow(cb_img)

Out[50]:

<matplotlib.image.AxesImage at 0x7f6f3d236910>

Apa yang terjadi?

Meskipun citra dibaca sebagai citra grayscale, itu tidak akan selalu ditampilkan dalam citra grayscale saat
menggunakan imshow(). matplotlib menggunakan peta warna yang berbeda dan mungkin saja peta warna
grayscale tidak disetel.

localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 3/13


9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook

In [51]:

1 # Atur peta warna ke skala gray untuk rendering yang tepat.


2 plt.imshow(cb_img, cmap='gray')

Out[51]:

<matplotlib.image.AxesImage at 0x7f6f3d19f310>

Contoh Lain

localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 4/13


9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook

In [52]:

1 # Membaca citra grayscale


2 cb_img_fuzzy = cv2.imread("/content/drive/MyDrive/Colab Notebooks/Pertemuan 1/checkerbo
3
4 # Menampilkan piksel citra
5 print(cb_img_fuzzy)
6
7 # Display citra.
8 plt.imshow(cb_img_fuzzy,cmap='gray')

[[ 0 0 15 20 1 134 233 253 253 253 255 229 130 1 29 2 0 0]

[ 0 1 5 18 0 137 232 255 254 247 255 228 129 0 24 2 0 0]

[ 7 5 2 28 2 139 230 254 255 249 255 226 128 0 27 3 2 2]

[ 25 27 28 38 0 129 236 255 253 249 251 227 129 0 36 27 27 27]

[ 2 0 0 4 2 130 239 254 254 254 255 230 126 0 4 2 0 0]

[132 129 131 124 121 163 211 226 227 225 226 203 164 125 125 129 131 131]

[234 227 230 229 232 205 151 115 125 124 117 156 205 232 229 225 228 228]

[254 255 255 251 255 222 102 1 0 0 0 120 225 255 254 255 255 255]

[254 255 254 255 253 225 104 0 50 46 0 120 233 254 247 253 251 253]

[252 250 250 253 254 223 105 2 45 50 0 127 223 255 251 255 251 253]

[254 255 255 252 255 226 104 0 1 1 0 120 229 255 255 254 255 255]

[233 235 231 233 234 207 142 106 108 102 108 146 207 235 237 232 231 231]

[132 132 131 132 130 175 207 223 224 224 224 210 165 134 130 136 134 134]

[ 1 1 3 0 0 129 238 255 254 252 255 233 126 0 0 0 0 0]

[ 20 19 30 40 5 130 236 253 252 249 255 224 129 0 39 23 21 21]

[ 12 6 7 27 0 131 234 255 254 250 254 230 123 1 28 5 10 10]

[ 0 0 9 22 1 133 233 255 253 253 254 230 129 1 26 2 0 0]

[ 0 0 9 22 1 132 233 255 253 253 254 230 129 1 26 2 0 0]]

Out[52]:

<matplotlib.image.AxesImage at 0x7f6f3d186790>

Bekerja pada citra berwarna

localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 5/13


9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook

In [31]:

1 # Membaca dan menampilkan logo Coca-Cola.


2 Image("/content/drive/MyDrive/Colab Notebooks/Pertemuan 1/coca-cola-logo.png")

Out[31]:

Membaca dan Menampilkan Citra Berwarna

Mari kita baca citra berwarna dan memeriksa parameter serta dimensi citra.

localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 6/13


9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook

In [32]:

1 # Membaca citra
2 coke_img = cv2.imread("/content/drive/MyDrive/Colab Notebooks/Pertemuan 1/coca-cola-log
3
4 # Menampilkan size citra
5 print("Image size is ", coke_img.shape)
6
7 # Menampilkan tipe data
8 print("Data type of image is ", coke_img.dtype)
9
10 print("")

Image size is (700, 700, 3)

Data type of image is uint8

Menampilkan Citra

In [33]:

1 plt.imshow(coke_img)
2 # Apa yang terjadi?

Out[33]:

<matplotlib.image.AxesImage at 0x7f6f3f04cd50>

Warna yang ditampilkan di atas berbeda dari citra sebenarnya. Ini karena matplotlib mengharapkan citra dalam
format RGB sedangkan OpenCV menyimpan citra dalam format BGR. Jadi, untuk tampilan yang benar, kita
perlu membalik kanal citra.

localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 7/13


9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook

In [34]:

1 coke_img_channels_reversed = coke_img[:, :, ::-1]


2 plt.imshow(coke_img_channels_reversed)

Out[34]:

<matplotlib.image.AxesImage at 0x7f6f3dfc0550>

Memisahkan dan Menggabungkan Kanal Warna

cv2.split() Membagi array multi-channel menjadi beberapa array single-channel.

cv2.merge() Menggabungkan beberapa larik untuk membuat larik multisaluran tunggal. Semua matriks input
harus memiliki ukuran yang sama.

localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 8/13


9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook

In [53]:

1 # Pisahkan citra menjadi komponen B,G,R


2 img_NZ_bgr = cv2.imread("/content/drive/MyDrive/Colab Notebooks/Pertemuan 1/New_Zealand
3 b,g,r = cv2.split(img_NZ_bgr)
4
5 # Menampilkan kanal warna
6 plt.figure(figsize=[20,5])
7 plt.subplot(141);plt.imshow(r,cmap='gray');plt.title("Red Channel");
8 plt.subplot(142);plt.imshow(g,cmap='gray');plt.title("Green Channel");
9 plt.subplot(143);plt.imshow(b,cmap='gray');plt.title("Blue Channel");
10
11 # Menggabungkan individual kanal warna menjadi Citra BGR
12 imgMerged = cv2.merge((b,g,r))
13 # Menampilkan hasil penggabungan
14 plt.subplot(144);plt.imshow(imgMerged[:,:,::-1]);plt.title("Merged Output");

Mengonversi ke Ruang Warna yang berbeda

cv2.cvtColor() Mengonversi citra dari satu ruang warna ke ruang warna lainnya. Fungsi ini mengubah citra
masukan dari satu ruang warna ke ruang warna lainnya. Dalam kasus transformasi ke-dari ruang warna RGB,
urutan kanal harus ditentukan secara eksplisit (RGB atau BGR). Perhatikan bahwa format warna default di
OpenCV sering disebut sebagai RGB tetapi sebenarnya BGR (byte dibalik). Jadi byte pertama dalam citra
berwarna standar (24-bit) akan menjadi komponen Biru 8-bit, byte kedua akan menjadi Hijau, dan byte ketiga
akan menjadi Merah. Byte keempat, kelima, dan keenam akan menjadi piksel kedua (Biru, lalu Hijau, lalu
Merah), dan seterusnya.

Function Syntax

dst = cv2.cvtColor( src, code )


dst : Apakah gambar keluaran dengan ukuran dan kedalaman yang sama
dengan src.

Fungsi ini memiliki 2 argumen yang diperlukan:

1. src citra input : 8-bit unsigned, 16-bit unsigned ( CV_16UC... ), atau floating-point presisi tunggal.
2. code : kode konversi ruang warna (lihat ColorConversionCodes).

Mengubah dari BGR ke RGB

localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 9/13


9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook

In [54]:

1 # OpenCV menyimpan kanal warna dalam urutan yang berbeda dari kebanyakan aplikasi lain
2 img_NZ_rgb = cv2.cvtColor(img_NZ_bgr, cv2.COLOR_BGR2RGB)
3 plt.imshow(img_NZ_rgb)

Out[54]:

<matplotlib.image.AxesImage at 0x7f6f3d2cbd90>

Mengubah ke ruang warna HSV

In [55]:

1 img_hsv = cv2.cvtColor(img_NZ_bgr, cv2.COLOR_BGR2HSV)


2 # Pisahkan citra menjadi komponen B,G,R
3 h,s,v = cv2.split(img_hsv)
4
5 # Menampilkan kanal warna
6 plt.figure(figsize=[20,5])
7 plt.subplot(141);plt.imshow(h,cmap='gray');plt.title("H Channel");
8 plt.subplot(142);plt.imshow(s,cmap='gray');plt.title("S Channel");
9 plt.subplot(143);plt.imshow(v,cmap='gray');plt.title("V Channel");
10 plt.subplot(144);plt.imshow(img_NZ_rgb);plt.title("Original");

Memodifikasi Kanal individu


localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 10/13
9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook

In [56]:

1 h_new = h+10
2 img_NZ_merged = cv2.merge((h_new,s,v))
3 img_NZ_rgb = cv2.cvtColor(img_NZ_merged, cv2.COLOR_HSV2RGB)
4
5 # Menampilkan kanal warna
6 plt.figure(figsize=[20,5])
7 plt.subplot(141);plt.imshow(h,cmap='gray');plt.title("H Channel");
8 plt.subplot(142);plt.imshow(s,cmap='gray');plt.title("S Channel");
9 plt.subplot(143);plt.imshow(v,cmap='gray');plt.title("V Channel");
10 plt.subplot(144);plt.imshow(img_NZ_rgb);plt.title("Modified");

Menyimpan Citra

Menyimpan citra sama sepelenya dengan membaca citra di OpenCV. Kami menggunakan fungsi cv2.imwrite()
dengan dua argumen. Yang pertama adalah nama file, argumen kedua adalah objek citra.

Fungsi imwrite menyimpan citra ke file yang ditentukan. Format citra dipilih berdasarkan ekstensi nama file
(lihat cv::imread untuk daftar ekstensi). Secara umum, hanya citra kanal tunggal atau 3-saluran 8-bit (dengan
urutan kanal 'BGR') yang dapat disimpan menggunakan fungsi ini (lihat dokumentasi OpenCV untuk detail lebih
lanjut).

Function Syntax

cv2.imwrite( filename, img[, params] )

Fungsi ini memiliki 2 argumen yang diperlukan:

1. filename : Ini bisa menjadi jalur absolut atau relatif.


2. img: Citra atau Citra yang akan disimpan.

localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 11/13


9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook

In [57]:

1 # Menyimpan Citra
2 cv2.imwrite("/content/drive/MyDrive/Colab Notebooks/Pertemuan 1/New_Zealand_Lake_SAVED.
3
4 Image(filename='New_Zealand_Lake_SAVED.png')

Out[57]:

localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 12/13


9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook

In [58]:

1 # Membaca cita sebagai Citra berwarna


2 img_NZ_bgr = cv2.imread("New_Zealand_Lake_SAVED.png", cv2.IMREAD_COLOR)
3 print("img_NZ_bgr shape is: ", img_NZ_bgr.shape)
4
5 # Membaca citra sebagai grayscale
6 img_NZ_gry = cv2.imread("New_Zealand_Lake_SAVED.png", cv2.IMREAD_GRAYSCALE)
7 print("img_NZ_gry shape is: ", img_NZ_gry.shape)

img_NZ_bgr shape is: (600, 840, 3)

img_NZ_gry shape is: (600, 840)

localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 13/13

Anda mungkin juga menyukai