4 ketetanggaan 8 Ketetanggaan
Pada 8-ketetanggaan
70
B. Filter Batas (Filter Max-Min)
Tujuan filter batas adalah untuk mencegah piksel yang
intensitasnya di luar intensitas piksel-piksel tetangga. Untuk
mendapatkan nilai piksel dan ketetanggannya perlu untuk
menentukan nilai terendah sebagai batas bawah dan nilai
tertinggi sebagai batas atas. Bila nilai piksel yang sedang
dihitung (iterasi) lebih kecil dari batas bawah, maka diberi
nilai sesuai dengan nilai batas bawah, begitu pula sebaliknya
dengan batas atas.
71
D. Filter Median
Filter median mengurutkan nilai piksel dan
ketetangaannya dari yang terkecil kemudian didaptkan nilai
tengahnya.
72
Semua bobot bernilai positif.
Jumlah keseluruhan bobot sebesar satu.
G. Filter lolos-tinggi
Filter lolos-tinggi adalah filter yang ditujukan untuk
melewatkan frekuensi tinggi dan menghalangi yang
berfrekuensi rendah. Hal ini biasa dipakai untuk
mendapatkan tepi objek dalam citra atau menajamkan citra.
73
Citra bulat.png Hasil dengan kernel #1
74
Contoh filter high-boost:
K. Effek emboss
Kernel yang digunakan:
75
Nilai negatif menentukan arah emboss
Embossing
Embossing
dari arah Hasil untuk
dari arah Kernel #1
kiri keatas kernel#1
kiri
Embossing
Embossing
dari arah Hasil untuk
dari arah Kernel #2
kanan kernel#2
kanan
bawah
76
Kelemahan filter linear, terutama ketika dipakai untuk
konvolusi citra atau penghilangan derau, yaitu membuat
struktur citra yang meliputi titik, tepi, dan garis ikut
terkaburkan dan kualitas citra keseluruhan menurun (Burger
dan Burge, 2008)
Filter non-linier menerapkan penapisan (filtering)
dengan fungsi non-linier.
Contoh filter linier:
Filter batas
Filter rerata
Filter median
Filter Gaussian tergolong sebagai filter lolos-rendah
yang didasarkan pada fungsi Gaussian.
77
Latihan:
1. Gaussian filter dari Scipy
from scipy import misc,ndimage
from matplotlib import pyplot as plt
face = misc.face()
blurred_face = ndimage.gaussian_filter(face,
sigma=3)
ax[0].imshow(face)
[in]
ax[0].set_title("Original Image")
ax[0].set_xticks([])
ax[0].set_yticks([])
ax[1].imshow(blurred_face)
ax[1].set_title("Blurred Image")
ax[1].set_xticks([])
ax[1].set_yticks([])
[out]
2. Linier Filtering
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
image = cv.imread("kucing.jpg")
78
sharpened = cv.filter2D(image, -1,
kernel_sharpening)
ax[1].imshow(cv.cvtColor(sharpened,
cv.COLOR_BGR2RGB))
ax[1].set_title('Sharpened Kernel Image')
plt.show()
[out]
import io
image =
[in] io.BytesIO(base64.b64decode(image_string))
Image.open(image)
[out]
79
im = Image.open('kucing.jpg')
box = (100, 150, 300, 300)
[in]
cropped_image = im.crop(box)
cropped_image
[out]
rotated = im.rotate(180)
[in] rotated
[out]
80
[out]
[out]
enhancer = ImageEnhance.Contrast(im)
[in] enhancer.enhance(2)
[out]
81
from PIL import ImageFilter
[in] im.filter(ImageFilter.CONTOUR)
[out]
im.filter(ImageFilter.EDGE_ENHANCE)
[in]
[out]
im.filter(ImageFilter.EMBOSS)
[in]
[out]
82
im.filter(ImageFilter.FIND_EDGES)
[in]
[out]
frame_num = 1
for frame in ImageSequence.Iterator(im):
[in] frame.save("frame%d.png" % frame_num)
frame_num = frame_num + 1
if frame_num == 3:
break
[out]
83
4. Cuplikan kode berikut membantu menemukan Wally di
tengah keramaian.
from pylab import imshow, show
import mahotas
import mahotas.demos
import numpy as np
wally = mahotas.demos.load('Wally')
wfloat = wally.astype(float)
r,g,b = wfloat.transpose((2,0,1))
w = wfloat.mean(2)
pattern = np.ones((24,16), float)
[in]
for i in range(2):
pattern[i::4] = -1
v = mahotas.convolve(r-w, pattern)
mask = (v == v.max())
mask = mahotas.dilate(mask,
np.ones((48,24)))
np.subtract(wally, .8*wally *
~mask[:,:,None], out=wally, casting='unsafe')
imshow(wally)
show()
[out]
84
Latihan Mandiri:
1. Carilah sembarang gambar (boleh dari internet atau
memotret sendiri), kemudian dari gambar tersebut
tampilkan dengan Python-OpenCV:
Gambar asli dengan menggunakan cv2_imshow( )
Gambar asli dengan menggunakan Matplotlib
2. Pada gambar no 1, lakukan konversi BGR ke HSV
kemudian tampilkan sebagai berikut (boleh menggunakan
Matplotlib atau cv2.imshow( )
85
Soal:
Pilih salah satu jawaban yang benar dengan memberi tanda
pada lembar jawaban.
1. Apa tujuan dari filter batas Sebuah citra ?
a. Untuk mendapatkan nilai piksel
b. Menjumlahkan nilai piksel
c. Mencegah piksel yang intensitasnya di luar intensitas
piksel-piksel tetangga
d. Mengurutkan nilai piksel
e. Menghilangkan filter yang berfrekuensi tinggi
86
5. Bagaimana fungsi Filter median dalam memproses citra?
a. Untuk mendapatkan nilai piksel
b. Menjumlahkan nilai piksel
c. Mencegah piksel yang intensitasnya di luar intensitas
piksel-piksel tetangga
d. Mengurutkan nilai piksel dari yang terkecil kemudian
didaptkan nilai tengahnya
e. Menghilangkan filter yang berfrekuensi tinggi
87