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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? affine.c

?? feret人臉圖象數據庫處理代碼
?? C
字號:
/*----------------------------------------------------------------------PROGRAM: affine.cDATE:    3/9/94AUTHOR:  Baback Moghaddam, baback@media.mit.edu------------------------------------------------------------------------  Routines for computing 2D affine transformations and image affine  warping  NOTE: uses routines svdcmp.c & gaussj.c from Numerical Recipes---------------------------------------------------------------------- */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <float.h>#include "util.h"#include "io.h"#include "matrix.h"#include "affine.h"/*----------------------------------------------------------------------*/void pivoted_affine(float **P, float **Q, int N, float **A)     /* given a set of correspondences as 2-by-N matrices	P[1..2][1..N] and Q[1..2][1..N], this routine computes	the (least-squares) affine transformation given by 	the (homogeneous) affine matrix A[1..3][1..3]	This computation is pivoted by the 1st correspondance	ie., it is always lined up correctly	NOTE:  N must be >=3     */{  register int i,j;  float **Prt, **Pr, **Qr;  float **V, **Vt, **Si, *s;  float **temp1, **temp2, sum;  Pr = matrix(1, 2, 1, N-1);  Prt = matrix(1, N-1, 1, 2);   Qr = matrix(1, 2, 1, N-1);  V  = matrix(1, 2, 1, 2);  Vt = matrix(1, 2, 1, 2);  Si = matrix(1, 2, 1, 2);  s  = vector(1, 2);    /* subtract first point's coods from the rest */  for (i=1; i<=2; i++)     for (j=1; j<N; j++) {    Pr[i][j] = P[i][j+1] - P[i][1];    Qr[i][j] = Q[i][j+1] - Q[i][1];  }  /* form Pr transpose */  for (i=1; i<N; i++)    for (j=1; j<=2; j++)      Prt[i][j] = Pr[j][i];  /* compute svd of Prt */  svdcmp(Prt, N-1, 2, s, V);  /* construct inverse of S */  for (i=1; i<=2; i++)    for (j=1; j<=2; j++)      Si[i][j] = 0.0;  for (i=1; i<=2; i++)    if (s[i]>FLT_MIN)      Si[i][i] = 1.0/s[i];  /* transpose V */  for (i=1; i<=2; i++)    for (j=1; j<=2; j++)      Vt[i][j] = V[j][i];  /* compute A = Qr*U*inv(S)*Vt and T*/      temp1 = matrix(1, 2, 1, 2);  temp2 = matrix(1, 2, 1, 2);    matrix_multiply(Si, Vt, 2, 2, 2, temp1);  matrix_multiply(Qr, Prt, 2, N-1, 2, temp2);  matrix_multiply(temp2, temp1, 2, 2, 2, A);    free_matrix(temp1, 1, 2, 1, 2);  free_matrix(temp2, 1, 2, 1, 2);    /* now compute the translation vector */    for (i=1; i<=2; i++) {    for (j=1, sum=0.0; j<=2; j++)      sum += -A[i][j]*P[j][1];    A[i][3] = sum + Q[i][1];  }    A[3][1] = A[3][2] = 0.0;   /* clean up the homogeneous part */  A[3][3] = 1.0;             /* for more stable inverses      */    free_matrix(Pr,  1, 2, 1, N-1);  free_matrix(Prt, 1, N-1, 1, 2);   free_matrix(Qr,  1, 2, 1, N-1);  free_matrix(V,   1, 2, 1, 2);  free_matrix(Vt,  1, 2, 1, 2);  free_matrix(Si,  1, 2, 1, 2);  free_vector(s,   1, 2);}/*----------------------------------------------------------------------*/void affine(float **P, float **Q, int N, float **A)     /* given a set of correspondences as 2-by-N matrices	P[1..2][1..N] and Q[1..2][1..N], this routine computes	the (least-squares) affine transformation given by 	the (homogeneous) matrix A[1..3][1..3]	NOTE:  N must be >=3     */{  register int i,j;  float **myPt, **myQ, **V, **Vt, **Si, *s;  float **temp1, **temp2, sum;  myPt = matrix(1, N, 1, 3);   myQ  = matrix(1, 3, 1, N);  V    = matrix(1, 3, 1, 3);  Vt   = matrix(1, 3, 1, 3);  Si   = matrix(1, 3, 1, 3);  s    = vector(1, 3);  temp1 = matrix(1, 3, 1, 3);  temp2 = matrix(1, 3, 1, 3);  /* form myPt and myQ matrices */  for (i=1; i<=2; i++)     for (j=1; j<=N; j++) {      myPt[j][i] = P[i][j];      myPt[j][3] = 1.0;      myQ[i][j]  = Q[i][j];      myQ[3][j]  = 1.0;    }  /* compute svd of myPt (note U is returned in myPt) */  svdcmp(myPt, N, 3, s, V);  /* construct inverse of S */  for (i=1; i<=3; i++)    for (j=1; j<=3; j++)      Si[i][j] = 0.0;  for (i=1; i<=3; i++)    if (s[i]>FLT_MIN)      Si[i][i] = 1.0/s[i];  /* transpose V */  for (i=1; i<=3; i++)    for (j=1; j<=3; j++)      Vt[i][j] = V[j][i];  /* compute A = Q*U*inv(S)*Vt */  matrix_multiply(Si, Vt, 3, 3, 3, temp1);  matrix_multiply(myQ, myPt, 3, N, 3, temp2);  matrix_multiply(temp2, temp1, 3, 3, 3, A);    A[3][1] = A[3][2]= 0.0;    /* clean up the homogeneous part */  A[3][3] = 1.0;             /* for more stable inverses      */      free_matrix(temp1, 1, 3, 1, 3);  free_matrix(temp2, 1, 3, 1, 3);  free_matrix(myPt, 1, N, 1, 3);   free_matrix(myQ,  1, 3, 1, N);  free_matrix(V,   1, 3, 1, 3);  free_matrix(Vt,  1, 3, 1, 3);  free_matrix(Si,  1, 3, 1, 3);  free_vector(s,   1, 3);}/*----------------------------------------------------------------------*/void rigid(float **P, float **Q, int N, float **A, int c1, int c2)     /* given a set of correspondences as 2-by-N matrices	P[1..2][1..N] and Q[1..2][1..N], this routine computes	the rigid transformation (rotation/scale/translation)	based on the correspondances in columns c1 and c2. 	The transform is given by the (homogeneous) matrix	A[1..3][1..3]	NOTE:  N must be >=2     */{  register int i,j;  float dp[3], dq[3], T[3], SR[3][3];  float scale, angle;  /* --- compute the difference vector --- */  for (i=1; i<=2; i++) {    dp[i] = P[i][c2] - P[i][c1];    dq[i] = Q[i][c2] - Q[i][c1];  }  /* --- compute the scale change --- */  scale = sqrt(SQR(dq[1])+SQR(dq[2])) / sqrt(SQR(dp[1])+SQR(dp[2]));  /* --- compute the angle shift --- */  angle = atan2(dq[2],dq[1]) - atan2(dp[2],dp[1]);  /* --- form the scale/rotation matrix --- */  SR[1][1] =   scale * cos(angle);  SR[1][2] = - scale * sin(angle);  SR[2][1] = - SR[1][2];  SR[2][2] =   SR[1][1];  /* --- compute the translation vector --- */  for (i=1; i<=2; i++)     T[i] = Q[i][c1] - SR[i][1]*P[1][c1] - SR[i][2]*P[2][c1];     /* --- assign the composite rigid transform matrix A --- */  for (i=1; i<=2; i++)     for (j=1; j<=2; j++)       A[i][j] = SR[i][j];  A[1][3] = T[1];  A[2][3] = T[2];  A[3][1] = A[3][2]= 0.0;    /* clean up the homogeneous part */  A[3][3] = 1.0;             /* for more stable inverses      */}/*----------------------------------------------------------------------*/int affine_warp(float **image_in, float **image_out, 		int M, int N, float **A, float bgvalue)          /*  Will apply the affine warp specified by A[1..3][1..3]	 to the input image image_in and return the result in the 	 pre-allocated matrix image_out. Both images are of size	 M-by-N.	 	 */{  register int i,j,k;  float **Ainv;  float x, y, f, a, b;  float f1,f2,f3,f4;  int r,c;  float scale;  float **image_temp1, **image_temp2;  float lowpass_filter[] = {0, 0.2, 0.6, 0.2};  int lowpass_ntaps = 3;  int num_gp_levels;  /* first compute inverse warp */  Ainv = matrix(1, 3, 1, 3);  matrix_inverse(A, 3, Ainv);  image_temp1 = matrix(1, M, 1, N);  /* before warping compute determinant and apply a     Gaussian Pyramid filter n times if necessary          */  scale = A[1][1]*A[2][2] - A[2][1]*A[1][2];  scale = sqrt(ABS(scale));  num_gp_levels = (int) (-log(scale)/log(2.0) + 0.5);  if (num_gp_levels>0) {    image_temp2 = matrix(1, M, 1, N);    for (i=1; i<=M; i++)      for (j=1; j<=N; j++)	image_temp1[i][j] = image_in[i][j];    for (k=1; k<=num_gp_levels; k++) {      conv2d_sep(image_temp1, image_temp2, M, N,		 lowpass_filter, lowpass_ntaps,		 lowpass_filter, lowpass_ntaps);      for (i=1; i<=M; i++)	for (j=1; j<=N; j++)	  image_temp1[i][j] = image_temp2[i][j];    }    for (i=1; i<=M; i++)      for (j=1; j<=N; j++)	image_temp1[i][j] = image_temp2[i][j];    free_matrix(image_temp2, 1, M, 1, N);  }  else {   for (i=1; i<=M; i++)      for (j=1; j<=N; j++)	image_temp1[i][j] = image_in[i][j];  }     /* apply warp by inverse-warping from the result */    for (i=1; i<=M; i++)     for (j=1; j<=N; j++) {            image_out[i][j] = bgvalue;         x = Ainv[1][1]*i + Ainv[1][2]*j + Ainv[1][3];      y = Ainv[2][1]*i + Ainv[2][2]*j + Ainv[2][3];            if (x>=1 & x<M & y>=1 & y<N) {		/* do bilinear interpolation */		r = (int) x;	c = (int) y;	a = x - r;	b = y - c;	f1 = image_temp1[r][c];	f2 = image_temp1[r][c+1];	f3 = image_temp1[r+1][c];	f4 = image_temp1[r+1][c+1];		f = (1-a)*(1-b)*f1 + b*(1-a)*f2 + a*(1-b)*f3 + a*b*f4;		image_out[i][j] = f;      }          }    free_matrix(Ainv, 1, 3, 1, 3);  free_matrix(image_temp1, 1, M, 1, N);  return num_gp_levels;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产视频网站| 99久久99久久综合| 国产精品一区二区在线播放 | 一区二区在线观看视频| 五月综合激情日本mⅴ| 国产成人精品影视| 91精品国产综合久久香蕉麻豆 | 成人精品免费看| 欧美一级欧美三级在线观看 | 欧美无砖砖区免费| 中文子幕无线码一区tr| 美女视频网站黄色亚洲| 欧美在线观看18| 欧美国产精品专区| 狠狠久久亚洲欧美| 欧美一区二区网站| 亚洲国产毛片aaaaa无费看 | 亚洲综合999| 成人免费高清在线观看| 精品av综合导航| 亚洲一区二区av电影| 99久久夜色精品国产网站| 久久综合色综合88| 黄网站免费久久| 91精品国产免费| 亚洲成av人片观看| 欧美在线观看18| 亚洲国产精品久久人人爱 | 在线播放欧美女士性生活| 亚洲精品免费在线| 欧美视频在线观看一区二区| 中文字幕日本不卡| www.亚洲精品| 亚洲欧美日韩国产综合在线 | 亚洲精品成人在线| 色噜噜久久综合| 亚洲免费观看高清完整版在线 | 日本一区二区综合亚洲| 国产精品一区二区三区网站| 久久精品这里都是精品| 国产精品小仙女| 国产精品污网站| 91色在线porny| 亚洲高清免费在线| 日韩三级av在线播放| 久久国产成人午夜av影院| www国产精品av| 成人黄色a**站在线观看| 最新日韩在线视频| 欧美午夜精品一区二区蜜桃| 日韩高清在线观看| 精品人在线二区三区| 国产福利一区二区三区| 中文字幕一区二区三区在线观看 | 一区二区三区中文在线观看| 在线观看一区日韩| 国产精品一线二线三线| 国产精品久久久久久亚洲伦| 91老师片黄在线观看| 日日夜夜免费精品| 国产精品色噜噜| 欧美视频第二页| 精品一二线国产| 日韩毛片视频在线看| 欧美日韩亚洲另类| 国产一区二区91| 一区二区三区国产精华| 日韩无一区二区| av成人免费在线观看| 免费高清在线一区| 国产精品美女www爽爽爽| 欧美日韩视频不卡| 风间由美性色一区二区三区| 亚洲成人一区二区| 久久女同精品一区二区| 欧美视频在线一区二区三区 | 国产精品嫩草影院com| 欧美在线不卡一区| 国产成人精品午夜视频免费| 亚洲一区二区欧美| 欧美国产精品一区| 日韩午夜电影av| 欧美系列在线观看| 菠萝蜜视频在线观看一区| 免费在线成人网| 亚洲网友自拍偷拍| 国产精品超碰97尤物18| 精品国产伦一区二区三区观看体验 | 欧美一区二区三区免费大片| 成人av在线资源网| 国内外成人在线| 视频一区二区国产| 一级中文字幕一区二区| 国产精品精品国产色婷婷| 久久美女高清视频| 欧美不卡一区二区| 欧美一区二区视频在线观看| 91国偷自产一区二区三区成为亚洲经典 | 精品一区二区综合| 亚洲成人av一区| 亚洲人成7777| 国产精品成人免费在线| 亚洲国产成人一区二区三区| www国产亚洲精品久久麻豆| 欧美精品aⅴ在线视频| 在线亚洲人成电影网站色www| 成人v精品蜜桃久久一区| 国产成a人亚洲精品| 国产一区二区三区免费| 国内成+人亚洲+欧美+综合在线| 蜜桃av一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲成人精品一区| 偷拍与自拍一区| 亚洲国产精品自拍| 三级精品在线观看| 日韩av中文在线观看| 日韩激情av在线| 麻豆国产91在线播放| 激情国产一区二区| 国内成+人亚洲+欧美+综合在线| 国产一区二区导航在线播放| 国产精品白丝jk白祙喷水网站| 国产黄色91视频| 成年人国产精品| 99精品国产热久久91蜜凸| 91蜜桃在线观看| 精品视频一区二区不卡| 69成人精品免费视频| 欧美电影免费提供在线观看| 精品久久久久久久久久久久久久久| 精品日本一线二线三线不卡| 日本一区二区三区电影| 成人欧美一区二区三区白人 | 欧美日韩在线精品一区二区三区激情| 精品视频一区三区九区| 日韩精品一区在线| 久久九九99视频| 亚洲精品菠萝久久久久久久| 午夜伦欧美伦电影理论片| 精品无人码麻豆乱码1区2区 | 亚洲制服丝袜av| 日本va欧美va欧美va精品| 精品一区二区三区欧美| 99久久精品99国产精品| 欧美特级限制片免费在线观看| 日韩视频中午一区| 亚洲欧美一区二区在线观看| 丝袜美腿亚洲一区| 国产乱理伦片在线观看夜一区| 一本色道a无线码一区v| 精品欧美一区二区三区精品久久| 国产精品午夜电影| 日本特黄久久久高潮| 成人性色生活片| 欧美日韩aaaaa| 国产午夜亚洲精品理论片色戒| 日韩理论片中文av| 麻豆一区二区三区| 91一区在线观看| 欧美r级在线观看| 亚洲日本在线看| 精品一区二区精品| 欧美午夜不卡在线观看免费| 日本一区二区三区四区在线视频| 日欧美一区二区| 99精品视频中文字幕| 精品久久久久香蕉网| 亚洲线精品一区二区三区| 成人在线视频一区二区| 日韩精品一区在线观看| 亚洲自拍另类综合| jiyouzz国产精品久久| 精品国产制服丝袜高跟| 亚洲综合免费观看高清完整版在线 | 综合电影一区二区三区 | 亚洲国产精品激情在线观看| 婷婷久久综合九色国产成人| 99re6这里只有精品视频在线观看| 日韩免费一区二区三区在线播放| 尤物在线观看一区| 高清国产一区二区| 久久久久久久久蜜桃| 日韩电影在线一区二区| 欧美色综合天天久久综合精品| 中文字幕视频一区| 成人18视频在线播放| 国产日韩精品一区二区浪潮av| 精品综合久久久久久8888| 69堂成人精品免费视频| 午夜精品久久久久久久久| 欧美色视频一区| 亚洲国产美国国产综合一区二区| 99精品热视频| 国产精品成人免费| 99精品偷自拍| 亚洲精品亚洲人成人网| 在线中文字幕一区二区| 伊人婷婷欧美激情| 色欧美片视频在线观看|