Plastik Boru Kameralı Kalite Kontrolü

Mavis, Plastik enjeksiyon yöntemiyle üretilmiş ürünlerin (kutu, boru vb.) kamerayla kalite kontrol ve ölçümlerinin yapılmasına ilişkin çözümler sunmaktadır. Plastik enjeksiyon sektöründe güvenle çalışan bu uygulamalarımızı zamanla geliştirmekte, yeni yaklaşımlarla desteklemekteyiz.

Plastik boru kalite kontrolüne ilişkin alternatif bir yaklaşım : Polar Transform.

Yukarıdaki resimdekine benzer Plastik boru da;

  • Çapak Kontrolü
  • Çeperde Kesiklik Kontrolü
  • Renk Kontrolü
  • Conta Varlık Kontrolü
  • Enjeksiyon Hataları Kontrolü

gibi kontroller yapılmaktadır. Alternatif bir yöntem olarak; Dairesel şekli açıp yatay düzlemde, dörtgen tipinde bir geometriye dönüştürmek ve bunun üzerinde işlem yapmak işleri çoğu zaman çok daha kolaylaştırır.

Boru yüzeyinin uygun HALCON kodları yardımıyla yatay düzleme transform edilmiş hali

Borudaki kesikliğin bulunması artık gayet kolaylaşmış oldu. Kesikliğin yerinin belirlenmesi :

Son olarak, ters transform ile, gerçek görüntü üzerinde kesikliğin gösterilmesi :

Programın HALCON kodu aşağıdaki gibidir :

read_image (Image, '1c.bmp')
*draw_circle (3600, Row, Column, Radius)
Row := 518
Column := 648
Radius := 374
gen_circle(Circle1, Row, Column, Radius)
gen_circle(Circle2, Row, Column, Radius+100)
difference(Circle2, Circle1, RegionDifference)
reduce_domain(Image, RegionDifference, ImageReduced)
polar_trans_image_ext (ImageReduced, PolarTransImage, Row, Column, rad(0), rad(360), Radius - 5, Radius+125, 2000, 200, 'bilinear')
mean_image(PolarTransImage, ImageMean, 3, 3)
bin_threshold(ImageMean, Region)
difference(ImageMean, Region, RegionDifference1)
connection(RegionDifference1, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 500, 999999)
count_obj(ConnectedRegions, Number)
if (Number > 1)
    select_obj(ConnectedRegions, ObjectSelected1, 1)
    select_obj(ConnectedRegions, ObjectSelected2, 2)
    distance_rr_min(ObjectSelected1, ObjectSelected2, MinDistance, Row1, Column1, Row2, Column2)
    R := Row1 + (Row2-Row1)/2
    C := Column1 + (Column2-Column1) / 2
    dev_set_color('red')
    gen_circle(DCircle, R, C, 30)
    dev_set_color('green')
    disp_cross(3600, R, C, 24, 0)
    polar_trans_region_inv (DCircle, CodeRegionCircular, Row, Column, rad(0), rad(360), Radius-5, Radius+125, 2000, 200, 1280, 1024, 'nearest_neighbor')
    disp_message (3600, 'Çeperde Kesiklik', 'window', 10, 10, 'red', 'true')

    stop()
endif

Projede kullanılan orijinal resmi yüklemek için, galerideki 1c isimli resmi indirebilirsiniz…