Merging Binary Object

By | January 15, 2021
Print Friendly, PDF & Email
1,163 Views

Sinopsis

Pengolahan citra digital untuk pada operasi morflogi sangat dibutuhkan sebagai alat bantu pengenalan sebuah pola, misalkan pada mesin OCR (optical character recognition) terutama untuk mengenal karakater/simbol huruf kecil/ huruf kanji/ ataupun huruf dengan simbol yang secara umum 1 huruf terdiri dari 1 objek, misalkan saja huruf kanji/huruf arab yang setiap hurufnya terkadang dibuat beberapa simbol. Operasi ini melibatkan operasi blob, kalian bisa baca link berikut http://www.softscients.web.id/2016/09/mengenal-contour-retrieval-mode.html. Berikut gambar yang akan digunakan yang merupakan sebuah simbol yang utuh, bila kalian perhatikan ada 2 objek yang tidak saling terhubung. Bila kalian menggunakan operasi Blob, maka akan ada 2 objek yang dikenali (bukan 1 objek)

Bila dibuat negasi image nya, akan tampil seperti berikut
Langkah mudahnya yaitu menggunakan teknik rectangle.
Kalian bisa melihat akan terdeteksi menjadi satu objek secara utuh.
Kalian bisa menggunakan kode seperti berikut:
import cv2
import numpy as np
from matplotlib import pyplot as plt

plt.close('all')    
img = cv2.imread('D:/5. Project/python-intersection/gambar.png', cv2.IMREAD_GRAYSCALE);
img2 = img.copy()
img3 = img.copy()
cv2.bitwise_not(img,img2)
cv2.bitwise_not(img,img3)
plt.figure()
plt.imshow(img2,cmap='gray')


font = cv2.FONT_HERSHEY_SIMPLEX
ret,thresh = cv2.threshold(img2,127,255,0)
image, contours, _ = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
##################################
#DIGABUNGKAN VIA RECTANGLE
##################################
for contour in contours:
    [x,y,w,h] = cv2.boundingRect(contour)      
    if w > 10 and h>10:
        cv2.rectangle(img2,(x,y),(x+w,y+h),(255,255,0),2)
plt.figure()
plt.imshow(img2,cmap='gray')


##################################
#HASIL AKHIR
##################################

image, contours, _ = cv2.findContours(img2,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
    [x,y,w,h] = cv2.boundingRect(contour)      
    if w > 10 and h>10:
        cv2.rectangle(img3,(x,y),(x+w,y+h),(255,255,0),2)

plt.figure()
plt.imshow(img3,cmap='gray')
plt.show()
ref:

Leave a Reply