Bilgisayar grafikleri ve görüntü işlemede, bir zincir kodu bir nesnenin dış hatlarını siyah beyaz veya tek renkli bir görüntüde kodlamak için kullanılan bir algoritmadır. Sonuçta ortaya çıkan kod dizisi, nesnenin anahatlarının bulunduğu görüntüye göre nasıl çizileceğini açıklayabilir veya algoritmanın başladığı anahat üzerindeki konuma göre, esasen aşağıdaki adımları uygulayarak bir yön tarifi topluluğu olabilir. nesneyi yeniden çizmek için izlenebilir. Bu kodlar bir formüle göre normalleştirilebilir ve daha sonra iki nesnenin aynı olup olmadığını belirlemek için başka bir zincir koduyla karşılaştırılabilir. Optik karakter tanıma (OCR) programlarında daha yaygın olarak kullanılabilmesine rağmen, bir bilgisayar görme programındaki nesneleri izole etmek veya görüntü işlemede görüntü bölümlendirme için bir zincir kodu kullanılabilir.
Bir zincir kodu için çeşitli algoritmalar olmasına rağmen, temel kavram her birinde aynıdır. İlk olarak, bir nesnenin kenarı, genellikle bir piksel görüntüyü piksel tarafından piksel olarak hareket ettirilerek bulunur. Yerleştirildikten sonra, pozisyon kaydedilir ve çevresindeki kenarlar algılanır. Algılama algoritmasının saat yönünde veya saatin tersi yönünde hareket etmesine bağlı olarak, geçerli konum orijinal konumuna dönene kadar kenar boyunca bir yönde veya başka bir yönde hareket eder.
Geçerli konum her hareket ettiğinde, zincir koduna bir sayı kaydedilir. Bu sayı genellikle nesnenin kenarı boyunca hareket eden yönü gösterir. Örneğin, bir zincir kodu algoritması sağdan sola doğru düz bir kenarı takip ediyorsa, o zaman kenar sola doğru takip edildiğinde, sola ilişkin sayısal kod kodun sonuna eklenir. Sonuçta ortaya çıkan kod, dizi rasgele bir başlangıç noktasından takip edilirse ve her adımda yerleştirilen bir pikselden sonra nesnenin dış çizgisinin yeniden çizileceği bir sayı dizisidir.
Kodu oluşturan sayılar dizisi tamamlandıktan sonra, diğer zincir kod dizileriyle kıyaslamalar yapmak için birkaç farklı algoritma uygulanabilir. İlk olarak, en düşük tamsayı değeri belirlenene kadar başlangıç numarası çevrilerek sayı normalleştirilir. Bu şekilde, kodlamanın nerede başladığına bakılmaksızın, aynı anahattı olan iki nesne karşılaştırılabilir.
Zincir kodu algoritmasının daha karmaşık versiyonları mevcuttur. Bunlar, bir nesnenin ana hattının, çizgilerle birbirine bağlanmış bir koordinat dizisi ile tanımlandığı vektör bazlı kodlamayı içerir, bununla birlikte, bu yöntem, ayrıntılı olarak ayrıntılı taslaklarda kullanıldığında kaybolabilir. Algoritmanın bir versiyonu ayrıca istisnai olarak büyük veya karmaşık nesneler için kodları daha da sıkıştırmak ve böylece daha verimli bir şekilde depolanmaları için çalışma uzunluğu kodlamasını (RLE) kullanan bir sürüm de mevcuttur.


