基于轮廓的细化算法

随便什么算法,只要能用就好了!最好是c++源程序... 随便什么算法,只要能用就好了!最好是c++源程序 展开
 我来答
liujq007
2009-01-04 · TA获得超过943个赞
知道大有可为答主
回答量:1035
采纳率:0%
帮助的人:1098万
展开全部
。。轮廓?计算机图形学~~

我现在搞的项目就涉及轮廓查找

我用的是OpenCV,是一个开源的算法,基于VC,里面有大量的算法,当然包括了
轮廓的查找算法~~有好几个

可以搜索OpenCV关键字~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
几何智造
2025-02-27 广告
几何智造191-2953-3665(深圳市几何智造技术有限公司)是一家高新科技创新型企业,专注于国际物流行业货物高精度测量、自动化分拣、高性能输送线、智能仓储服务以及控制系统研发,专为国际货代行业提供全自动化高效率的物流解决方案。旗下主要产... 点击进入详情页
本回答由几何智造提供
L_o_o_n_i_e
2009-01-22 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5420万
展开全部
抄来一段:

SUSAN算子是一种基于图像局部灰度特征的算法,利用一个圆形的模板对图像进行扫描,比较模板内部的点与模板中心点的灰度值,如果灰度差值小于一定的阈值,就认为该点与中心点的灰度相同。统计模板内部与中心点灰度相同的点的个数,与一个阈值进行比较,判断该点是否属于某个区域的边缘点,从而实现对图像的分割。
//———————————————————————–
//c/c++描述
/**************************************************
SUSAN边缘检测
parameter: HDIB
return: HDIB
**************************************************/
HDIB SUSANEdgeDetectDIB(HDIB hDib){
SetCursor(LoadCursor(NULL, IDC_WAIT));

DWORD dwDataLength = GlobalSize(hDib);
HDIB hNewDib = GlobalAlloc(GHND,dwDataLength);
if(!hNewDib){
SetCursor(LoadCursor(NULL, IDC_ARROW));
return NULL;
}
LPBYTE lpDIB = (LPBYTE)GlobalLock(hNewDib);
if(lpDIB == NULL){
SetCursor(LoadCursor(NULL, IDC_ARROW));
return NULL;
}

LPBYTE lpDIBSrc = (LPBYTE)GlobalLock(hDib);

memcpy(lpDIB, lpDIBSrc,
sizeof(BITMAPINFOHEADER)+PaletteSize(lpDIBSrc));

DWORD lSrcWidth = DIBWidth(lpDIBSrc);
DWORD lSrcHeight = DIBHeight(lpDIBSrc);
WORD wBitCount = ((LPBITMAPINFOHEADER)lpDIBSrc)->biBitCount;
DWORD lSrcRowBytes = WIDTHBYTES(lSrcWidth*((DWORD)wBitCount));
LPBYTE lpOldBits = FindDIBBits(lpDIBSrc);
LPBYTE lpData = FindDIBBits(lpDIB);

//图像变换开始//////////////////////////////////////////
DWORD i, j, h, k, offset;
int NearPoint[37];
int OffSetX[37] = { -1, 0, 1,
-2,-1, 0, 1, 2,
-3,-2,-1, 0, 1, 2, 3,
-3,-2,-1, 0, 1, 2, 3,
-3,-2,-1, 0, 1, 2, 3,
-2,-1, 0, 1, 2,
-1, 0, 1 };
int OffSetY[37] = { -3,-3,-3,
-2,-2,-2,-2,-2,
-1,-1,-1,-1,-1,-1,-1,
0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2,
3, 3, 3 };

if(wBitCount == 8){
int thre, same, max, min;

//统计象素亮度最大值和最小值
max = min = 0;
for(i=0;i for(j=0;j offset = lSrcRowBytes*i+j;
if(max < (int)(*(lpOldBits+offset)))
max = (int)(*(lpOldBits+offset));
if(min > (int)(*(lpOldBits+offset)))
min = (int)(*(lpOldBits+offset));
}

//相似度阈值为最大值和最小值差的1/10
thre = (max-min)/10;

for(i=3;i for(j=3;j //统计圆形邻域内相似的点的个数
same = 0;
for(h=0;h<37;h++)
NearPoint[h] = (int)(*(lpOldBits+lSrcRowBytes*(i+OffSetY[h])+(j+OffSetX[h])));
for(h=0;h<37;h++)
if(((int)abs(NearPoint[h]-NearPoint[18])) <= thre) same ++;

if(same > 27)
*(lpData+lSrcRowBytes*i+j) = 255;
else *(lpData+lSrcRowBytes*i+j) = 0;
}
}

if(wBitCount == 24){
int theSame[3], theMax[3], theMin[3], theThre[3];

memset(theMax, 0, sizeof(int)*3);
memset(theMin, 0, sizeof(int)*3);
for(i=0;i for(j=0;j offset = lSrcRowBytes*i+j*3;
for(k=0;k<3;k++){
if(theMax[k] < (int)(*(lpOldBits+offset+k)))
theMax[k] = (int)(*(lpOldBits+offset+k));
if(theMin[k] > (int)(*(lpOldBits+offset+k)))
theMin[k] = (int)(*(lpOldBits+offset+k));
}
}

for(k=0;k<3;k++)
theThre[k] = (theMax[k]-theMin[k])/10;

for(i=3;i for(j=3;j memset(theSame, 0, sizeof(int)*3);
for(k=0;k<3;k++){
for(h=0;h<37;h++)
NearPoint[h] = (int)(*(lpOldBits+lSrcRowBytes*(i+OffSetY[h])+(j+OffSetX[h])*3+k));
for(h=0;h<37;h++)
if(((int)abs(NearPoint[h]-NearPoint[18])) <= theThre[k]) theSame[k] ++;
}

if((theSame[0] > 27) && (theSame[1] > 27) && (theSame[2] > 27))
memset(lpData+lSrcRowBytes*i+j*3, 255, 3);
else
memset(lpData+lSrcRowBytes*i+j*3, 0, 3);
}
}

GlobalUnlock(hDib);
GlobalUnlock(hNewDib);
SetCursor(LoadCursor(NULL, IDC_ARROW));

return hNewDib;
}
2.canny算子
Canny边缘检测基本原理
(1)图象边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确定边缘的位置。
(2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子。这就是Canny边缘检测算子。
(3)类似与Marr(LoG)边缘检测方法,也属于先平滑后求导数的方法。

算法比较内容比较多,有需要的朋友可以到这儿看(http://www.pcdog.com/edu/develop-tools/2005/08/f067918.html).

3.sobel算子
。。。
见参考

参考资料: http://www.roading.net/blog/?cat=11

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
希声和寡
2009-01-05 · TA获得超过2.6万个赞
知道大有可为答主
回答量:6437
采纳率:0%
帮助的人:3644万
展开全部
给你一个下载地址,我以前也看过,
刚才试了,下载正常,
不知道和你说的是不是一个东西:

http://www.newasp.net/code/vc/2954.html

参考资料: http://www.newasp.net/code/vc/2954.html

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-01-06
展开全部
没建议
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-01-25
展开全部
问题不够详细,外加忒专业了点~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式