• 大小: 1.06MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-23
  • 语言: Java
  • 标签: 霍夫变换  Hough  

资源简介

基于霍夫变换的形状检测算法研究与实现,内包含源代码和论文,用java算法实现。原创!

资源截图

代码片段和文件信息

package com.liyulin.hough.circle;

import java.awt.image.BufferedImage;

public class AutoHoughCircle {
private BufferedImage oldImage = null; // 原始图片缓存对象
private BufferedImage newImage = null; // Hough处理后的图片缓存对象
private int imageWidth;
private int imageHeight;

private int[] pixels;       // 图片所有像素值
private int[] acc;          // 各个像素点累加值
private int threshold = 360;// 阈值

public AutoHoughCircle(BufferedImage image) {
oldImage    = image;
imageWidth  = oldImage.getWidth();
imageHeight = oldImage.getHeight();
pixels = new int[imageWidth * imageHeight];

// 获取边缘像素值
for (int y = 0; y < imageHeight; y++) {
for (int x = 0; x < imageWidth; x++) {
pixels[x + y * imageWidth] = oldImage.getRGB(x y);// 获取矩阵指定位置(x y)的像素值
}
}

pixels = houghDetect();

newImage = new BufferedImage(imageWidth imageHeight BufferedImage.TYPE_INT_RGB);
for (int i = 0; i < imageHeight; i++) {
for (int j = 0; j < imageWidth; j++) {
newImage.setRGB(j i pixels[j + i * imageWidth]);
}
}
}

/**
 * 霍夫变换处理 - 检测半径大小符合的圆的个数 
 * 1. 将图像像素从2D空间坐标转换到极坐标空间 
 * 2. 在极坐标空间中归一化各个点强度,使之在0〜255之间 
 * 3. 根据极坐标的R值与输入参数(圆的半径)相等,寻找2D空间的像素点 
 * 4. 对找出的空间像素点赋予结果颜色(红色) 
 * 5. 返回结果2D空间像素集合
 * 
 * @return int []
 */
public int[] houghDetect() {
// 对于圆的极坐标变换来说,我们需要360度的空间梯度叠加值
acc = new int[imageWidth * imageHeight];// 默认值为0
int x0 y0;                             // 圆心坐标
double t;

int r_start = 50;
for (int r = r_start r_threshold = Math.min(imageHeight imageWidth) / 2; r < r_threshold; r = r + 1) {
for (int x = 0; x < imageWidth; x++) {
for (int y = 0; y < imageHeight; y++) {
acc[x + (y * imageWidth)] = 0;
}
}

for (int x = 0; x < imageWidth; x++) {
for (int y = 0; y < imageHeight; y++) {
if ((pixels[y * imageWidth + x] & 0xff) == 255) {
// 进行Hough变换
for (int theta = 0; theta < 360; theta++) {
t  = (theta * 3.14159265) / 180; // 角度值0 ~ 2*PI
x0 = (int) Math.round(x - r * Math.cos(t));
y0 = (int) Math.round(y - r * Math.sin(t));
if (x0 < imageWidth && x0 > 0 && y0 < imageHeight && y0 > 0) {
acc[x0 + (y0 * imageWidth)] += 1;
}
}
}
}
}

for (int x = 0; x < imageWidth; x++) {
for (int y = 0; y < imageHeight; y++) {
if (acc[x + (y * imageWidth)] >= threshold) {
// 绘制发现的圆
drawCircle(-16776961 x y r);
System.out.println(“r=“+r);
}
}
}
}

return pixels;
}

private void setPixel(int value int xPos int yPos) {
pixels[(yPos * imageWidth) + xPos] = value;
}

// draw circle at x y
private void drawCircle(int pix int xCenter int yCenter int r) {
pix = -16776961; // 颜色值,蓝色

int x y r2;
r2 = r * r;

// 绘制圆的上下左右四个点
if (xCenter - r > 0 && yCenter - r > 0
&& xCenter + r < imageWidth
&& yCenter + r < imageHeight) {
setPixel(pix xCenter yCenter + r);
set

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        209  2014-03-29 17:10  源代码及论文\二值图像.txt

     文件       3083  2014-05-14 18:24  源代码及论文\分析.txt

     文件    1132392  2014-11-04 16:56  源代码及论文\基于霍夫变换的形状检测算法研究与实现.pdf

     文件       1072  2014-11-04 16:56  源代码及论文\毕业论文.txt

     文件        301  2014-02-07 12:07  源代码及论文\源代码\.classpath

     文件        388  2014-05-21 03:56  源代码及论文\源代码\.project

     文件        598  2014-02-07 12:07  源代码及论文\源代码\.settings\org.eclipse.jdt.core.prefs

     文件       3424  2014-05-23 15:02  源代码及论文\源代码\bin\com\liyulin\hough\circle\AutoHoughCircle.class

     文件       2918  2014-05-23 05:54  源代码及论文\源代码\bin\com\liyulin\hough\circle\HoughCircle.class

     文件       3574  2014-05-23 14:58  源代码及论文\源代码\bin\com\liyulin\hough\circle\TAutoHoughCircle.class

     文件       4548  2014-05-23 01:30  源代码及论文\源代码\bin\com\liyulin\hough\line\HoughLine.class

     文件       5021  2014-05-25 14:26  源代码及论文\源代码\bin\com\liyulin\hough\line\THoughLine.class

     文件       1166  2014-05-23 01:12  源代码及论文\源代码\bin\com\liyulin\hough\model\LineInfo.class

     文件        386  2014-05-21 03:56  源代码及论文\源代码\bin\com\liyulin\hough\model\Point.class

     文件       4207  2014-05-23 14:57  源代码及论文\源代码\bin\com\liyulin\hough\ui\HoughUI$1.class

     文件        735  2014-05-23 14:57  源代码及论文\源代码\bin\com\liyulin\hough\ui\HoughUI$2.class

     文件       1579  2014-05-23 14:57  源代码及论文\源代码\bin\com\liyulin\hough\ui\HoughUI$3$1.class

     文件       1245  2014-05-23 14:57  源代码及论文\源代码\bin\com\liyulin\hough\ui\HoughUI$3.class

     文件       1607  2014-05-23 14:57  源代码及论文\源代码\bin\com\liyulin\hough\ui\HoughUI$4$1.class

     文件       1245  2014-05-23 14:57  源代码及论文\源代码\bin\com\liyulin\hough\ui\HoughUI$4.class

     文件       1677  2014-05-23 14:57  源代码及论文\源代码\bin\com\liyulin\hough\ui\HoughUI$5$1.class

     文件       1994  2014-05-23 14:57  源代码及论文\源代码\bin\com\liyulin\hough\ui\HoughUI$5.class

     文件       1610  2014-05-23 14:57  源代码及论文\源代码\bin\com\liyulin\hough\ui\HoughUI$6$1.class

     文件       1245  2014-05-23 14:57  源代码及论文\源代码\bin\com\liyulin\hough\ui\HoughUI$6.class

     文件       1582  2014-05-23 14:57  源代码及论文\源代码\bin\com\liyulin\hough\ui\HoughUI$7$1.class

     文件       1245  2014-05-23 14:57  源代码及论文\源代码\bin\com\liyulin\hough\ui\HoughUI$7.class

     文件       4944  2014-05-23 14:57  源代码及论文\源代码\bin\com\liyulin\hough\ui\HoughUI.class

     文件       1386  2014-05-21 03:56  源代码及论文\源代码\bin\com\liyulin\hough\util\ImagePanel.class

     文件       1999  2014-05-25 14:49  源代码及论文\源代码\bin\com\liyulin\hough\util\PixelUitl.class

     文件       3931  2014-05-25 13:17  源代码及论文\源代码\bin\hough\circle\CircleHough.class

............此处省略45个文件信息

评论

共有 条评论