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

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

ID:57747979

大小:190.00 KB

页数:12页

时间:2020-09-02

图像处理之霍夫变换圆检测算法.doc_第1页
图像处理之霍夫变换圆检测算法.doc_第2页
图像处理之霍夫变换圆检测算法.doc_第3页
图像处理之霍夫变换圆检测算法.doc_第4页
图像处理之霍夫变换圆检测算法.doc_第5页
资源描述:

《图像处理之霍夫变换圆检测算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、图像处理之霍夫变换圆检测算法一:霍夫变换检测圆的数学原理根据极坐标,圆上任意一点的坐标可以表示为如上形式,所以对于任意一个圆,假设中心像素点p(x0,y0)像素点已知,圆半径已知,则旋转360由极坐标方程可以得到每个点上得坐标同样,如果只是知道图像上像素点,圆半径,旋转360°则中心点处的坐标值必定最强.这正是霍夫变换检测圆的数学原理.二:算法流程该算法大致可以分为以下几个步骤三:运行效果图像从空间坐标变换到极坐标效果,最亮一点为圆心.图像从极坐标变换回到空间坐标,检测结果显示:四:关键代码解析个人觉得这

2、次注释已经是非常的详细啦,而且我写的还是中文注释[java] viewplaincopy1./** 2. * 霍夫变换处理 - 检测半径大小符合的圆的个数 3. * 1. 将图像像素从2D空间坐标转换到极坐标空间 4. * 2. 在极坐标空间中归一化各个点强度,使之在0〜255之间 5. * 3. 根据极坐标的R值与输入参数(圆的半径)相等,寻找2D空间的像素点 6. * 4. 对找出的空间像素点赋予结果颜色(红色) 7. * 5. 返回结果2D空间像素集合 8. * @return int [] 9. 

3、*/  10.public int[] process() {  11.  1.    // 对于圆的极坐标变换来说,我们需要360度的空间梯度叠加值  2.    acc = new int[width * height];  3.    for (int y = 0; y < height; y++) {  4.        for (int x = 0; x < width; x++) {  5.            acc[y * width + x] = 0;  6.        }  7

4、.    }  8.    int x0, y0;  9.    double t;  10.    for (int x = 0; x < width; x++) {  11.        for (int y = 0; y < height; y++) {  12.  13.            if ((input[y * width + x] & 0xff) == 255) {  14.  15.                for (int theta = 0; theta < 360; 

5、theta++) {  16.                    t = (theta * 3.) / 180; // 角度值0 ~ 2*PI  17.                    x0 = (int) Math.round(x - r * Math.cos(t));  18.                    y0 = (int) Math.round(y - r * Math.sin(t));  19.                    if (x0 < width && x0 

6、> 0 && y0 < height && y0 > 0) {  20.                        acc[x0 + (y0 * width)] += 1;  21.                    }  22.                }  23.            }  24.        }  25.    }  26.  27.    // now normalise to 255 and put in format for a pixel array  28

7、.    int max = 0;  29.  30.    // Find max acc value  31.    for (int x = 0; x < width; x++) {  32.        for (int y = 0; y < height; y++) {  33.  34.            if (acc[x + (y * width)] > max) {  35.                max = acc[x + (y * width)];  36.      

8、      }  37.        }  38.    }  39.  40.    // 根据最大值,实现极坐标空间的灰度值归一化处理  41.    int value;  42.    for (int x = 0; x < width; x++) {  43.        for (int y = 0; y < height; y++) {  1.            value = (int) (((doub

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。