> For the complete documentation index, see [llms.txt](https://bytistan.gitbook.io/baytistan/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bytistan.gitbook.io/baytistan/goruntu-isleme/9-parcali-cizgi-takip.md).

# 9 Parçalı Çizgi Takip

Algoritma, bir görüntüyü öncelikle siyah-beyaz hale getirir ve ardından 9 eşit parçaya böler. Her bir parçada siyah piksellerin oranı hesaplanır, bu oranlar ilgili sıra numaralarıyla birlikte analiz edilir. Bu veriler sayesinde, çizginin görüntü içindeki pozisyonu ve şekli hakkında bilgi edinilir.

## Dönüş Çizgisinin Tespit Edilmesi

Anlatımı güçlendirmek adına görsel üzerinden devam edelim.

<figure><img src="https://1053516368-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FV8G6YwweEdobmiyQXiAA%2Fuploads%2F23Gdcc6JmuEz4xoYlLMj%2FL%20-%20Corner.png?alt=media&amp;token=3ba6c958-9689-45f9-a9db-53d4c3edf330" alt=""><figcaption></figcaption></figure>

Görselde, çizgi 4, 5 ve 7 numaralı karelerin üzerinde yer almaktadır. Görüntü işleme programına bu veriler verildiğinde, aşağıdaki gibi bir çıktı elde edilir:

```json
{
    0: 2, 
    1: 3, 
    2: 0, 
    3: 0, 
    4: 66, 
    5: 55, 
    7: 55, 
    6: 0, 
    8: 0
}
```

Yukarıdaki çıktıda kareler içindeki siyahlık oranları yüzde olarak verilmiştir. Eğer 4, 5 ve 7 numaralı karelerdeki siyahlık oranları belirli bir yüzdelik değerin üzerindeyse, bu bir L dönüşü anlamına gelir. Diğer karelerdeki düşük siyahlık oranları kullanılarak doğruluk oranını artırabilir.

***

## Dönüşün Sağlaması

Dönüş 90° derece olarak tamamlandığında, çizgi kameradan farklı bir şekilde gözükmektedir. Kamera ekseni değiştiğinden, dönüş tamamlandığında elde edilen sonuçlar üzerinden doğrulama yapılabilir.

<figure><img src="https://1053516368-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FV8G6YwweEdobmiyQXiAA%2Fuploads%2FYTK8KEZW3r41CHZBPees%2FCorner%20Turn.png?alt=media&amp;token=c41ae078-31ff-4633-a090-48e5f9f6a3a5" alt=""><figcaption></figcaption></figure>

***

## Yatayda Çizgi Ortalama

Bu aşamada görüntünün uç noktalarındaki karelere bakılır, yani ara karelere bakılmaz. Çünkü çizginin başlangıç ve bitişi net olarak görünüyorsa, çizgi ortalama yapılabilir. Çizgi merkezde olmalıdır; yani 1 ve 7 numaralı karelerdeki siyahlık oranı ( kameranın konumlandırmasına bağlı olarak ) %60'tan fazla olmalıdır. Eğer \[0, 6] veya \[2, 8] karelerinde belirli bir oranın üzerinde siyahlık tespit edilirse, bu robotun çizgiden çıktığı anlamına gelir.

<figure><img src="https://1053516368-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FV8G6YwweEdobmiyQXiAA%2Fuploads%2FQDtDi7i7Y5U6Ilc7dhIC%2FLine%20Center.png?alt=media&amp;token=0f00e0cd-8e2a-4f0a-a9fb-973fb99d92cd" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Yukarıdaki örnekte robot, çizgiden maksimum miktarda sapmıştır. Bu durum genelde yaşanmaz ve sadece anlaşılabilirlik sağlamak için kullanılmıştır.
{% endhint %}

***

## Çapraz Çizgi Ortalama

\[2, 6] veya \[0, 8] karelerinde siyahlık oranı fazla ise, robot çizginin çaprazda kaldığını anlar ve buna göre aksiyon alır.

<figure><img src="https://1053516368-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FV8G6YwweEdobmiyQXiAA%2Fuploads%2FlxrGZ9ysl0zg647Gbf11%2FLine%20Center%20-%20Cross.png?alt=media&amp;token=0ea10b1d-b38e-4d43-b58c-fe286d05a8a6" alt=""><figcaption></figcaption></figure>

***

## Hassasiyet Ayarı

0, 2, 6 ve 8 numaralı kareler büyültülerek veya küçültülerek hassasiyet ayarı yapılabilir.

<figure><img src="https://1053516368-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FV8G6YwweEdobmiyQXiAA%2Fuploads%2FTD9KkUJ6N0C8aOskGoZI%2FSensitivity.png?alt=media&amp;token=5784a77f-c662-4719-a7f8-24b7b9e39e22" alt=""><figcaption></figcaption></figure>

***

## Algoritmanın Çalışması İçin Gerekli Ortam

{% hint style="warning" %}
Bu yazıda anlatılan algoritma proje tabanlı oluşturulmuştur ve her duruma ve koşula uygun değildir. Uygun ortam ve koşullar sağlandığında kusursuz çalışmaktadır.
{% endhint %}

***

### Kamera yüksekliği

Kameranın gördüğü alan, takip edilecek çizginin minimum 3 katı olmalıdır. 3 katın üzerindeki değerler tolerans sağlar. 4 katın üzerine çıkılması tavsiye edilmez.

***

### Ortam Işıklandırması

Gölge veya ışık patlamaları algoritmayı olumsuz etkileyebilir. Işıklandırma yapılması makuldür. Işığın kameraya yansımaması için yatay ışıklandırma yapılmalıdır.

***

### Kamera Konumlandırması

Kamera, robotun merkezinde ve yere paralel şekilde konumlandırılmalıdır.

***

## Genel Bakış

Tüm durumları detaylı olarak ele almak gerekmiyor, çünkü bazı durumlar kendini tekrar ediyor. Temel yapıyı anlayan bir kişi, bu algoritmayı kendi projesine kolaylıkla uyarlayabilir.

***

### Github Deposu

<https://github.com/baytist/line_tracking>
