Halcon图像处理-环形显示拉伸

本文介绍了一种用于柱面图像预处理的方法,通过极坐标到笛卡尔坐标的转换,将柱面上的目标区域拉伸至平面上,以便于后续的一维码、二维码或字符的准确识别。

某些场景如目标区域是在一个环形的柱面,那么我们就需要将柱面图像进行拉伸,使目标区域在一个平面中显示

预处理:

极坐标显示 - 转换为笛卡尔坐标显示

原理是:得到一个环形Ring 然后得到最小外接圆半径,再得到ring的内圆半径,然后再将环形ring 区域内的内容进行拉伸处理,将环形的图像转换为水平平面显示,主要的算子解释如下:

柱面拉伸图像预处理,这里给出一般的预处理,根据实际情况选择。

方法

预处理和一般图像预处理相同

*填充圆环得到最小的外接圆半径的圆心坐标

shape_trans (Ring, OuterCircle, 'outer_circle')

*求一个区域的补集

complement (Ring, RegionComplement)  求一个区域的补集

connection (RegionComplement, ConnectedRegions)

select_shape (ConnectedRegions, InnerCircle, ['width','height'], 'and', [450,450], [650,650])

* Determine the parameters of the ring that contains the bar code.

*求内外圆形的半径圆心坐标  求一个区域的最小外接圆

smallest_circle (Ring, Row, Column, OuterRadius) 得到外圆最小的圆形半径和圆形坐标信息  求取外圆的信息

smallest_circle (InnerCircle, InnerRow, InnerColumn, InnerRadius) 到最小的圆形半径和圆心坐标信息 求取内圆的信息

* Now read the bar code. This is done by computing the polar transformation

* of the ring in the image that contains the bar code.

WidthPolar := 1440 

HeightPolar := round(OuterRadius - InnerRadius - 10)  四舍五入算子

这是极坐标转换的主要算子:

polar_trans_image_ext (Image, PolarTransImage, Row, Column, rad(360), 0, OuterRadius - 5, InnerRadius + 5, WidthPolar, HeightPolar, 'bilinear')

主要参数设置:Image - 输入图像需要转换的原来图像 RowColum 圆环Ring的圆心坐标,接下来的两个参数表示需要拉伸的其实角度和终止角度。接下两个参数需要的是起始半径和终止半径,也就是说需要的到被识别文字的所在圆环区域。Bilinear 双线性插值法,精度大于邻近插值法

参考案例

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值