电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

图像处理之霍夫变换圆检测算法VIP免费

图像处理之霍夫变换圆检测算法_第1页
1/12
图像处理之霍夫变换圆检测算法_第2页
2/12
图像处理之霍夫变换圆检测算法_第3页
3/12
图像处理之霍夫变换圆检测算法 一:霍夫变换检测圆的数学原理 根据极坐标,圆上任意一点的坐标可以表示为如上形式, 所以对于任意一个圆, 假设中心像素点 p(x0, y0)像素点已知, 圆半径已知,则旋转 360由极坐标方程可以得到每个点上得坐标同样,如果只是知道图像上像素点, 圆半径,旋转 360°则中心点处的坐标值必定最强.这正是霍夫变换检测圆的数学原理. 二:算法流程 该算法大致可以分为以下几个步骤 三:运行效果 图像从空间坐标变换到极坐标效果, 最亮一点为圆心. 图像从极坐标变换回到空间坐标,检测结果显示: 四:关键代码解析 个人觉得这次注释已经是非常的详细啦,而且我写的还是中文注释 [jav a] view plaincopy 1. /** 2. * 霍夫变换处理 - 检测半径大小符合的圆的个数 3. * 1. 将图像像素从2D 空间坐标转换到极坐标空间 4. * 2. 在极坐标空间中归一化各个点强度,使之在 0〜255 之间 5. * 3. 根据极坐标的 R 值与输入参数(圆的半径)相等,寻找 2D 空间的像素点 6. * 4. 对找出的空间像素点赋予结果颜色(红色) 7. * 5. 返回结果2D 空间像素集合 8. * @return int [] 9. */ 10. public int[] process() { 11. 12. // 对于圆的极坐标变换来说,我们需要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. } 18. } 19. int x0, y0; 20. double t; 21. for (int x = 0; x < width; x++) { 22. for (int y = 0; y < height; y++) { 23. 24. if ((input[y * width + x] & 0xff) == 255) { 25. 26. for (int theta = 0; theta < 360; theta++) { 27. t = (theta * 3.14159265) / 180; // 角度值0 ~ 2*PI 28. x0 = (int) Math.round(x - r * Math.cos(t)); 29. y0 = (int) Math.round(y - r * Math.sin(t)); 30. if (x0 < width && x0 > 0 && y0 < height && y0 > 0) { 31. acc[x0 + (y0 * width)] += 1; 32. } 33. } 34. } 35. } 36. } 37. 38. // now normalise to 255 and put in format for a pixel array 39. int max = 0; 40. 41. // Find max ...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

图像处理之霍夫变换圆检测算法

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部