[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44183] trunk/blender: Camera tracking: run aspect correction before stabilizing shot

Sergey Sharybin sergey.vfx at gmail.com
Fri Feb 17 09:23:50 CET 2012


Revision: 44183
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44183
Author:   nazgul
Date:     2012-02-17 08:23:42 +0000 (Fri, 17 Feb 2012)
Log Message:
-----------
Camera tracking: run aspect correction before stabilizing shot

This commit fixes image stopped being an orthogonal rectangle because of horizontal
scaling caused by pixel aspect ratio happening after rotating image which used to
make orthogonal angles from footage not actually orthogonal.

--
svn merge -r44150:44151 ^/branches/soc-2011-tomato

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44150

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_tracking.h
    trunk/blender/source/blender/blenkernel/intern/movieclip.c
    trunk/blender/source/blender/blenkernel/intern/tracking.c
    trunk/blender/source/blender/editors/space_clip/clip_draw.c

Property Changed:
----------------
    trunk/blender/
    trunk/blender/source/blender/editors/space_outliner/


Property changes on: trunk/blender
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/soc-2011-tomato:42376,42378-42379,42383,42385,42395,42397-42400,42407,42411,42418,42443-42444,42446,42467,42472,42486,42650-42652,42654-42655,42709-42710,42733-42734,42801,43872,44130,44141,44147-44149
   + /branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/soc-2011-tomato:42376,42378-42379,42383,42385,42395,42397-42400,42407,42411,42418,42443-42444,42446,42467,42472,42486,42650-42652,42654-42655,42709-42710,42733-42734,42801,43872,44130,44141,44147-44149,44151

Modified: trunk/blender/source/blender/blenkernel/BKE_tracking.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_tracking.h	2012-02-17 08:20:21 UTC (rev 44182)
+++ trunk/blender/source/blender/blenkernel/BKE_tracking.h	2012-02-17 08:23:42 UTC (rev 44183)
@@ -138,7 +138,7 @@
 /* 2D stabilization */
 void BKE_tracking_stabilization_data(struct MovieTracking *tracking, int framenr, int width, int height, float loc[2], float *scale, float *angle);
 struct ImBuf *BKE_tracking_stabilize(struct MovieTracking *tracking, int framenr, struct ImBuf *ibuf, float loc[2], float *scale, float *angle);
-void BKE_tracking_stabdata_to_mat4(int width, int height, float loc[2], float scale, float angle, float mat[4][4]);
+void BKE_tracking_stabdata_to_mat4(int width, int height, float aspect, float loc[2], float scale, float angle, float mat[4][4]);
 
 /* Distortion/Undistortion */
 void BKE_tracking_apply_intrinsics(struct MovieTracking *tracking, float co[2], float nco[2]);

Modified: trunk/blender/source/blender/blenkernel/intern/movieclip.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/movieclip.c	2012-02-17 08:20:21 UTC (rev 44182)
+++ trunk/blender/source/blender/blenkernel/intern/movieclip.c	2012-02-17 08:23:42 UTC (rev 44183)
@@ -279,7 +279,7 @@
 		int framenr;
 		int postprocess_flag;
 
-		float loc[2], scale, angle;
+		float loc[2], scale, angle, aspect;
 		int proxy;
 		short render_flag;
 	} stabilized;
@@ -727,6 +727,10 @@
 	if(cache->stabilized.postprocess_flag != postprocess_flag)
 		return NULL;
 
+	/* stabilization also depends on pixel aspect ratio */
+	if(cache->stabilized.aspect != clip->tracking.camera.pixel_aspect)
+		return NULL;
+
 	stableibuf = cache->stabilized.ibuf;
 
 	BKE_tracking_stabilization_data(&clip->tracking, framenr, stableibuf->x, stableibuf->y, tloc, &tscale, &tangle);
@@ -763,6 +767,7 @@
 	cache->stabilized.scale = tscale;
 	cache->stabilized.angle = tangle;
 	cache->stabilized.framenr = framenr;
+	cache->stabilized.aspect = clip->tracking.camera.pixel_aspect;
 
 	if(clip->flag&MCLIP_USE_PROXY) {
 		cache->stabilized.proxy= rendersize_to_proxy(user, clip->flag);

Modified: trunk/blender/source/blender/blenkernel/intern/tracking.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/tracking.c	2012-02-17 08:20:21 UTC (rev 44182)
+++ trunk/blender/source/blender/blenkernel/intern/tracking.c	2012-02-17 08:23:42 UTC (rev 44183)
@@ -2485,6 +2485,7 @@
 {
 	float firstmedian[2];
 	MovieTrackingStabilization *stab= &tracking->stabilization;
+	float aspect= tracking->camera.pixel_aspect;
 
 	if(stab->ok)
 		return stab->scale;
@@ -2535,7 +2536,7 @@
 				float mat[4][4];
 				float points[4][2]={{0.0f, 0.0f}, {0.0f, height}, {width, height}, {width, 0.0f}};
 
-				BKE_tracking_stabdata_to_mat4(width, height, loc, scale, angle, mat);
+				BKE_tracking_stabdata_to_mat4(width, height, aspect, loc, scale, angle, mat);
 
 				for(i= 0; i<4; i++) {
 					int j;
@@ -2650,6 +2651,7 @@
 	MovieTrackingStabilization *stab= &tracking->stabilization;
 	ImBuf *tmpibuf;
 	float width= ibuf->x, height= ibuf->y;
+	float aspect= tracking->camera.pixel_aspect;
 
 	if(loc)		copy_v2_v2(tloc, loc);
 	if(scale)	tscale= *scale;
@@ -2688,7 +2690,7 @@
 		float mat[4][4];
 		int i, j;
 
-		BKE_tracking_stabdata_to_mat4(ibuf->x, ibuf->y, tloc, tscale, tangle, mat);
+		BKE_tracking_stabdata_to_mat4(ibuf->x, ibuf->y, aspect, tloc, tscale, tangle, mat);
 		invert_m4(mat);
 
 		for(j=0; j<tmpibuf->y; j++) {
@@ -2715,16 +2717,21 @@
 	return tmpibuf;
 }
 
-void BKE_tracking_stabdata_to_mat4(int width, int height, float loc[2], float scale, float angle, float mat[4][4])
+void BKE_tracking_stabdata_to_mat4(int width, int height, float aspect, float loc[2], float scale, float angle, float mat[4][4])
 {
-	float lmat[4][4], rmat[4][4], smat[4][4], cmat[4][4], icmat[4][4];
+	float lmat[4][4], rmat[4][4], smat[4][4], cmat[4][4], icmat[4][4], amat[4][4], iamat[4][4];
 	float svec[3]= {scale, scale, scale};
 
 	unit_m4(rmat);
 	unit_m4(lmat);
 	unit_m4(smat);
 	unit_m4(cmat);
+	unit_m4(amat);
 
+	/* aspect ratio correction matrix */
+	amat[0][0] = 1.0f / aspect;
+	invert_m4_m4(iamat, amat);
+
 	/* image center as rotation center */
 	cmat[3][0]= (float)width/2.0f;
 	cmat[3][1]= (float)height/2.0f;
@@ -2735,7 +2742,7 @@
 	rotate_m4(rmat, 'Z', angle);	/* rotation matrix */
 
 	/* compose transformation matrix */
-	mul_serie_m4(mat, lmat, cmat, rmat, smat, icmat, NULL, NULL, NULL);
+	mul_serie_m4(mat, amat, lmat, cmat, rmat, smat, icmat, iamat, NULL);
 }
 
 MovieDistortion *BKE_tracking_distortion_create(void)

Modified: trunk/blender/source/blender/editors/space_clip/clip_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/clip_draw.c	2012-02-17 08:20:21 UTC (rev 44182)
+++ trunk/blender/source/blender/editors/space_clip/clip_draw.c	2012-02-17 08:23:42 UTC (rev 44183)
@@ -1269,13 +1269,14 @@
 
 		if(ibuf) {
 			float loc[2];
+			float aspect= clip->tracking.camera.pixel_aspect;
 
 			if(width != ibuf->x)
 				mul_v2_v2fl(loc, sc->loc, (float)width / ibuf->x);
 			else
 				copy_v2_v2(loc, sc->loc);
 
-			BKE_tracking_stabdata_to_mat4(width, height, loc, sc->scale, sc->angle, sc->stabmat);
+			BKE_tracking_stabdata_to_mat4(width, height, aspect, loc, sc->scale, sc->angle, sc->stabmat);
 
 			unit_m4(smat);
 			smat[0][0]= 1.0f/width;


Property changes on: trunk/blender/source/blender/editors/space_outliner
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/soc-2011-cucumber/source/blender/editors/space_outliner:38968,38970,38973,39045,40845
/branches/soc-2011-pepper/source/blender/editors/space_outliner:36831-38987
/branches/soc-2011-tomato/source/blender/editors/space_outliner:42376,42378-42379,42383,42385,42395,42397-42400,42407,42411,42418,42443-42444,42446,42467,42472,42486,42650-42652,42654-42655,42709-42710,42733-42734,42801,43872,44130,44141,44147-44149
   + /branches/soc-2011-cucumber/source/blender/editors/space_outliner:38968,38970,38973,39045,40845
/branches/soc-2011-pepper/source/blender/editors/space_outliner:36831-38987
/branches/soc-2011-tomato/source/blender/editors/space_outliner:42376,42378-42379,42383,42385,42395,42397-42400,42407,42411,42418,42443-42444,42446,42467,42472,42486,42650-42652,42654-42655,42709-42710,42733-42734,42801,43872,44130,44141,44147-44149,44151




More information about the Bf-blender-cvs mailing list