OCR Öncesi Resmi Döndürme

HALCON ile OCR işlemine başlamadan önce, resmin üzerindeki yazının yatay eksene paralel olacak şekilde döndürülmesi gerekmektedir.

resmi döndürdükten sonra ise,

haline gelecektir. Burada, sadece resmi değil, resimle birlikte Region da döndürmek gerekeceğinden, rotate_image komutu yerine transformation komutları (HomMat2DRotate) kullanmak gerekecektir.

Region ile birlikte döndürme yapan HALCON kodu :

 

read_image (Image, 'C:/Users/Mustafa/Desktop/RenPics/142856.bmp')
*Region bulalım
var_threshold(Image, Region, 460, 240, 0.2, 2, 'light')
closing_circle(Region, RegionClosing, 15)
opening_circle(RegionClosing, RegionOpening, 45)
fill_up(RegionOpening, RegionFillUp)
connection(RegionFillUp, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['area','inner_radius'], 'and', [700000, 200], [2000000, 280])
*
shape_trans(SelectedRegions, RegionTrans, 'convex')

*Resim ve Region birlikte Rotate Edelim
area_center(RegionTrans, Area, Row, Column)
text_line_orientation (RegionTrans, Image, 180, -0.523599, 0.523599, OrientationAngle)
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, -OrientationAngle, Row, Column, HomMat2DRotate)
affine_trans_image (Image, ImageRotate, HomMat2DRotate, 'constant', 'false')
affine_trans_region(RegionTrans, RegionAffineTrans, HomMat2DRotate, 'false')

Programın çalışmasını test etmek için kullanılabilecek 2 adet resmi buradan indirebilirsiniz

Döndürme İşlemi

Resim ve Region döndürmek, görüntü işleme uygulamalarında çok sık karşılaşılan bir durumdur. Aşağıdaki kod, en yalın döndürme örneğidir. (HALCON da farklı alternatifler de mevcut olmakla birlikte)

Aşağıdaki kalem resmini ve onu çevreleyen ROI yi, yatay düzleme paralel olacak şekilde döndürelim.

read_image (Image, ‘2.bmp’)
dev_set_line_width(2)
dev_set_draw(‘margin’)
threshold (Image, Regions, 0, 218)
fill_up (Regions, RegionFillUp)
shape_trans (RegionFillUp, RegionTrans, ‘rectangle2’)
dilation_circle(RegionTrans, RegionDilation, 20)
Kodun buraya kadar olan kısmı, kalemi seçip, etrafına ovalleştirilmiş dörtgen şeklinde bir ROI çizmeye yarar…
area_center(RegionFillUp, Area, Row, Column)
orientation_region (RegionFillUp, Phi)
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, -Phi, Column, Row, Yatay)
dev_clear_window()
affine_trans_image (Image, YatayKalem, Yatay, ‘constant’, ‘false’)
affine_trans_region (RegionDilation, RegionAffineTrans, Yatay, ‘false’)
Kodun devamının da çalıştırıldığında, kalemin ve etrafındaki ROI nin birlikte döndürülmüş hali.