noprianto
noprianto
. 2 min read

Sorting Contour Hasil Segmentasi Nomor Pelat Mobil

Bismillah,
Masih inget pada postingan yang sebelumnya hasil segmentasi nomor pelat yang masih terbalik sehingga ketika dilakukan pengenalan nomor pelat hasilnya juga tidak benar. Kasusnya kira-kira ditampilkan pada gambar di bawah ini

Hasil segmentasi
Hasil pengenalan

Dari hasil segmentasi dan pengenalan di atas ditunjukkan bahwa yang akan dilakukan pengenalan AB 1267 N, tetapi karena ketika segmentasi masih ngacak sehingga urutannya pun BA61N27. Yang harus kita lakukan adalah melakukan urutan contour tersebut, urutan berdasarkan koordinat sumbu x dari kiri ke kanan atau dari sumbu x yang nilainya terkecil ke terbesar. Dengan menggunakan python dapat dilakukan menggunakan perintah sederhana seperti di bawah ini

def sort_contours(contours, method="left-to-right"):
    reverse = False
    index = 0

    if method == "right-to-left" or method == "bottom-to-top":
        reverse = True

    if method == "top-to-bottom" or method == "bottom-to-top":
        index = 1

    bounding_boxes = [cv2.boundingRect(c) for c in contours]
    contours, bounding_boxes = zip(*sorted(zip(contours, bounding_boxes), key=lambda b: b[1][index], reverse=reverse))

    return contours, bounding_boxes

Sebenarnya yang paling penting dari perintah di atas adalah 3 baris terakhir, pertama yang kita lakukan adalah buat sebuah variabel untuk menyimpan list box dan kita manfaatkan fungsi sorted bawaan python untuk mengurutkan 2 list sekaligus contours dan bounding_boxes. Untuk lebih jelasnya silakan bisa membaca di sini.

Hasil setelah sorting contour

Dari gambar di atas menunjukan bahwa hasil segmentasi sudah sesuai urutan karakternya, perlu diingat bahwa untuk melakukan sorting countour sebaiknya setelah contour tersebut sudah difilter terlebih dahulu setelah itu baru diurutkan. Tujuannya adalah biar tidak mengurangi waktu pre-processing untuk melakukan sorting, silakan cek di github saya source code terkait hal tersebut

Demikian sedikit trik untuk mempercantik hasil segmentasi nomor pelat, semoga bermanfaat dan terus tidak menyerah untuk belajar computer vision. Happy python…:)

comments powered by Disqus