Image processing atau pemprosesan gambar merupakan suatu metode untuk mengolah gambar (Image) ke dalam bentuk digital untuk tujuan tertentu. Pada awalnya pengolahan citra ini berfungsi untuk memperbaiki dan meningkatkan kualitas suatu gambar, namun dengan perkembangan zaman dan munculnya ilmu-ilmu komputasi hal itu memungkinkan manusia dapat mengambil suatu informasi yang ada dalam suatu gambar. Inputnya adalah citra (gambar) dan keluaranya adalah citra yang sudah diperbagus kualitasnya. Misalnya, sebuah gambar yang kurang tajam warnanya, kabur (blurring) dan terdapat noise (mis bintik putih) memerlukan proses untuk memperbaiki kualitas gambar sehingga mendapatkan informasi yang lebih baik.
Untuk memulai belajar pemprosesan gambar perlu diketahui untuk mengikuti tutorial ini adalah bagaimana tepatnya sebuah gambar direpresentasikan dalam memori. Setiap gambar diwakili oleh satu set piksel yaitu matriks nilai piksel. Untuk gambar grayscale, nilai piksel berkisar dari 0 hingga 255 dan mewakili intensitas piksel tersebut. Misalnya, jika Sobat memiliki gambar dengan dimensi 20 x 20, itu akan diwakili oleh matriks 20x20 (total nilai 400-piksel).
Jika Sobat berurusan dengan gambar berwarna, Sobat harus tahu bahwa itu akan memiliki tiga saluran - Merah, Hijau, dan Biru (RGB). Oleh karena itu, akan ada tiga matriks seperti itu untuk satu gambar.
Dalam tutorial ini, kita akan belajar bagaimana kita dapat melakukan pemrosesan gambar menggunakan bahasa Python. Kita tidak akan membatasi diri pada satu library. namun, ada satu yang akan paling sering digunakan pada pemprosesan gambar yaitu library Open CV. Kita anggap sobat telah menginstal python di komputer. Selanjutnya kita menginstall library Open CV.
Windows
$ pip install opencv-python
MacOS
$ brew install opencv3 --with-contrib --with-python3
Linux
$ sudo apt-get install libopencv-dev python-opencv
Kemudian coba cek terlebih dahulu apakah instalasi berhasil.
import cv2
Menemukan Detail Gambar
Setelah memuat gambar dengan fungsi imread (), kita kemudian dapat mengambil beberapa properti sederhana seperti jumlah piksel dan dimensi.
import cv2
img = cv2.imread('rose.jpeg')
print("Image Properties")
print("- Number of Pixels: " + str(img.size))
print("- Shape/Dimensions: " + str(img.shape))
Hasil:
Image Properties
- Number of Pixels: 819840
- Shape/Dimensions: (640, 427, 3)
jika Sobat memeriksa jenis img, maka hasil sebagai berikut:
print(type(img))
hasil
<class 'numpy.ndarray'>
Ini adalah array NumPy! Itu sebabnya pengolahan gambar menggunakan OpenCV sangat mudah dengan array NumPy.
Untuk menampilkan gambar menggunakan:
cv2.imshow('Original Image', img)
cv2.waitKey(0)
hasil:
Untuk memutar gambar ini, Sobat membutuhkan lebar dan tinggi gambar karena Anda akan menggunakannya dalam proses rotasi seperti yang akan Sobat lihat nanti. Caranya seperti cara sebelumnya untuk melihat detile gambar.
print("- Shape/Dimensions: " + str(img.shape[0:2]))
Hasilnya:
- Shape/Dimensions: (640, 427)
Sekarang kita sudah memiliki matriks gambar kami dan kami ingin mendapatkan matriks rotasi. Untuk mendapatkan matriks rotasi, kami menggunakan metode getRotationMatrix2D () dari cv2.
cv2.getRotationMatrix2D(center, angle, scale)
Di sini center adalah titik pusat rotasi, angel adalah sudut dalam derajat dan scale adalah properti skala yang membuat gambar pas di layar. Untuk mendapatkan matriks rotasi gambar kita, kodenya adalah:
rotationMatrix = cv2.getRotationMatrix2D((width/2, height/2), 90, .5)
Langkah selanjutnya adalah memutar gambar kita dengan bantuan matriks rotasi. Untuk memutar gambar, kami memiliki metode cv2 bernama wrapAffine yang mengambil gambar asli, matriks rotasi gambar dan lebar dan tinggi gambar sebagai argumen.
rotatedImage = cv2.warpAffine(img, rotationMatrix, (width, height))
Dalam contoh ini, kita akan membaca gambar, lalu memutarnya dengan sudut yang berbeda seperti 90 derajat, 180 derajat, dan 270 derajat. Untuk setiap rotasi dengan derajat tertentu, dan menyimpan gambar tersebut.
import cv2
# read image as grey scale
img = cv2.imread('rose.jpeg')
# get image height, width
(height, width) = img.shape[:2]
# calculate the center of the image
center = (width / 2, height / 2)
angle90 = 90
angle180 = 180
angle270 = 270
scale = 1.0
# Perform the counter clockwise rotation holding at the center
# 90 degrees
rotationMatrix = cv2.getRotationMatrix2D(center, angle90, scale)
rotated90 = cv2.warpAffine(img, rotationMatrix, (height, width))
# 180 degrees
rotationMatrix = cv2.getRotationMatrix2D(center, angle180, scale)
rotated180 = cv2.warpAffine(img, rotationMatrix, (height, width))
# 270 degrees
rotationMatrix = cv2.getRotationMatrix2D(center, angle270, scale)
rotated270 = cv2.warpAffine(img, rotationMatrix, (height, width))
cv2.imshow('Original Image',img)
cv2.waitKey(0) # waits until a key is pressed
cv2.destroyAllWindows() # destroys the window showing image
cv2.imshow('Image rotated by 90 degrees',rotated90)
cv2.waitKey(0) # waits until a key is pressed
cv2.destroyAllWindows() # destroys the window showing image
cv2.imshow('Image rotated by 180 degrees',rotated180)
cv2.waitKey(0) # waits until a key is pressed
cv2.destroyAllWindows() # destroys the window showing image
cv2.imshow('Image rotated by 270 degrees',rotated270)
cv2.waitKey(0) # waits until a key is pressed
cv2.destroyAllWindows() # destroys the window showing image
sumber:
- https://stackabuse.com/introduction-to-image-processing-in-python-with-opencv/
- https://likegeeks.com/python-image-processing/
0 comments:
Post a Comment