Anda di halaman 1dari 5

PRAKTIKUM MACHINE VISION (P)

Tugas Mandiri
D4 TO 6C

Nama NRP

Ana Surya Ningrum 0920040092

PROGRAM STUDI D4 TEKNIK OTOMASI


JURUSAN TEKNIK KELISTRIKAN KAPAL
POLITEKNIK PERKAPALAN NEGERI SURABAYA
SEMESTER GENAP TAHUN AJARAN 2023/2024
1. Jelaskan pengertian operasi geometrik.
Jawab : Operasi geometrik adalah operasi pada citra yang dilakukan secara
geometris seperti translasi, rotasi, dan penyekalaan. Pada operasi
seperti ini terdapat pemetaan geometrik, yang menyatakan hubungan
pemetaan antara piksel pada citra masukan dan piksel pada citra
keluaran. Secara prinsip, terdapat dua cara yang dapat dipakai. Pertama
yaitu pemetaan ke depan dan kedua berupa pemetaan ke belakang.

2. Apa yang disebut dengan istilah berikut.


(a) Pemetaan ke belakang
Pada pemetaan ke belakang, mengingat pemrosesan dimulai dari citra
keluaran maka dipastikan bahwa semua piksel pada citra keluaran akan
diberi nilai sekali saja berdasarkan piksel masukan.
(b) Pemetaan ke depan
Pada pemetaan kedepan terlihat bahwa kalau piksel keluaran berada pada
posisi yang tidak tepat (tidak berupa bilangan bulat), penempatannya dapat
berada pada salah satu dari empat kemungkinan. Dengan cara seperti ini, ada
kemungkinan sebuah piksel pada citra keluaran tidak pernah diberi nilai atau
malah diberi nilai lebih dari satu kali.
3. Jelaskan yang dimaksud dengan interpolasi bilinear.
Jawab : Interpolasi bilinear adalah metode untuk menghitung nilai di antara
empat titik data dalam grid 2D dengan menggunakan kombinasi linier
dari nilai-nilai tetangga terdekat. Dalam interpolasi bilinear, setiap piksel
yang diproses dicari nilai-nilai tetangganya, lalu dihitung rata-rata
ponderasi antara nilai-nilai ini untuk menghasilkan nilai piksel yang baru
4. Tuliskan persamaan matematika yang menggambarkan operasi
pencerminan secara vertikal.
Jawab : (x, y) --> (x, -y). Persamaan ini menjelaskan bahwa titik (x,y) akan
dipantulkan pada sumbu x dan nilai y-nya akan diubah menjadi -y.
5. Tuliskan sebuah algoritma yang sekaligus digunakan untuk
mencerminkan secara horizontal dan vertikal. Implementasikan dalam
bentuk program dan ujilah.
Jawab :
1. Membaca gambar dari file dan menyimpannya dalam bentuk matriks
piksel.
2. Menginisialisasi matriks piksel baru dengan ukuran yang sama dengan
matriks piksel asli.
3. Loop untuk setiap baris dan kolom dalam matriks piksel asli:
a) Menyalin nilai piksel dari lokasi asli ke lokasi baru dalam matriks
piksel baru, dan mencerminkan secara horizontal dengan cara
mengganti indeks kolom dengan (jumlah kolom - 1) dikurangi
dengan indeks kolom yang sedang diproses.
b) Mencerminkan nilai piksel secara vertikal dengan cara mengganti
indeks baris dengan (jumlah baris - 1) dikurangi dengan indeks baris
yang sedang diproses.
4. Menyimpan matriks piksel baru ke dalam file gambar yang baru.
6. Cobalah untuk menguji skrip untuk pencerminan dengan menggunakan
gambar berwarna. Apa yang terjadi dengan hasilnya? Mengapa begitu?
Jawab : Ketika kita mencoba menguji skrip untuk pencerminan dengan
menggunakan gambar berwarna, hasilnya akan terlihat seperti
gambar yang tidak terduga dan tidak diinginkan. Ini terjadi karena
skrip hanya memperlakukan setiap piksel sebagai tiga nilai RGB
yang terpisah, tanpa memperhatikan hubungan antara nilai-nilai
tersebut. Ketika kita mencerminkan secara horizontal dan vertikal,
urutan nilai RGB di setiap piksel akan berubah, sehingga warna
yang dihasilkan pada gambar baru tidak sesuai dengan warna
aslinya.

Untuk mengatasi masalah ini, kita perlu memperlakukan setiap


piksel sebagai satu unit warna dan melakukan operasi
pencerminan pada keseluruhan piksel, bukan hanya pada nilai-
nilai RGB terpisah. Salah satu cara untuk melakukan ini adalah
dengan menggunakan library Python seperti OpenCV atau PIL
(Python Imaging Library), yang menyediakan fungsi-fungsi untuk
memproses gambar dengan benar. Kita juga dapat menggunakan
skrip yang sama seperti sebelumnya, tetapi dengan menyesuaikan
bagaimana piksel diambil dan disimpan dalam matriks piksel
baru.

from PIL import Image

# membaca gambar dari file


img = Image.open('gambar.jpg')

# mengubah gambar menjadi matriks piksel


pixels = img.load()
width, height = img.size

# membuat matriks piksel baru


new_pixels = Image.new(img.mode, img.size)

# loop untuk setiap baris dan kolom dalam matriks piksel


for y in range(height):
for x in range(width):
# menghitung indeks piksel baru dengan mencerminkan
secara horizontal dan vertikal
new_x = width - 1 - x
new_y = height - 1 - y

# menyalin nilai piksel dari lokasi asli ke lokasi baru dalam


matriks piksel baru
new_pixels.putpixel((new_x, new_y), pixels[x, y])

# menyimpan gambar baru ke dalam file


new_pixels.save('gambar_mirror.jpg')
7. Cobalah untuk memodifikasi cermin dan cermin agar bisa digunakan
untuk melakukan pencerminan terhadap gambar berwarna.
Jawab : Untuk memodifikasi skrip cermin dan cermin agar dapat digunakan
untuk melakukan pencerminan pada gambar berwarna, kita perlu
memperlakukan setiap piksel sebagai satu unit warna dan
melakukan operasi pencerminan pada keseluruhan piksel, bukan
hanya pada nilai-nilai RGB terpisah.
from PIL import Image

# membaca gambar dari file


img = Image.open('gambar.jpg')

# mengubah gambar menjadi matriks piksel


pixels = img.load()
width, height = img.size

# membuat matriks piksel baru


new_pixels = Image.new(img.mode, img.size)

# operasi pencerminan secara horizontal


def cerminh():
for y in range(height):
for x in range(width):
# menghitung indeks piksel baru dengan mencerminkan
secara horizontal
new_x = width - 1 - x

# menyalin nilai piksel dari lokasi asli ke lokasi baru


dalam matriks piksel baru
new_pixels.putpixel((new_x, y), pixels[x, y])

# operasi pencerminan secara vertikal


def cerminv():
for y in range(height):
for x in range(width):
# menghitung indeks piksel baru dengan mencerminkan
secara vertikal
new_y = height - 1 - y

# menyalin nilai piksel dari lokasi asli ke lokasi baru


dalam matriks piksel baru
new_pixels.putpixel((x, new_y), pixels[x, y])

# menjalankan fungsi operasi pencerminan secara horizontal dan


vertikal
cerminh()
cerminv()

# menyimpan gambar baru ke dalam file


new_pixels.save('gambar_mirror.jpg')
8. Jelaskan apa yang dimaksud dengan transformasi-transformasi berikut.
(a) Affine
Transformasi affine adalah transformasi linear yang menyertakan penskalaan,
pemutaran, penggeseran, dan shearing (pembengkokan)

(b) Spherica

Transformasi spherical memberikan efek bulatan (bola), seperti melihat gambar


menggunakan lensa pembesar. Bagian tengah terlihat membesar.
(c) Twirl
Transformasi twirl (olak atau puntiran) dilakukan dengan memutar citra berdasarkan
titik pusat citra, tetapi tidak bersifat linear.

(d) Ripple
Efek ripple (riak) adalah aplikasi transformasi citra yang membuat gambar terlihat
bergelombang. Efek riak dapaat dibuat baik pada arah x maupun y.

(e) Bilinear
Transformasi bilinear mempunyai fungsi pemetaan seperti berikut:

𝑥′ = 𝑎1𝑥 + 𝑎2𝑦 + 𝑎3𝑥𝑦 + 𝑎4


𝑦′ = 𝑏1𝑥 + 𝑏2𝑦 + 𝑏3𝑥𝑦 + 𝑏4

9. Gambar berikut memberikan gambaran mengenai proses interpolasi


linear (berdimensi satu), yang menjadi dasar dalam penentuan
interpolasi bilinear (berdimensi dua).

Berdasarkan gambar di atas, buktikan bahwaf(q’) = (1-a) f(q) + a f(q+1)


Jawab : Berdasarkan gambar di atas, buktikan bahwa f(q’) = (1-a) f(q) + a f(q+1)

Gambar tersebut menggambarkan dua titik data, yaitu f(q) dan f(q+1),
dan suatu titik antara keduanya, yaitu f(q’). Dalam interpolasi linear,
nilai f(q’) dapat dihitung dengan memperhitungkan jarak antara f(q’)
dengan f(q) dan f(q+1) serta bobot dari kedua nilai tersebut.

Bobot a dapat dihitung sebagai rasio antara jarak f(q’) dengan f(q+1)
dibandingkan dengan jarak antara f(q) dan f(q+1). Berdasarkan gambar
di atas, jarak f(q) dan f(q+1) adalah d, sedangkan jarak f(q’) dengan
f(q+1) adalah x dan jarak f(q) dengan f(q’) adalah d-x.

Dalam persamaan interpolasi linear, bobot a didefinisikan sebagai a = x


/ d, sehingga bobot 1-a dapat dihitung sebagai (d-x) / d. Oleh karena itu,
persamaan interpolasi linear menjadi:

f(q') = (d-x)/d * f(q) + x/d * f(q+1)

Ketika persamaan ini disederhanakan, akan diperoleh:

f(q') = (1-a) * f(q) + a * f(q+1)

Jadi, persamaan f(q') = (1-a) * f(q) + a * f(q+1) dapat dibuktikan dari


gambar di atas dengan menggunakan persamaan interpolasi linear.

Anda mungkin juga menyukai