【Halcon学习笔记】16.极坐标转换
1.概述
在Halcon中,极坐标系(Polar Coordinate System)用于描述图像或物体上的点位置,其中点的位置由极径ρ和极角θ确定。极径表示点到原点的距离,而极角表示点与参考方向之间的角度。在图像处理中,极坐标转换常用于把圆形的图片(笛卡尔坐标)转换为矩形(极坐标),便于字符识别和关键区域的提取。


2.相关算子
2.1 图像极坐标转换
1)polar_trans_image_ext() //将图像中的环形弧转换为极坐标
Image:待转换的图像
PolarTransImage:转换后的图像
Row:圆弧中心行坐标
Column:圆弧中心列坐标
AngleStart:要映射到输出图像第一列的光线的角度
AngleEnd:要映射到输出图像的最后一列的光线的角度
RadiusStart:要映射到输出图像的第一行的圆的半径
RadiusEnd:要映射到输出图像的最后一行的圆的半径
Width:输出图像的宽度
Height:输出图像的高度
Interpolation:图像转换的插值算法
2)polar_trans_image_inv() //将极坐标系中的图像转换回笛卡尔坐标
PolarImage:待转换的图像
XYTransImage:转换后的图像
Row:圆弧中心行坐标
Column:圆弧中心列坐标
AngleStart:输入图像的第一列映射到的光线的角度
AngleEnd:输入图像的最后一列映射到的光线的角度
RadiusStart:输入图像的第一行映射到的圆的半径
RadiusEnd:将输入图像的最后一行映射到的圆的半径
Width:输出图像的宽度
Height:输出图像的高度
Interpolation:图像转换的插值算法
2.2 区域极坐标转换
1)polar_trans_region() //将图像中的环形弧转换为极坐标
2)polar_trans_region_inv() //将极坐标系中的图像转换回笛卡尔坐标
2.3 xld极坐标转换
1)polar_trans_contour_xld() //将图像中的环形弧转换为极坐标
2)polar_trans_contour_xld_inv() //将极坐标系中的图像转换回笛卡尔坐标
3.polar_trans_image_ext()参数详解

3.1 中心(Row、Column)
圆/圆环/圆弧的中心坐标。可通过bolb分析、圆形卡尺等方式找到中心坐标,目标相对固定的话也可以输入定值。
3.2 角度(AngleStart、AngleEnd)
所需要转换的角度范围。AngleStart是输出图像第一列的像素的角度,AngleEnd是输出图像最后一列的像素的弧度。

1)整个圆环作为目标转换输出:AngleStart = 0°,AngleEnd = 360°,角度范围为360°。

2)整个圆环作为目标转换输出:AngleStart = 360°,AngleEnd = 0°,角度范围为360°。

3)整个圆环作为目标转换输出:AngleStart = 50°,AngleEnd = 410°,角度范围为360°。

4)部分圆环作为目标转换输出:AngleStart = 320°,AngleEnd = 410°,角度范围为90°。

3.3 半径(RadiusStart、RadiusEnd)
所需要转换的半径范围。RadiusStart是输出图像第一行的像素的半径位置,RadiusEnd是输出图像最后一行的像素的半径位置。
1)整个半径范围的圆作为目标输出:RadiusStart = 0;RadiusEnd = Radius。

2)整个半径范围的圆作为目标输出:RadiusStart = Radius;RadiusEnd = 0。

3)部分半径范围的圆环作为目标输出:RadiusStart = Radius;RadiusEnd = (Radius-100)。

3.4 宽高(Width、Height)
转换后输出的图像的宽度和高度。宽度即是圆/圆弧的弧长;高度即是圆/圆弧的半径范围。
Width = abs ( AngleEnd-AngleStart ) * Radius
Height = abs ( RadiusStart - RadiusEnd )
注:弧长公式:L=n×π×r/180(角度制),L=α×r(弧度制)。
3.5 方法(Interpolation)
'nearest_neighbor':最邻近方法;输出图像中像素的灰度值由输入图像中最近像素的灰度值决定。
'bilinear':双线性方法;出图像中像素的灰度值由输入图像中最接近的四个像素的灰度值的双线性插值决定。
“双线性”产生的图像质量更好,但比模式“最近邻”慢。
4.极坐标转换在Halcon中的应用



by Ryou2-