Transformasi geometri adalah serangkaian operasi matematis yang memungkinkan kita untuk memanipulasi posisi, orientasi, dan ukuran objek dalam citra. Dalam pengolahan citra, transformasi geometri sangat penting karena memungkinkan kita untuk melakukan tugas-tugas seperti rotasi, pergeseran, dan skala, yang merupakan dasar dari banyak aplikasi pengolahan citra, termasuk deteksi objek, pengenalan wajah, dan augmentasi data.

Dalam artikel ini, kita akan menjelajahi konsep-konsep dasar transformasi geometri dan cara menerapkannya menggunakan OpenCV, sebuah perpustakaan pengolahan citra open-source yang populer dalam bahasa pemrograman Python. Dengan memahami konsep-konsep ini, pembaca akan dapat meningkatkan pemahaman mereka tentang pengolahan citra dan mengembangkan keterampilan untuk menerapkan transformasi geometri dalam proyek-proyek mereka. Mari kita mulai dengan melihat lebih dekat apa itu transformasi geometri dan mengapa itu penting dalam pengolahan citra.

1. Rotasi Citra

Rotasi citra adalah salah satu transformasi geometri yang paling umum digunakan dalam pengolahan citra. Ini memungkinkan kita untuk memutar citra sekitar suatu titik tertentu dengan sudut tertentu. Rotasi citra sering digunakan dalam aplikasi seperti pengenalan objek, deteksi wajah, dan pengolahan citra medis.

Dalam OpenCV, kita dapat melakukan rotasi citra menggunakan fungsi cv2.rotate(). Fungsi ini mengambil citra sebagai input, serta sudut rotasi dan titik pusat rotasi. Sudut rotasi dinyatakan dalam derajat, dan titik pusat rotasi adalah titik di sekitar mana citra akan diputar. Jika tidak ditentukan, titik pusat rotasi akan menjadi pusat citra.

Rotasi citra dapat dilakukan baik secara searah jarum jam maupun berlawanan arah jarum jam, tergantung pada sudut rotasi yang diberikan.

Dengan menggunakan rotasi citra, kita dapat mengubah orientasi objek dalam citra untuk memudahkan analisis atau visualisasi. Misalnya, dalam pengenalan objek, kita mungkin perlu memutar citra sehingga objeknya berada dalam orientasi yang sama untuk setiap pemrosesan.

Berikut adalah contoh kode Python untuk melakukan rotasi citra menggunakan OpenCV:

import cv2

# Baca citra
image = cv2.imread('path_to_your_image.jpg')

# Tentukan sudut rotasi
angle = 45

# Tentukan titik pusat rotasi (opsional, jika tidak ditentukan, pusat citra akan digunakan)
center = (image.shape[1] // 2, image.shape[0] // 2)

# Buat matriks rotasi
rotation_matrix = cv2.getRotationMatrix2D(center, angle, 1.0)

# Lakukan rotasi citra
rotated_image = cv2.warpAffine(image, rotation_matrix, (image.shape[1], image.shape[0]))

# Tampilkan hasil
cv2.imshow('Original Image', image)
cv2.imshow('Rotated Image', rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Dalam contoh di atas, kita membaca sebuah citra dan kemudian melakukan rotasi sebesar 45 derajat. Hasil rotasi kemudian ditampilkan untuk diperiksa. Dengan menggunakan fungsi cv2.getRotationMatrix2D() dan cv2.warpAffine(), kita dapat dengan mudah melakukan rotasi citra dalam OpenCV.

2. Pergeseran Citra

Pergeseran citra, atau translasi, melibatkan menggeser citra dalam sumbu x dan y. Transformasi ini berguna untuk mengubah posisi relatif objek dalam citra tanpa mengubah orientasi atau skala objek tersebut. Pergeseran citra sering digunakan dalam pemrosesan citra untuk mengoreksi pergeseran yang tidak diinginkan atau untuk memposisikan objek secara spesifik dalam citra.

Dalam OpenCV, kita dapat melakukan pergeseran citra menggunakan fungsi cv2.warpAffine(). Fungsi ini membutuhkan citra, serta matriks transformasi yang menentukan seberapa jauh citra akan digeser dalam sumbu x dan y. Matriks transformasi ini biasanya dinyatakan dalam format [[1, 0, tx], [0, 1, ty]], di mana tx dan ty adalah pergeseran dalam sumbu x dan y, secara berturut-turut.

Berikut adalah contoh kode Python untuk melakukan pergeseran citra menggunakan OpenCV:

import cv2
import numpy as np

# Baca citra
image = cv2.imread('path_to_your_image.jpg')

# Tentukan jumlah pergeseran dalam sumbu x dan y
shift_x = 50
shift_y = 30

# Buat matriks transformasi untuk pergeseran
shift_matrix = np.float32([[1, 0, shift_x], [0, 1, shift_y]])

# Lakukan pergeseran citra
shifted_image = cv2.warpAffine(image, shift_matrix, (image.shape[1], image.shape[0]))

# Tampilkan hasil
cv2.imshow('Original Image', image)
cv2.imshow('Shifted Image', shifted_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Dalam contoh di atas, kita membaca sebuah citra dan kemudian melakukan pergeseran sebesar 50 piksel ke kanan dan 30 piksel ke bawah. Hasil pergeseran kemudian ditampilkan untuk diperiksa. Dengan menggunakan fungsi cv2.warpAffine() dan matriks transformasi yang tepat, kita dapat dengan mudah melakukan pergeseran citra dalam OpenCV.

3. Skala Citra

Skala citra adalah transformasi geometri yang memungkinkan kita untuk mengubah ukuran citra dengan faktor tertentu. Skala citra berguna untuk memperbesar atau memperkecil objek dalam citra tanpa mengubah posisi atau orientasi objek. Teknik ini sering digunakan dalam pengolahan citra untuk menyesuaikan ukuran citra dengan kebutuhan tertentu, seperti pengenalan objek atau analisis citra.

Dalam OpenCV, kita dapat melakukan skala citra menggunakan fungsi cv2.resize(). Fungsi ini memungkinkan kita untuk menentukan faktor skala dalam arah x dan y, atau faktor skala tunggal yang akan diterapkan secara seragam pada kedua dimensi citra. Kita juga dapat menentukan metode interpolasi yang akan digunakan untuk menghitung nilai piksel yang baru setelah perubahan skala.

Berikut adalah contoh kode Python untuk melakukan skala citra menggunakan OpenCV:

import cv2

# Baca citra
image = cv2.imread('path_to_your_image.jpg')

# Tentukan faktor skala
scale_factor = 0.5 # Faktor skala 0.5 akan memperkecil citra menjadi setengah ukuran aslinya

# Lakukan skala citra
scaled_image = cv2.resize(image, None, fx=scale_factor, fy=scale_factor, interpolation=cv2.INTER_LINEAR)

# Tampilkan hasil
cv2.imshow('Original Image', image)
cv2.imshow('Scaled Image', scaled_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Dalam contoh di atas, kita membaca sebuah citra dan kemudian memperkecil citra tersebut menjadi setengah ukuran aslinya dengan menggunakan faktor skala 0.5. Hasil skala kemudian ditampilkan untuk diperiksa. Dengan menggunakan fungsi cv2.resize() dan menentukan faktor skala yang tepat, kita dapat dengan mudah melakukan skala citra dalam OpenCV.

4. Implementasi dengan Contoh

Berikut ini adalah contoh implementasi dari tiga teknik transformasi geometri yang telah kita bahas sebelumnya: rotasi, pergeseran, dan skala, menggunakan citra sebagai contoh:

import cv2
import numpy as np

# Baca citra
image = cv2.imread('path_to_your_image.jpg')

# Tentukan sudut rotasi
angle = 45

# Tentukan jumlah pergeseran dalam sumbu x dan y
shift_x = 50
shift_y = 30

# Tentukan faktor skala
scale_factor = 0.5 # Faktor skala 0.5 akan memperkecil citra menjadi setengah ukuran aslinya

# Buat matriks rotasi
center = (image.shape[1] // 2, image.shape[0] // 2)
rotation_matrix = cv2.getRotationMatrix2D(center, angle, 1.0)

# Buat matriks transformasi untuk pergeseran
shift_matrix = np.float32([[1, 0, shift_x], [0, 1, shift_y]])

# Lakukan rotasi citra
rotated_image = cv2.warpAffine(image, rotation_matrix, (image.shape[1], image.shape[0]))

# Lakukan pergeseran citra
shifted_image = cv2.warpAffine(image, shift_matrix, (image.shape[1], image.shape[0]))

# Lakukan skala citra
scaled_image = cv2.resize(image, None, fx=scale_factor, fy=scale_factor, interpolation=cv2.INTER_LINEAR)

# Tampilkan hasil
cv2.imshow('Original Image', image)
cv2.imshow('Rotated Image', rotated_image)
cv2.imshow('Shifted Image', shifted_image)
cv2.imshow('Scaled Image', scaled_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Dalam contoh di atas, kita melakukan rotasi citra sebesar 45 derajat, pergeseran citra sebesar 50 piksel ke kanan dan 30 piksel ke bawah, serta skala citra menjadi setengah ukuran aslinya. Hasil dari ketiga transformasi tersebut kemudian ditampilkan untuk diperiksa. Dengan menggunakan fungsi-fungsi yang disediakan oleh OpenCV, kita dapat dengan mudah melakukan transformasi geometri pada citra dalam Python.

5. Kesimpulan

Dalam artikel ini, kita telah menjelajahi beberapa teknik dasar dalam transformasi geometri menggunakan OpenCV dalam Python. Transformasi geometri, seperti rotasi, pergeseran, dan skala, sangat penting dalam pengolahan citra dan pemrosesan visual.

Melalui contoh kode yang disediakan, kita telah belajar bagaimana melakukan rotasi citra, pergeseran citra, dan skala citra menggunakan fungsi-fungsi yang disediakan oleh OpenCV. Dengan memahami konsep dasar transformasi geometri dan implementasinya dalam Python, kita dapat memanfaatkannya dalam berbagai aplikasi pengolahan citra, seperti pengenalan objek, deteksi wajah, dan analisis citra medis.

Saat menggunakan transformasi geometri, penting untuk memahami bagaimana masing-masing teknik dapat mempengaruhi citra dan objek di dalamnya. Selain itu, kita juga perlu memilih parameter-parameter yang sesuai untuk mendapatkan hasil yang diinginkan.

Dengan demikian, pengetahuan tentang transformasi geometri dalam OpenCV dapat menjadi alat yang berguna dalam pemrosesan citra dan analisis visual, memungkinkan kita untuk mengubah, memodifikasi, dan memanipulasi citra secara efisien sesuai dengan kebutuhan spesifik aplikasi kita.

Categories: Python

0 Comments

Leave a Reply

Avatar placeholder