資源簡介
能夠實現,希望誰能在此基礎上添加一個有效外力。是的算法的速度更快。

代碼片段和文件信息
/*==================================================================
=??代碼內容:GVF?Snake??????????????????????????????????????
=??修改日期:2009-3-12?????????????????????????????????????????????????????????????????????????????????????????????????????????
=??作者:crond123?
=??博客:http://blog.csdn.net/crond123/
=???E_Mail:crond123@163.com??????????????????????????????????????????????????????
====================================================================*/
#include?“stdafx.h“
#include?“SnakeDeform.h“
#include?“SnakeInterp.h“
#include?“gvfc.h“
std::vector???InitContour;?
//用于顯示的圖像
IplImage*?temp;??//=?cvCreateImage(cvGetSize(img)?IPL_DEPTH_8U?1);
/*
* 將迭代的點顯示在窗口中
*/
void?showContent(IplImage?*?img)
{
if(temp==NULL)
temp=?cvCreateImage(cvGetSize(img)?IPL_DEPTH_8U?1);
cvCopyImage(imgtemp);
//在原始圖像上劃線
for?(int?i=0;i {
cvCircle(temp?InitContour[i]?2?cvScalarAll(155));
int?j?=?(i+1)%InitContour.size();
cvLine(?temp??InitContour[i]InitContour[j]??cvScalarAll(100)?1);???????????
}
// cvSaveImage(“sef.jpg“temp);
cvShowImage(?“srcImage“?temp?);
}
void?on_mouse(?int?event?int?x?int?y?int?flags?void*?ptr)
{
//鼠標點擊時添加輪廓點
if(?event?==?CV_EVENT_LBUTTONDOWN?)
{
InitContour.push_back(cvPoint(xy));
showContent((IplImage?*)ptr);
}
}
int?main(int?argc?char*?argv[])
{
IplImage?*?srcimage?=?NULL;
if?(?argc?==?2?&&
(srcimage?=?cvLoadImage((char?*)argv[1]?CV_LOAD_IMAGE_GRAYSCALE))!=0?);
else
{
srcimage?=?cvLoadImage(“test.jpg“?CV_LOAD_IMAGE_GRAYSCALE);????//載入工作目錄下文件名為“tiger.jpg”的圖片。
}
if(srcimage==NULL)
{
std::cout<<“error?file?name“< return?-1;
}
CvSize?size?=?cvGetSize(srcimage);
//為?uvedge?申請空間?
CvMat?*?u?=???cvCreateMat(size.heightsize.widthCV_32FC1);
CvMat?*?v?=???cvCreateMat(size.heightsize.widthCV_32FC1);
IplImage?*?edge?=???cvCreateImage(sizeIPL_DEPTH_8U1?);
cvCopyImage(srcimageedge);
//圖像平滑
? cvSmooth(?edge?edge?CV_MEDIAN);
? cvSmooth(?edge?edge?CV_GAUSSIAN);
//?求取圖像梯度
cvSobel(edgeedge115);
cvNamedWindow(“srcImage“);
cvShowImage(“srcImage“?srcimage);
cvSetMouseCallback(“srcImage“?on_mousesrcimage);
/*
* 通過點擊采樣獲得初始輪廓
*/
char?c;
while(c?=?cvWaitKey(0))
if(?c?==?‘s‘||c?==?‘S‘?)
break;
//定義snake參數
float?alpha=0.5;
float?beta=0.3;
float?gamma=0.3;
float?kappa?=1.0;
int?itetime?=20;
/*
* 計算GVF場
*/
GVFC_W(edgeuv0.160);
for(int?ite=0;ite {
//清除可疑點
std::vector?old(InitContour)?;?
int?len?=?InitContour.size();
InitContour.clear();
for?(int?i=0;i {
if(old[i].x<0||old[i].x>=size.width)
continue;
if(old[i].y<0||old[i].y>=size.height)
continue;
InitContour.push_back(old[i]);
}
//對所有點進行插值
snakeInterp(InitContourInitContour);
//點太少表示失敗
if(InitContour.size()<5)
break;
CvPoint*??pts?=?new??CvP
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6188??2009-03-12?19:18??GVF_Snake_plus\GVFC.CPP
?????文件???????1085??2009-03-12?18:47??GVF_Snake_plus\GVFC.H
?????文件???????8986??2009-03-12?16:26??GVF_Snake_plus\GVFC_XU.CPP
?????文件???????3541??2009-03-12?19:21??GVF_Snake_plus\GVF_Snake_plus.cpp
?????文件???????5130??2009-03-12?18:21??GVF_Snake_plus\GVF_Snake_plus.dsp
?????文件????????551??2009-03-12?16:06??GVF_Snake_plus\GVF_Snake_plus.dsw
?????文件??????98304??2009-03-12?19:21??GVF_Snake_plus\GVF_Snake_plus.exe
?????文件??????50176??2009-03-12?19:26??GVF_Snake_plus\GVF_Snake_plus.ncb
?????文件??????51712??2009-03-12?19:26??GVF_Snake_plus\GVF_Snake_plus.opt
?????文件???????3791??2009-03-12?19:21??GVF_Snake_plus\GVF_Snake_plus.plg
?????文件???????1256??2009-03-12?16:06??GVF_Snake_plus\ReadMe.txt
?????文件???????4900??2009-03-12?19:17??GVF_Snake_plus\SnakeDeform.cpp
?????文件????????970??2009-03-12?18:59??GVF_Snake_plus\SnakeDeform.h
?????文件???????1573??2009-03-12?18:30??GVF_Snake_plus\SnakeInterp.cpp
?????文件????????770??2009-03-12?18:59??GVF_Snake_plus\SnakeInterp.h
?????文件????????301??2009-03-12?16:06??GVF_Snake_plus\StdAfx.cpp
?????文件???????1029??2009-03-12?16:26??GVF_Snake_plus\StdAfx.h
?????文件??????18604??2009-03-06?19:50??GVF_Snake_plus\test.jp1g
?????文件???????5548??2009-03-12?18:24??GVF_Snake_plus\test.jpg
?????文件??????10726??2009-03-12?18:28??GVF_Snake_plus\分析結果.JPG
?????目錄??????????0??2009-03-12?19:26??GVF_Snake_plus
-----------?---------??----------?-----??----
???????????????275141????????????????????21
- 上一篇:最速下降法原理及例題
- 下一篇:學習信息安全的必看書籍 30本
評論
共有 條評論