Dalam grafik komputer dan pemrosesan gambar , kode rantai adalah algoritma yang digunakan untuk mengkodekan kontur suatu objek dalam gambar hitam putih, atau monokrom. Urutan kode yang dihasilkan dapat menggambarkan cara menggambar garis besar objek relatif terhadap gambar di mana ia berada, atau dapat berupa kumpulan arah relatif terhadap lokasi pada garis besar tempat algoritme dimulai, yang pada dasarnya menyediakan langkah-langkah yang dapat diikuti untuk menggambar ulang objek. Kode-kode ini dapat dinormalisasi menurut rumus dan kemudian dibandingkan dengan kode rantai lain untuk menentukan apakah dua objek identik. Kode rantai dapat digunakan untuk mengisolasi objek dalam program visi komputer atau segmentasi gambar dalam pemrosesan gambar, meskipun lebih umum digunakan dalam program pengenalan karakter optik (OCR).
Pria memegang komputer
Meskipun ada beberapa algoritma yang ditetapkan untuk kode rantai, konsep dasarnya sama di masing-masing. Pertama, tepi suatu objek ditempatkan, biasanya dengan memindahkan piksel demi piksel melalui gambar raster. Setelah ditemukan, posisi direkam dan tepi di sekitarnya dideteksi. Bergantung pada apakah algoritma pendeteksian akan bergerak searah jarum jam atau berlawanan arah jarum jam, lokasi saat ini dipindahkan ke satu arah atau lainnya di sepanjang tepi hingga kembali ke posisi semula.
Setiap kali posisi saat ini bergerak, nomor dicatat dalam kode rantai. Angka ini umumnya menunjukkan arah yang dipindahkan di sepanjang tepi objek. Misalnya, jika algoritma kode rantai mengikuti tepi lurus dari kanan ke kiri, maka setiap kali tepi ditelusuri ke kiri, kode numerik untuk kiri ditambahkan ke akhir kode. Kode yang dihasilkan adalah serangkaian angka di mana, jika urutannya diikuti dari titik awal yang berubah-ubah dan sebuah piksel ditempatkan pada setiap langkah, garis besar objek akan digambar ulang.
Setelah rangkaian angka yang membentuk kode selesai, beberapa algoritma yang berbeda dapat diterapkan untuk membantu membuat perbandingan terhadap urutan kode rantai lainnya. Pertama, bilangan tersebut dinormalisasi dengan memutar bilangan awal sampai nilai bilangan bulat terendah ditentukan. Dengan cara ini, dua objek yang memiliki garis besar yang sama dapat dibandingkan, terlepas dari mana pada setiap objek pengkodean dimulai.
Ada versi lain yang lebih kompleks dari algoritma kode rantai. Ini termasuk pengkodean berbasis vektor di mana garis besar suatu objek dijelaskan oleh urutan koordinat yang dihubungkan oleh garis, meskipun metode ini dapat hilang bila digunakan pada garis halus yang rinci. Versi algoritma juga ada yang menggunakan pengkodean run-length (RLE) untuk lebih mengompresi kode untuk objek yang sangat besar atau kompleks sehingga dapat disimpan dengan cara yang lebih efisien.