亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? xform.c

?? 利用VC 編寫的SIFT 特征匹配程序,可以在影像 旋轉(zhuǎn),縮放時仍能成功匹配
?? C
?? 第 1 頁 / 共 2 頁
字號:
}/************************ Local funciton definitions *************************//*Returns a feature's match according to a specified match type@param feat feature@param mtype match type, one of FEATURE_FWD_MATCH, FEATURE_BCK_MATCH, orFEATURE_MDL_MATCH@return Returns feat's match corresponding to mtype or NULL for bad mtype*/static __inline struct feature* get_match( struct feature* feat, int mtype ){	if( mtype == FEATURE_MDL_MATCH )		return feat->mdl_match;	if( mtype == FEATURE_BCK_MATCH )		return feat->bck_match;	if( mtype == FEATURE_FWD_MATCH )		return feat->fwd_match;	return NULL;}/*Finds all features with a match of a specified type and stores pointersto them in an array.  Additionally initializes each matched feature'sfeature_data field with a ransac_data structure.@param features array of features@param n number of features in features@param mtype match type, one of FEATURE_{FWD,BCK,MDL}_MATCH@param matched output as an array of pointers to features with a match ofthe specified type@return Returns the number of features output in matched.*/int get_matched_features( struct feature* features, int n, int mtype,struct feature*** matched ){	struct feature** _matched;	struct ransac_data* rdata;	int i, m = 0;	_matched = calloc( n, sizeof( struct feature* ) );	for( i = 0; i < n; i++ )		if( get_match( features + i, mtype ) )		{			rdata = malloc( sizeof( struct ransac_data ) );			memset( rdata, 0, sizeof( struct ransac_data ) );			rdata->orig_feat_data = features[i].feature_data;			_matched[m] = features + i;			_matched[m]->feature_data = rdata;			m++;		}		*matched = _matched;		return m;}/*Calculates the minimum number of inliers as a function of the number ofputative correspondences.  Based on equation (7) inChum, O. and Matas, J.  Matching with PROSAC -- Progressive Sample Consensus.In <EM>Conference on Computer Vision and Pattern Recognition (CVPR)</EM>,(2005), pp. 220--226.@param n number of putative correspondences@param m min number of correspondences to compute the model in question@param p_badsupp prob. that a bad model is supported by a correspondence@param p_badxform desired prob. that the final transformation returned is bad@return Returns the minimum number of inliers required to guarantee, based	on p_badsupp, that the probability that the final transformation returned	by RANSAC is less than p_badxform*/int calc_min_inliers( int n, int m, double p_badsupp, double p_badxform ){	double pi, sum;	int i, j;	for( j = m+1; j <= n; j++ )	{		sum = 0;		for( i = j; i <= n; i++ )		{			pi = pow( p_badsupp, i - m ) * pow( 1.0 - p_badsupp, n - i + m ) *				gsl_sf_choose( n - m, i - m );			sum += pi;		}		if( sum < p_badxform )			break;	}	return j;}/*Draws a RANSAC sample from a set of features.@param features array of pointers to features from which to sample@param n number of features in features@param m size of the sample@param rng random number generator used to sample@return Returns an array of pointers to the sampled features; the sampled	field of each sampled feature's ransac_data is set to 1*/struct feature** draw_ransac_sample( struct feature** features, int n,									int m, gsl_rng* rng ){	struct feature** sample, * feat;	struct ransac_data* rdata;	int i, x;	for( i = 0; i < n; i++ )	{		rdata = feat_ransac_data( features[i] );		rdata->sampled = 0;	}	sample = calloc( m, sizeof( struct feature* ) );	for( i = 0; i < m; i++ )	{		do		{			x = gsl_rng_uniform_int( rng, n );			feat = features[x];			rdata = feat_ransac_data( feat );		}		while( rdata->sampled );		sample[i] = feat;		rdata->sampled = 1;	}	return sample;}/*Extrancs raw point correspondence locations from a set of features@param features array of features from which to extract points and match	points; each of these is assumed to have a match of type mtype@param n number of features@param mtype match type; if FEATURE_MDL_MATCH correspondences are assumed	to be between each feature's img_pt field and it's match's mdl_pt field,	otherwise, correspondences are assumed to be between img_pt and img_pt@param pts output as an array of raw point locations from features@param mpts output as an array of raw point locations from features' matches*/void extract_corresp_pts( struct feature** features, int n, int mtype,						 CvPoint2D64f** pts, CvPoint2D64f** mpts ){	struct feature* match;	CvPoint2D64f* _pts, * _mpts;	int i;	_pts = calloc( n, sizeof( CvPoint2D64f ) );	_mpts = calloc( n, sizeof( CvPoint2D64f ) );	if( mtype == FEATURE_MDL_MATCH )		for( i = 0; i < n; i++ )		{			match = get_match( features[i], mtype );			if( ! match )				fatal_error( "feature does not have match of type %d, %s line %d",							mtype, __FILE__, __LINE__ );			_pts[i] = features[i]->img_pt;			_mpts[i] = match->mdl_pt;		}	else		for( i = 0; i < n; i++ )		{			match = get_match( features[i], mtype );			if( ! match )				fatal_error( "feature does not have match of type %d, %s line %d",							mtype, __FILE__, __LINE__ );			_pts[i] = features[i]->img_pt;			_mpts[i] = match->img_pt;		}		*pts = _pts;		*mpts = _mpts;}/*For a given model and error function, finds a consensus from a set offeature correspondences.@param features set of pointers to features; every feature is assumed to	have a match of type mtype@param n number of features in features@param mtype determines the match field of each feature against which to	measure error; if this is FEATURE_MDL_MATCH, correspondences are assumed	to be between the feature's img_pt field and the match's mdl_pt field;	otherwise matches are assumed to be between img_pt and img_pt@param M model for which a consensus set is being found@param err_fn error function used to measure distance from M@param err_tol correspondences within this distance of M are added to the	consensus set@param consensus output as an array of pointers to features in the	consensus set@return Returns the number of points in the consensus set*/int find_consensus( struct feature** features, int n, int mtype,				   CvMat* M, ransac_err_fn err_fn, double err_tol,				   struct feature*** consensus ){	struct feature** _consensus;	struct feature* match;	CvPoint2D64f pt, mpt;	double err;	int i, in = 0;	_consensus = calloc( n, sizeof( struct feature* ) );	if( mtype == FEATURE_MDL_MATCH )		for( i = 0; i < n; i++ )		{			match = get_match( features[i], mtype );			if( ! match )				fatal_error( "feature does not have match of type %d, %s line %d",							mtype, __FILE__, __LINE__ );			pt = features[i]->img_pt;			mpt = match->mdl_pt;			err = err_fn( pt, mpt, M );			if( err <= err_tol )				_consensus[in++] = features[i];		}	else		for( i = 0; i < n; i++ )		{			match = get_match( features[i], mtype );			if( ! match )				fatal_error( "feature does not have match of type %d, %s line %d",							mtype, __FILE__, __LINE__ );			pt = features[i]->img_pt;			mpt = match->img_pt;			err = err_fn( pt, mpt, M );			if( err <= err_tol )				_consensus[in++] = features[i];		}	*consensus = _consensus;	return in;}/*Releases memory and reduces code size above@param pts1 an array of points@param pts2 an array of points@param features an array of pointers to features; can be NULL*/static __inline void release_mem( CvPoint2D64f* pts1, CvPoint2D64f* pts2,struct feature** features ){	free( pts1 );	free( pts2 );	if( features )		free( features );}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清一级片在线观看| 毛片不卡一区二区| 综合婷婷亚洲小说| 欧美极品aⅴ影院| 国产精品传媒入口麻豆| 国产精品久久毛片av大全日韩| 久久精子c满五个校花| 国产清纯美女被跳蛋高潮一区二区久久w| 精品国产一区二区三区av性色| 日韩免费观看高清完整版| 日韩欧美一区二区三区在线| 精品久久久久香蕉网| 久久亚洲捆绑美女| 国产无人区一区二区三区| 国产日韩欧美精品在线| 国产精品短视频| 亚洲免费观看高清完整| 亚洲成人777| 蜜乳av一区二区三区| 国内成人免费视频| 国产精品一区二区你懂的| 成人高清视频免费观看| 色偷偷88欧美精品久久久| 91久久精品一区二区三| 欧美日韩一区高清| 日韩欧美专区在线| 久久久99精品久久| 亚洲欧美日韩国产综合| 午夜精品久久久久久久久久久 | 中文字幕一区日韩精品欧美| 亚洲丝袜美腿综合| 日韩成人av影视| 国产成人鲁色资源国产91色综| 91亚洲精华国产精华精华液| 欧美美女直播网站| 久久综合久久鬼色中文字| 中文字幕一区二区三区乱码在线 | 亚洲成人在线网站| 毛片基地黄久久久久久天堂| 不卡的av在线| 91精品国产色综合久久不卡蜜臀| 2023国产精华国产精品| 亚洲欧美色图小说| 免费av网站大全久久| 成a人片亚洲日本久久| 欧美久久久久久久久久| 久久毛片高清国产| 亚洲一级在线观看| 久久精品国产久精国产爱| 99精品黄色片免费大全| 欧美福利视频一区| 中文字幕一区二区不卡| 美女视频网站黄色亚洲| 99国产欧美另类久久久精品| 在线播放/欧美激情| 国产精品国产三级国产aⅴ中文| 丝袜脚交一区二区| av一区二区三区在线| 日韩免费福利电影在线观看| 亚洲乱码日产精品bd| 国模大尺度一区二区三区| 欧美综合天天夜夜久久| 国产午夜精品久久| 美腿丝袜在线亚洲一区 | 久久久久99精品国产片| 亚洲综合图片区| 成人免费视频免费观看| 欧美一级久久久久久久大片| 亚洲三级视频在线观看| 激情六月婷婷久久| 欧美日韩成人综合| 中文字幕在线观看一区二区| 国模冰冰炮一区二区| 欧美顶级少妇做爰| 亚洲一区二区黄色| 99久久综合精品| 久久女同精品一区二区| 日韩av午夜在线观看| 欧美在线视频全部完| 国产精品理论在线观看| 国产中文字幕一区| 日韩欧美一区二区视频| 天堂久久一区二区三区| 91年精品国产| 国产精品理论片在线观看| 国产一区二区成人久久免费影院| 欧美一区二区视频在线观看| 亚洲国产成人porn| 色视频欧美一区二区三区| 国产精品嫩草99a| 国产盗摄视频一区二区三区| 精品91自产拍在线观看一区| 日本最新不卡在线| 欧美精品vⅰdeose4hd| 亚洲在线成人精品| 色噜噜狠狠色综合中国| 综合久久给合久久狠狠狠97色 | 欧美日韩精品一区二区三区四区| 亚洲激情在线激情| 91亚洲精品久久久蜜桃| 一区免费观看视频| 不卡的电影网站| 亚洲色图一区二区| 色综合一区二区| 亚洲欧美日韩电影| 一本一道久久a久久精品 | 国产一区在线精品| 精品日韩在线观看| 国产一区二区h| 国产亚洲一区二区在线观看| 激情欧美一区二区| 国产欧美日本一区视频| 国产传媒欧美日韩成人| 亚洲国产精品二十页| 成人app在线观看| 亚洲男人的天堂一区二区| 色国产综合视频| 亚洲电影第三页| 制服丝袜av成人在线看| 蜜臀国产一区二区三区在线播放| 欧美电视剧在线看免费| 国产在线播放一区| 中国av一区二区三区| 91在线无精精品入口| 亚洲午夜精品在线| 欧美一区二区三区视频| 国精产品一区一区三区mba视频 | 国产精品综合一区二区| 欧美国产在线观看| 99国内精品久久| 日本人妖一区二区| 久久精品亚洲精品国产欧美 | 欧美大片在线观看| 国产高清不卡二三区| 亚洲免费观看在线视频| 欧美一区在线视频| 成人在线视频一区二区| 亚洲精品精品亚洲| 欧美一二三在线| 不卡视频免费播放| 亚洲成a人在线观看| 久久综合999| 色婷婷综合久久| 韩国v欧美v亚洲v日本v| 亚洲欧美一区二区在线观看| 欧美日本在线观看| 国产91在线|亚洲| 午夜精品久久久久| 国产女人18水真多18精品一级做| 欧美主播一区二区三区| 精品系列免费在线观看| 亚洲精品中文在线影院| 日韩欧美激情在线| 一本色道久久综合精品竹菊| 久久成人免费网| 亚洲欧美激情小说另类| 精品久久人人做人人爱| 欧美视频精品在线观看| 国产99精品视频| 男人的天堂久久精品| 中文字幕在线观看一区二区| 日韩欧美一区二区视频| 色婷婷激情久久| 国产福利一区二区| 免费观看成人鲁鲁鲁鲁鲁视频| 综合激情成人伊人| 337p粉嫩大胆噜噜噜噜噜91av | 久久久久久99久久久精品网站| 精品视频999| 99久久精品一区二区| 国产综合色视频| 午夜精品一区二区三区三上悠亚| 国产精品高潮呻吟久久| 久久一夜天堂av一区二区三区| 欧美丝袜丝交足nylons图片| 成人免费av在线| 美女看a上一区| 亚洲成在人线免费| 亚洲欧美另类综合偷拍| 久久人人爽人人爽| 日韩免费高清视频| 欧美精品久久久久久久久老牛影院| 91日韩精品一区| 99视频在线观看一区三区| 国产东北露脸精品视频| 久久机这里只有精品| 婷婷综合在线观看| 亚洲一区二区综合| 亚洲精品自拍动漫在线| 亚洲欧洲日韩av| 亚洲国产经典视频| 久久久不卡网国产精品二区| 日韩一二三四区| 69堂成人精品免费视频| 欧美色图天堂网| 欧亚洲嫩模精品一区三区| 91精品1区2区| 在线观看av一区二区| 91激情五月电影| 91国偷自产一区二区开放时间 |