Anda di halaman 1dari 26

grabbed, frame = camera.

read()
if not grabbed:
raise ValueError("Camera read failed!")
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

frame = utils.image_resize(frame, height=600)


height, width, channels = frame.shape

if not calibrated:
# Sample hand color
utils.add_text(frame, "Press space after covering rectangle with hand. Hit SPACE when ready")
x, y, w, h = width / 4, height / 2, 50, 50

cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

Image Thresholding with OpenCV Python


cv2.imshow("Calibration", frame)
if cv2.waitKey(2) & 0xFF == ord(' '):
roi = frame[y:y + h, x:x + w, :]
roi_hsv = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV)
min_value = np.amin(roi_hsv, (0, 1))
max_value = np.amax(roi_hsv, (0, 1))
cv2.destroyWindow("Calibration")
calibrated = True

else:
cv2.accumulateWeighted(frame, bg, 0.01) MK: Image Processing

Oleh: Danang Erwanto, ST., MT

010100010010101010000100010100101010010100010001001101010010010101010

010100010010101010000100010101001001101010100100100101010
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Pendahuluan
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

• Thresholding adalah proses mengubah citra grayscale menjadi citra biner


atau hitam putih sehingga dapat diketahui daerah mana yang termasuk
obyek dan background dari citra secara jelas.
• Dalam Proses Thresholding jika nilai piksel lebih besar dari nilai ambang,
maka piksel tersebut ditetapkan menjadi warna putih, dan sebaliknya jika
nilai piksel lebih kecil dari nilai ambang, maka piksel tersebut ditetapkan
menjadi warna hitam.
• Citra biner hasil thresholding biasanya digunakan lebih lanjut untuk proses
pengenalan obyek serta ekstraksi fitur.
MK : Image Processing (MKKPC09603)
Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Simple Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

• Fungsi yang digunakan  cv2.threshold.

• Langkah-Langkahnya adalah sebagai berikut:


• Pertama adalah mengubah citra RGB menjadi citra grayscale.

• Kedua adalah menentukan nilai ambang (threshold) yang digunakan untuk


mengklasifikasikan nilai-nilai pixel.
• Ketiga adalah menentukan maxVal yang mewakili nilai yang akan diberikan jika nilai
piksel lebih dari atau kurang dari nilai ambang.
MK : Image Processing (MKKPC09603)
Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Style Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

• OpenCV menyediakan berbagai style


thresholding antara lain :
• cv2.THRESH_BINARY

• cv2.THRESH_BINARY_INV

• cv2.THRESH_TRUNC

• cv2.THRESH_TOZERO

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Binary Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

• Fungsi  cv2.THRESH_BINARY
• Contoh sintaks
ret,thresholding = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)

Fungsi Sumber Citra maxVal style thresholding


Thresholding Grayscale Threshold
Value

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Binary Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Binary Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Binary_INV Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

• Fungsi  cv2.THRESH_BINARY_INV
• Contoh sintaks
ret,thresholding = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV)

Fungsi Sumber Citra maxVal style thresholding


Thresholding Grayscale Threshold
Value

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Binary_INV Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Binary_INV Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

TRUNC Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

• Fungsi  cv2.THRESH_BINARY_INV
• Contoh sintaks
ret,thresholding = cv2.threshold(gray,127,255,cv2.THRESH_TRUNC)

Fungsi Sumber Citra maxVal style thresholding


Thresholding Grayscale Threshold
Value

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

TRUNC Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

TRUNC Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

TOZERO Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

• Fungsi  cv2.THRESH_BINARY_INV
• Contoh sintaks
ret,thresholding = cv2.threshold(gray,127,255,cv2.THRESH_TOZERO)

Fungsi Sumber Citra maxVal style thresholding


Thresholding Grayscale Threshold
Value

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

TOZERO Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

TOZERO Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

TOZERO_INV Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

• Fungsi  cv2.THRESH_BINARY_INV
• Contoh sintaks
ret,thresholding = cv2.threshold(gray,127,255,cv2.THRESH_TOZERO_INV)

Fungsi Sumber Citra maxVal style thresholding


Thresholding Grayscale Threshold
Value

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

TOZERO_INV Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

TOZERO_INV Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Adaptive Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

• Dengan menggunakan nilai threshold global mungkin bukan pilihan yang baik
karena gambar memiliki kondisi pencahayaan yang berbeda di area yang berbeda.
• Dalam hal ini, mencari nilai threshold adaptif. Sehingga mendapatkan batasan yang
berbeda untuk berbagai wilayah dengan citra yang sama dan memberi hasil yang
lebih baik untuk citra dengan iluminasi yang bervariasi.
• Metode Adaptive Thresholding yang dapat digunakan untuk menghitung nilai
threshold :
• cv2.ADAPTIVE_THRESH_MEAN_C : nilai ambang batas adalah rata-rata area lingkungan pada
gambar.
• cv2.ADAPTIVE_THRESH_GAUSSIAN_C : nilai ambang adalah jumlah tertimbang nilai
lingkungan dimana bobot adalah window gaussian.

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Adaptive Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Adaptive Thresholding
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Otsu’s Binarization
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

• Pendekatan yang dilakukan pada metode otsu adalah dengan


melakukan analisis diskriminan yaitu menentukan suatu variabel
yang dapat membedakan antara dua atau lebih kelompok yang
muncul secara alami.
• Analisis Diskriminan akan memaksimumkan variable tersebut
agar dapat membagi objek latar depan (foreground) dan latar
belakang (background).
• Untuk ini, fungsi cv2.threshold () yang digunakan pada simple
thresholding, ditambahkan fungsi tambahan, cv2.THRESH_OTSU .
MK : Image Processing (MKKPC09603)
Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Otsu’s Binarization
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")

Otsu’s Binarization
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri
grabbed, frame = camera.read()
if not grabbed:
raise ValueError("Camera read failed!")
bg = utils.image_resize(frame, height=600).astype(np.float32)

while True:
grabbed, frame = camera.read()
if not grabbed:
print "Camera read failed"
break

MK : Image Processing (MKKPC09603)


Program Studi : Teknik Elektro – Uniska Kediri

Anda mungkin juga menyukai