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…