Anda di halaman 1dari 18

LAPORAN PRAKTIKUM

TEAM TEACHING

DILAPORKAN OLEH :

RIO TAMYIZ MAULANA (11120017)

UNIVERSITAS GUNADARMA

FAKULTAS IMU COMPUTER DAN TEKNOLOGI INFORMASI

JURUSAN SYSTEM INFORMASI

APRIL 2021
Daftar isi
Mambaca dan menampilkan gambar ..................................................................................................... 3
Tugas 1: Baca gambar dari URL dan tampilkan................................................................................... 5
Kontur Gambar dan Histogram ............................................................................................................... 5
Gunakan image dari indeks pertama dalam variabel urls .................................................................. 5
Menghasilkan Histogram citra berwarna dan citra grayscale ............................................................ 5
Menampilkan histogram dari semua piksel pada gambar berwarna ................................................. 5
Plot histogram gambar abu-abu. ........................................................................................................ 7
Tugas 2: Tampilkan gambar anda dalam grayscale dan buat histogramnya ...................................... 8
Temukan kontur gambar dari gambar grayscale ................................................................................ 9
Tugas 3: Temukan kontur gambar Anda sendiri ............................................................................... 10
Transformasi Grayscale dan Persamaan Histogram ............................................................................. 11
Grayscale Transformation ................................................................................................................. 11
Tugas 4: Cobalah beberapa operasi matematika pada gambar Anda .............................................. 13
Histogram Equalization ..................................................................................................................... 13
Tugas 5: Lakukan pemerataan histogram pada gambar grayscale Anda ......................................... 15
Transformasi Fourier dari Gambar Abu-abu ......................................................................................... 16
Tugas 6: Hasilkan transformasi fourier dari gambar grayscale Anda ............................................... 17
Menemukan Tepi dengan Highpass Filtering di FFT ............................................................................. 17
Import module yang diperlukan

• Numpy adalah library untuk manipulasi array, digunakan untuk aljabar linier, transformasi
Fourier, dan kemampuan bilangan acak.
• Pandas adalah library untuk manipulasi data dan analisis data.
• CV2 adalah library untuk tugas-tugas computer vision.
• Skimage adalah library yang mendukung aplikasi pengolah gambar pada python.
• Matplotlib adalah library yang menghasilkan gambar dan menyediakan toolkit antarmuka
pengguna grafis.

Mambaca dan menampilkan gambar


memasukan path dari gambar yang dipilih

input_path="/content/image-1.jpeg"
input_path="/content/image-2.jpeg"
input_path="/content/image-3.jpeg"

lalu berikan perintah untuk membaca path dari gambar lalu menampilkannya

def cv_imshow(img):

plt.figure(figsize = (15,15))
plt.imshow(img)
plt.xticks([]), plt.yticks([])
plt.show()

input_path="/content/image-1.jpeg"
input_path="/content/image-2.jpeg"
input_path="/content/image-3.jpeg"

Buat daftar untuk menyimpan url gambar

urls = ["image-1.jpeg",
"image-2.jpeg",
"image-3.jpeg"
]

Fungsi untuk Baca dan tampilkan gambar

def cv_imshow(img):
plt.figure(figsize = (15,15))
plt.imshow(img)
plt.xticks([]), plt.yticks([])
plt.show()
loop terhadap URL gambar, Anda dapat menyimpan beberapa url gambar dalam daftar

for url in urls:


image = io.imread(url)
image_2 = cv.cvtColor(image, cv.COLOR_BGR2RGB)
final_frame = cv.hconcat((image, image_2))
cv_imshow(final_frame)
Tugas 1: Baca gambar dari URL dan tampilkan
Cari gambar dari google, lalu gunakan url address dari gambar tersebut untuk melakukan operasi
di bawah ini dengan menghapus tanda komentarnya.

url =
https://www.google.com/url?sa=i&url=https%3A%2F%2Fkhyzylsaleem.ar
tstation.com%2F&psig=AOvVaw3xZfG9fHJgJHmwocQfuLOo&ust=16198545891
11000&source=images&cd=vfe&ved=0CAoQjRxqFwoTCLCF7Oa6pfACFQAAAAAdA
AAAABAD
myImg = io.imread(url)
cv_imshow(cv.cvtColor(myImg, cv.COLOR_BGR2RGB))

Kontur Gambar dan Histogram

Gunakan image dari indeks pertama dalam variabel urls

image = io.imread(urls[0])

Menghasilkan Histogram citra berwarna dan citra grayscale


Terkadang meningkatkan kontras pada gambar atau memperluas kontras di wilayah tertentu
sambil mengorbankan detail dalam warna yang tidak terlalu bervariasi, atau tidak penting. Alat yang baik
untuk menemukan wilayah yang menarik adalah histogram. Untuk membuat histogram dari data gambar
kita, kita menggunakan fungsi matplot.pylab hist ().

Menampilkan histogram dari semua piksel pada gambar berwarna

plt.hist(image.ravel(),bins = 256, range = [0,256])


plt.show()
Menampilkan histogram saluran R, G, B Kita dapat mengamati bahwa saluran hijau memiliki
banyak piksel di 255, yang mewakili tambalan putih pada gambar.

color = ('b','g','r')
for i,col in enumerate(color):
histr = cv.calcHist([image],[i],None,[256],[0,256])
plt.plot(histr,color = col)
plt.xlim([0,256])
plt.show()

gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY)


cv_imshow(gray_image)
Plot histogram gambar abu-abu.
Kita bisa mengamati bahwa frekuensi histori citra mengalami penurunan ~ 1/3 dari histogram
citra berwarna
plt.hist(gray_image.ravel(),bins = 256, range = [0, 256])
plt.show()
Tugas 2: Tampilkan gambar anda dalam grayscale dan buat histogramnya

myGrayImg = cv.cvtColor(image, cv.COLOR_BGR2GRAY)


cv_imshow(myGrayImg)

plt.hist(image.ravel(),bins = 256, range = [0,256])


plt.show()
Temukan kontur gambar dari gambar grayscale

Metode 1: Gunakan matplotlib. contour

plt.contour(gray_image, origin = "image")

Metode 2: Gunakan library openCV

Setel ambang batas untuk deteksi kontur

ret, thresh = cv.threshold(gray_image,100,200,0)


contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE,
cv.CHAIN_APPROX_SIMPLE)
cv.drawContours(image, contours, -1, (0, 255, 0), 3)
plt.imshow(image)

Tugas 3: Temukan kontur gambar Anda sendiri

plt.contour(gray_image, origin = "image")


<matplotlib.contour.QuadContourSet at 0x7f8daa4e3210>
Transformasi Grayscale dan Persamaan Histogram

Grayscale Transformation

Bagian ini memberikan beberapa contoh melakukan transformasi matematis dari gambar
grayscale

Ini adalah operasi kebalikan dari gambar grayscale,


bisa dilihat bahwa piksel cerah menjadi gelap, dan piksel gelap menjadi cerah
im2 = 255 - gray_image
cv_imshow(im2)

Transformasi gambar lainnya, setelah menambahkan konstanta, semua piksel menjadi lebih cerah dan
efek gambar seperti perpeloncoan dihasilkan
im3 = (100.0/255)*gray_image + 100
cv_imshow(im3)
Tingkat kecerahan gambar abu-abu berkurang setelah langkah ini

im4 = 255.0*(gray_image/255.0)**2
cv_imshow(im4)
Tugas 4: Cobalah beberapa operasi matematika pada gambar Anda

myGrayImgTrans = (14980.0/255)*gray_image4 *(gray_image/255.0)**8


cv_imshow(myGrayImgTrans)

Histogram Equalization
Bagian ini mendemonstrasikan pemerataan histogram pada gambar gelap. Transformasi ini
meratakan histogram tingkat abu-abu sehingga semua intensitas menjadi seumum mungkin. Fungsi
transformasi adalah fungsi distribusi kumulatif (cdf) dari nilai piksel pada citra (dinormalisasi untuk
memetakan rentang nilai piksel ke rentang yang diinginkan). Contoh ini menggunakan gambar 4 (im4).

Fungsi dari histogram equalization

def histeq(im, nbr_bins = 256):


""" Persamaan histogram dari citra grayscale. """

dapatkan histogram gambar

imhist, bins = np.histogram(im.flatten(), nbr_bins, [0, 256])


cdf = imhist.cumsum() # fungsi distribusi kumulatif
cdf = imhist.max()*cdf/cdf.max() #normalisasi
cdf_mask = np.ma.masked_equal(cdf, 0)
cdf_mask = (cdf_mask - cdf_mask.min())*255/(cdf_mask.max()-
cdf_mask.min())
cdf = np.ma.filled(cdf_mask,0).astype('uint8')
return cdf[im.astype('uint8')]

terapkan fungsi pada gambar gelap Anda untuk meningkatkan kontras


kita dapat mengamati bahwa kontras latar belakang hitam telah meningkat
im5 = histeq(im4)
cv_imshow(im5)

Ekstra: mencoba memvisualisasikan histogram citra setelah pemerataan histogram

Sebelum pemerataan histogram

plt.hist(im4.ravel(),bins = 256, range = [0, 256])


plt.show()

Setelah pemerataan histogram


plt.hist(im5.ravel(),bins = 256, range = [0, 256])
plt.show()

---
Tugas 5: Lakukan pemerataan histogram pada gambar grayscale Anda
def histeq(im, nbr_bins = 256):

imhist, bins = np.histogram(im.flatten(), nbr_bins, [0, 256])


cdf = imhist.cumsum()
cdf = imhist.max()*cdf/cdf.max()
cdf_mask = np.ma.masked_equal(cdf, 0)
cdf_mask = (cdf_mask - cdf_mask.min())*255/(cdf_mask.max()-
cdf_mask.min())
cdf = np.ma.filled(cdf_mask,0).astype('uint8')
return cdf[im.astype('uint8')]

grayIMG1 = histeq(myGrayImgTrans)
cv_imshow(grayIMG1)

plt.hist(myGrayImgTrans.ravel(),bins = 256, range = [0, 256])


plt.show()
plt.hist(grayIMG1.ravel(),bins = 256, range = [0, 256])
plt.show()
Sebelum

sesudah

Transformasi Fourier dari Gambar Abu-abu


Transformasi fourier digunakan untuk mencari domian frekuensi gambar. Anda dapat
menganggap gambar sebagai sinyal yang diambil sampelnya dalam dua arah. Jadi mengambil
transformasi fourier di kedua arah X dan Y memberi Anda representasi frekuensi gambar. Untuk sinyal
sinusoidal, jika amplitudo berubah sangat cepat dalam waktu singkat, dapat dikatakan itu adalah sinyal
frekuensi tinggi. Jika bervariasi perlahan, itu adalah sinyal frekuensi rendah. Tepi dan noise adalah konten
frekuensi tinggi dalam gambar karena berubah secara drastis dalam gambar.
Buramkan gambar grayscale dengan filter Guassian dengan ukuran kernel 10
imBlur = cv.blur(gray_image,(5,5))

Ubah gambar menjadi domain frekuensi

f = np.fft.fft2(imBlur)

Bawa komponen frekuensi-nol ke tengah

fshift = np.fft.fftshift(f)
magnitude_spectrum = 30*np.log(np.abs(fshift))

plt.subplot(121),plt.imshow(imBlur, cmap = 'gray')


plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(magnitude_spectrum, cmap = 'gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()

Tugas 6: Hasilkan transformasi fourier dari gambar grayscale Anda


plt.subplot(122),plt.imshow(magnitude_spectrum, cmap = 'gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()

Menemukan Tepi dengan Highpass Filtering di FFT


Bagian ini mendemonstrasikan melakukan high pass filter untuk menghilangkan komponen
frekuensi rendah, sehingga menghasilkan gambar yang tajam yang berisi tepinya.

rows, cols = imBlur.shape


crow,ccol = round(rows/2) , round(cols/2)

hilangkan frekuensi rendah dengan ukuran persegi panjang 10


fshift[crow-10:crow+10, ccol-10:ccol+10] = 0
f_ishift = np.fft.ifftshift(fshift)
img_back = np.fft.ifft2(f_ishift)
img_back = np.abs(img_back)

plt.figure(figsize=([20, 20]))
plt.subplot(131),plt.imshow(imBlur, cmap = 'gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(132),plt.imshow(img_back, cmap = 'gray')
plt.title('Gambar setelah HPF'), plt.xticks([]), plt.yticks([])
plt.subplot(133),plt.imshow(img_back)
plt.title('Hasil dalam JET'), plt.xticks([]), plt.yticks([])
plt.show()

Anda mungkin juga menyukai