Endüstri 4.0 ve akıllı fabrikaların kalbinde bilgisayarlı görü (Computer Vision) sistemleri yer alır. Manuel göz kontrolü yapan insan operatörler saatler süren vardiyalarda yorulabilir, dikkat dağınıklığı yaşayabilir ve mikron seviyesindeki çatlakları ya da boyutsal sapmaları gözden kaçırabilir.

OpenCV (Open Source Computer Vision Library), saniyede yüzlerce kareyi gerçek zamanlı işleyerek parça sayımı, boyut ölçümü, delik kontrolü ve yüzey deformasyonu tespitini %99.8 doğrulukla gerçekleştirebilir. Bu makalede konveyör bant üzerinde hareket eden metal pulların veya plastik parçaların kusurlarını tespit eden ve sağlam parçaları sayan uçtan uca bir Python mimarisi kuracağız.

Görüntü Ön İşleme Adımları (Pipeline)

Kusursuz bir tespit için ham kamera görüntüsü sırasıyla şu filtrelerden geçirilir:

  1. Gri Tonlama (Grayscale): 3 kanallı (RGB) renkli görüntü tek kanallı parlaklık matrisine indirgenir, işlem süresi 3 kat hızlanır.
  2. Gaussian Blur (Bulanıklaştırma): Kamera sensöründen kaynaklanan yüksek frekanslı karıncalanma ve piksel gürültüleri yok edilir.
  3. OTSU / Eşikleme (Thresholding): Arka plan (konveyör bant) ile ilgilendiğimiz nesne (ürün) birbirinden siyah/beyaz olarak ayrıştırılır (Binarization).
  4. Morfolojik Operatörler (Opening & Closing): Parça kenarındaki istenmeyen küçük pürüzler temizlenir.
  5. Kontur Bulma (Contour Finding): Parçanın dış sınır geometrisi (alan, çevre, dairesellik) hesaplanır.

Çalışan Python OpenCV Kalite Kontrol Kodu

import cv2
import numpy as np

# Kamera veya video akışını aç
cap = cv2.VideoCapture(0)

# İdeal parça kriterleri (Referans pul parametreleri)
MIN_AREA = 3000      # Minimum parça alanı (piksel)
MAX_AREA = 7500      # Maksimum parça alanı
IDEAL_CIRCULARITY = 0.85 # Dairesellik oranı (1.0 = kusursuz çember)

passed_count = 0
rejected_count = 0

print("OpenCV Kalite Kontrol ve Sayım Sistemi Başlatıldı...")

while True:
    ret, frame = cap.read()
    if not ret:
        break

    # 1. Gri Tonlamaya Çevir ve Bulanıklaştır
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    blurred = cv2.GaussianBlur(gray, (7, 7), 0)

    # 2. Otsu Eşikleme ile İkili (Binary) Maske Oluştur
    _, thresh = cv2.threshold(blurred, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

    # 3. Konturları Tespit Et
    contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

    for cnt in contours:
        area = cv2.contourArea(cnt)
        if area < 1000: # Küçük toz/parazitleri yok say
            continue

        perimeter = cv2.arcLength(cnt, True)
        if perimeter == 0:
            continue

        # Dairesellik Formülü: 4 * pi * Alan / (Çevre^2)
        circularity = 4 * np.pi * (area / (perimeter * perimeter))

        # Parça konumunu sınırlayıcı kutuyla al
        x, y, w, h = cv2.boundingRect(cnt)

        # Kalite Kontrol Karar Mantığı
        is_area_ok = MIN_AREA <= area <= MAX_AREA
        is_shape_ok = circularity >= IDEAL_CIRCULARITY

        if is_area_ok and is_shape_ok:
            status = "ONAYLANDI"
            box_color = (0, 255, 0) # Yeşil
        else:
            status = "KUSURLU"
            box_color = (0, 0, 255) # Kırmızı

        # Görsel Çizimler
        cv2.rectangle(frame, (x, y), (x + w, y + h), box_color, 2)
        cv2.putText(frame, f"{status} - Alan:{int(area)}", (x, y - 10),
                    cv2.FONT_HERSHEY_SIMPLEX, 0.5, box_color, 2)

    # Canlı Dashboard Bilgileri
    cv2.putText(frame, "KodKatman Vision AI System", (20, 30),
                cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 255), 2)

    cv2.imshow("Endustriyel Kalite Kontrol", frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Endüstriyel Kamera ve Aydınlatma İpuçları

Görüntü işlemede yazılım başarısının %70'i doğru aydınlatmaya bağlıdır:

  • Arka Aydınlatma (Backlight): Parçanın arkasından ışık verilerek silüeti çıkarılır. Boyutsal ölçüm ve çatlak tespitinde en kusursuz ve gölgesiz yöntemdir.
  • Halka Aydınlatma (Ring Light): Parça yüzeyindeki baskı hatalarını, çizikleri ve renk bozukluklarını görmek için kameranın etrafına monte edilir.
  • Polarize Filtre: Parlak metal veya cam yüzeylerdeki ışık patlamalarını (glare) engeller.
Gelişmiş Adım: Klasik OpenCV eşikleme yöntemlerinin yetersiz kaldığı karmaşık dokulu yüzeylerde (örneğin kumaş veya ahşap yüzey kontrollerinde), YOLOv8 veya U-Net tabanlı yapay zeka segmentasyon modelleriyle hibrit mimariler geliştiriyoruz.