图像处理之霍夫变换圆检测算法 一:霍夫变换检测圆的数学原理 根据极坐标,圆上任意一点的坐标可以表示为如上形式, 所以对于任意一个圆, 假设中心像素点 p(x0, y0)像素点已知, 圆半径已知,则旋转 360由极坐标方程可以得到每个点上得坐标同样,如果只是知道图像上像素点, 圆半径,旋转 360°则中心点处的坐标值必定最强
这正是霍夫变换检测圆的数学原理
二:算法流程 该算法大致可以分为以下几个步骤 三:运行效果 图像从空间坐标变换到极坐标效果, 最亮一点为圆心
图像从极坐标变换回到空间坐标,检测结果显示: 四:关键代码解析 个人觉得这次注释已经是非常的详细啦,而且我写的还是中文注释 [jav a] view plaincopy 1
* 霍夫变换处理 - 检测半径大小符合的圆的个数 3
将图像像素从2D 空间坐标转换到极坐标空间 4
在极坐标空间中归一化各个点强度,使之在 0〜255 之间 5
根据极坐标的 R 值与输入参数(圆的半径)相等,寻找 2D 空间的像素点 6
对找出的空间像素点赋予结果颜色(红色) 7
返回结果2D 空间像素集合 8
* @return int [] 9
public int[] process() { 11
// 对于圆的极坐标变换来说,我们需要360 度的空间梯度叠加值 13
acc = new int[width * height]; 14
for (int y = 0; y < height; y++) { 15
for (int x = 0; x < width; x++) { 16
acc[y * width + x] = 0; 17
int x0, y0; 20
double t; 21