﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=%E5%88%A9%E7%94%A8%E8%80%85%3ASftrabbit%2FGSoC_2013%2FDocumentation%2FMultiview_Reconstruction_Internals_Design</id>
	<title>利用者:Sftrabbit/GSoC 2013/Documentation/Multiview Reconstruction Internals Design - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=%E5%88%A9%E7%94%A8%E8%80%85%3ASftrabbit%2FGSoC_2013%2FDocumentation%2FMultiview_Reconstruction_Internals_Design"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sftrabbit/GSoC_2013/Documentation/Multiview_Reconstruction_Internals_Design&amp;action=history"/>
	<updated>2026-06-10T05:11:42Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sftrabbit/GSoC_2013/Documentation/Multiview_Reconstruction_Internals_Design&amp;diff=143371&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sftrabbit/GSoC_2013/Documentation/Multiview_Reconstruction_Internals_Design&amp;diff=143371&amp;oldid=prev"/>
		<updated>2018-06-28T20:57:17Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2018年6月28日 (木) 20:57時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sftrabbit/GSoC_2013/Documentation/Multiview_Reconstruction_Internals_Design&amp;diff=143370&amp;oldid=prev</id>
		<title>wiki&gt;Sftrabbit: /* Multiview Reconstruction Internals Design */</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Sftrabbit/GSoC_2013/Documentation/Multiview_Reconstruction_Internals_Design&amp;diff=143370&amp;oldid=prev"/>
		<updated>2013-09-22T21:14:20Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Multiview Reconstruction Internals Design&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Multiview Reconstruction Internals Design=&lt;br /&gt;
&lt;br /&gt;
'''The following describes my original plans for the multicamera reconstruction. For a current description, see the [[../Technical_Overview|'''technical overview''']].'''&lt;br /&gt;
&lt;br /&gt;
==C API==&lt;br /&gt;
&lt;br /&gt;
Currently, the libmv C API exposes reconstruction through the &amp;lt;code&amp;gt;libmv_solve&amp;lt;/code&amp;gt; function. It takes a set of tracks, camera intrinsics options, reconstruction options, and a callback for progress updates. Depending on the &amp;lt;code&amp;gt;libmv_reconstructionOptions::motion_flag&amp;lt;/code&amp;gt; flags, it forwards these arguments to either &amp;lt;code&amp;gt;libmv_solveReconstruction&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;libmv_solveModal&amp;lt;/code&amp;gt;. It returns a &amp;lt;code&amp;gt;libmv_Reconstruction&amp;lt;/code&amp;gt; which contains the reconstructed cameras and tracking points.&lt;br /&gt;
&lt;br /&gt;
I've considered two options for adding multiview reconstruction to the API:&lt;br /&gt;
&lt;br /&gt;
# Expose a &amp;lt;code&amp;gt;libmv_solveMultiview&amp;lt;/code&amp;gt; function in addition to &amp;lt;code&amp;gt;libmv_solve&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Have &amp;lt;code&amp;gt;libmv_solve&amp;lt;/code&amp;gt; determine whether an internal &amp;lt;code&amp;gt;libmv_solveMultiview&amp;lt;/code&amp;gt; should be called based on the arguments passed.&lt;br /&gt;
&lt;br /&gt;
I have chosen option 2, because it '''simplifies the interface and treats single view and multiview reconstruction uniformly''' (at least as far as the blenkern is concerned). The given &amp;lt;code&amp;gt;Tracks&amp;lt;/code&amp;gt; arguments can store &amp;lt;code&amp;gt;Markers&amp;lt;/code&amp;gt; associated with particular views, and &amp;lt;code&amp;gt;libmv_Solve&amp;lt;/code&amp;gt; determine whether to perform multiview reconstruction based on the number of views associated with the given tracks. This means that &amp;lt;code&amp;gt;libmv_Solve&amp;lt;/code&amp;gt; will call one of the following functions:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;libmv_solveReconstruction&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;libmv_solveModal&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;libmv_solveMultiview&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Perhaps it is worth combining these functions in some way''', as they all perform many steps in common. It's also worth thinking about what will happen when we have modal multiview reconstruction. In fact, for multiple views, only a subset of cameras may have fixed positions. This suggests that it might be possible to have a single &amp;lt;code&amp;gt;libmv_solve&amp;lt;/code&amp;gt; function that:&lt;br /&gt;
&lt;br /&gt;
# Treats single view and multiview reconstruction uniformly.&lt;br /&gt;
# Takes motion constraints associated with each view.&lt;br /&gt;
&lt;br /&gt;
==Tracks==&lt;br /&gt;
&lt;br /&gt;
To store tracks across multiple views, the &amp;lt;code&amp;gt;Tracks&amp;lt;/code&amp;gt; class needs to be modified. Currently, &amp;lt;code&amp;gt;Tracks&amp;lt;/code&amp;gt; just stores a &amp;lt;code&amp;gt;vector&amp;amp;lt;Marker&amp;amp;gt;&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;Marker&amp;lt;/code&amp;gt;s themselves keep track of which track and image (frame of video) they belong to. For example, all of the markers for a single track will have the &amp;lt;code&amp;gt;track&amp;lt;/code&amp;gt; value but different &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt; values.&lt;br /&gt;
&lt;br /&gt;
For multiview reconstruction, the obvious solution is to give &amp;lt;code&amp;gt;Marker&amp;lt;/code&amp;gt;s a &amp;lt;code&amp;gt;view&amp;lt;/code&amp;gt; member, which associates them with a particular view. That is, all &amp;lt;code&amp;gt;Marker&amp;lt;/code&amp;gt;s with the same &amp;lt;code&amp;gt;view&amp;lt;/code&amp;gt; value correspond to markers on the images from a single camera. So the &amp;lt;code&amp;gt;Marker&amp;lt;/code&amp;gt; struct will simply be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
struct Marker {&lt;br /&gt;
  int view;&lt;br /&gt;
  int image;&lt;br /&gt;
  int track;&lt;br /&gt;
  double x, y;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then the member functions of &amp;lt;code&amp;gt;Tracks&amp;lt;/code&amp;gt; need to be updated to allow insertion and extraction of &amp;lt;code&amp;gt;Marker&amp;lt;/code&amp;gt;s in different views. For example, &amp;lt;code&amp;gt;Tracks::MarkersInView&amp;lt;/code&amp;gt; will return all of the markers corresponding to a particular view. Attempting to insert or extract &amp;lt;code&amp;gt;Marker&amp;lt;/code&amp;gt;s giving only image and track values will assume a value of 0 for the view. This means that &amp;lt;code&amp;gt;Tracks&amp;lt;/code&amp;gt; can continue to be used in a single view situation.&lt;br /&gt;
&lt;br /&gt;
==Solving==&lt;br /&gt;
&lt;br /&gt;
Coming soon...&lt;br /&gt;
&lt;br /&gt;
==Reconstruction result==&lt;br /&gt;
&lt;br /&gt;
Coming soon...&lt;/div&gt;</summary>
		<author><name>wiki&gt;Sftrabbit</name></author>
		
	</entry>
</feed>