Hough变换提取圆的代码~~~ 求高手看看错误

yujun_889 2009-04-24 10:13:18
好象是内存分配的问题,求解决方法,或者更好算法,谢谢


#include "StdAfx.h"
#include "BaseList.h"
#include <math.h>
#define Houghthresh 33

/*------------------------------------hough_circle---hough变换提取圆-------------
image_in:输入图像数据指针
image_out:输出图像数据指针
xsize:图像宽度
ysize:图像高度
------------------------------------------------------------------------*/

void hough_circle(BYTE *image_in, BYTE *image_out, int xsize, int ysize)
{
int a,b,r;
int rmax=xsize+ysize+1;
int ***Hough;
Hough=new int**[xsize];
for(a=0;a <xsize;a++)
Hough[a]=new int*[ysize];
for(a=0;a <xsize;a++)
for(b=0;b <ysize;b++)
Hough[a][b]=(int*)new int[rmax];
for(a=0;a <xsize;a++)
for(b=0;b <ysize;b++)
for(r=0;r <rmax;r++)
Hough[a][b][r]=0;
int i,j;
for(j=0;j <ysize;j++) //将大于0的点标记为255,即为白点
for(i=0;i <xsize;i++)
{
int fn;
fn=(int)(*(image_in+j*xsize+i));
if(fn>0)
{
fn=255;
*(image_in+j*xsize+i)=(BYTE)fn;
}
}
for(j=0;j <ysize;j++) //将输出图象点初值全置为0,即为全黑图象
for(i=0;i <xsize;i++)
*(image_out+j*xsize+i)=0;
for(j=0;j <ysize;j++) //对原图中的白点做Hough变换
for(i=0;i <xsize;i++)
{
if((int)(*(image_in+j*xsize+i))==255)
{
for(a=0;a <xsize;a++)
for(b=0;b <ysize;b++)
{
r=(int)(sqrt((i-a)*(i-a)+(j-b)*(j-b)));
Hough[a][b][r]++;
}
}
}
for(a=0;a <xsize;a++)
for(b=0;b <ysize;b++)
for(r=0;r <rmax;r++) //寻找数组Hough[][][]各个峰值,采用5*5*5领域算法
{
if(Hough[a][b][r]>Houghthresh)
{
int tag=1;
int da,db,dr;
for(da=a-2;da <=a+2;da++)
{
for(db=a-2;db <=b+2;db++)
{
for(dr=r-2;dr <=r+2;dr++)
{
if(dr <rmax&&Hough[da][db][dr]>Hough[a][b][r])
{
tag=0;break;
}
if(tag==0)break;
if(tag==1) //对满足条件的点进行赋值输出
{
for(j=0;j <ysize;j++)
for(i=0;i <xsize;i++)
{
int hn,temp;
hn=(int)(*(image_in+j*xsize+i));
if(hn==255)
{
temp=(int)(sqrt((i-a)*(i-a)+(j-b)*(j-b)));
if(temp==r)
{
*(image_out+j*xsize+i)=(BYTE)hn;
}
}
}
}
}
if(tag==0)break;
}

}
}
}
}
...全文
62 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaodefangde 2009-04-30
  • 打赏
  • 举报
回复
这个你可以参考OPENCV中的源代码:cvHoughcircles函数的源代码
我把它贴在自己的博客中,你可以去看看下
http://hi.baidu.com/zhaodefangde/blog/item/deed09fcf601b4f5fd037fb3.html
yujun_889 2009-04-24
  • 打赏
  • 举报
回复
邮箱
lyce_001@126.com

4,506

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧