You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

836 lines
37 KiB

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>My Project: PointBase Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">My Project
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="classPointBase-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">PointBase Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>class implemented as solution for the thesis providing stitching and stitching features
<a href="classPointBase.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:abbb9305eacd3ecc8ce9fa240b7a06fbd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#abbb9305eacd3ecc8ce9fa240b7a06fbd">load</a> (string path)</td></tr>
<tr class="memdesc:abbb9305eacd3ecc8ce9fa240b7a06fbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">load the points from a database - necessary for the offline algorithm <a href="classPointBase.html#abbb9305eacd3ecc8ce9fa240b7a06fbd">More...</a><br /></td></tr>
<tr class="separator:abbb9305eacd3ecc8ce9fa240b7a06fbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8b32365bd6ecbbe1d67620287eea0f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#ae8b32365bd6ecbbe1d67620287eea0f1">printPoints</a> (int which=0)</td></tr>
<tr class="memdesc:ae8b32365bd6ecbbe1d67620287eea0f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">prints the points from the database into the terminal <a href="classPointBase.html#ae8b32365bd6ecbbe1d67620287eea0f1">More...</a><br /></td></tr>
<tr class="separator:ae8b32365bd6ecbbe1d67620287eea0f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6922b9ce602af99c7d51080d3bf87f47"><td class="memItemLeft" align="right" valign="top">string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#a6922b9ce602af99c7d51080d3bf87f47">getPath</a> (double x, double y)</td></tr>
<tr class="memdesc:a6922b9ce602af99c7d51080d3bf87f47"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the path of a point specified by x and y values <a href="classPointBase.html#a6922b9ce602af99c7d51080d3bf87f47">More...</a><br /></td></tr>
<tr class="separator:a6922b9ce602af99c7d51080d3bf87f47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab21715a437ce558b06c27a1150643487"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#ab21715a437ce558b06c27a1150643487">showPointImg</a> ()</td></tr>
<tr class="memdesc:ab21715a437ce558b06c27a1150643487"><td class="mdescLeft">&#160;</td><td class="mdescRight">shows the location of loaded points on an images <a href="classPointBase.html#ab21715a437ce558b06c27a1150643487">More...</a><br /></td></tr>
<tr class="separator:ab21715a437ce558b06c27a1150643487"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a119720418d113373b7fab68c762efe63"><td class="memItemLeft" align="right" valign="top">vector&lt; Point2d &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#a119720418d113373b7fab68c762efe63">getAdjacents</a> (Point2d inputPoint)</td></tr>
<tr class="memdesc:a119720418d113373b7fab68c762efe63"><td class="mdescLeft">&#160;</td><td class="mdescRight">DESTRUCTIVE!! - removes found adj. points from points vector, adds them to the toBeDone vector. <a href="classPointBase.html#a119720418d113373b7fab68c762efe63">More...</a><br /></td></tr>
<tr class="separator:a119720418d113373b7fab68c762efe63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81aed98eaeca5e5ef2fcef19c3fbbb28"><td class="memItemLeft" align="right" valign="top">Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#a81aed98eaeca5e5ef2fcef19c3fbbb28">rotate</a> (Mat src, double angle)</td></tr>
<tr class="memdesc:a81aed98eaeca5e5ef2fcef19c3fbbb28"><td class="mdescLeft">&#160;</td><td class="mdescRight">rotation function <a href="https://stackoverflow.com/questions/22041699/rotate-an-image-without-cropping-in-opencv-in-c">https://stackoverflow.com/questions/22041699/rotate-an-image-without-cropping-in-opencv-in-c</a> <a href="classPointBase.html#a81aed98eaeca5e5ef2fcef19c3fbbb28">More...</a><br /></td></tr>
<tr class="separator:a81aed98eaeca5e5ef2fcef19c3fbbb28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0448f63dca5a9d8b314eaf7e598ee8ae"><td class="memItemLeft" align="right" valign="top">Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#a0448f63dca5a9d8b314eaf7e598ee8ae">dtBlend</a> (Mat roi, Mat transformedRoi, bool showImg=false)</td></tr>
<tr class="memdesc:a0448f63dca5a9d8b314eaf7e598ee8ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">blends using distance transform <a href="classPointBase.html#a0448f63dca5a9d8b314eaf7e598ee8ae">More...</a><br /></td></tr>
<tr class="separator:a0448f63dca5a9d8b314eaf7e598ee8ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa196aa2438afb9dd446d23786e077f72"><td class="memItemLeft" align="right" valign="top"><a id="aa196aa2438afb9dd446d23786e077f72"></a>
Mat&#160;</td><td class="memItemRight" valign="bottom"><b>exposureBlend</b> (Mat roi, Mat transformedRoi, bool showImg=false)</td></tr>
<tr class="separator:aa196aa2438afb9dd446d23786e077f72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a536381acff1b3628b6e3c9dfe1cfbb43"><td class="memItemLeft" align="right" valign="top">Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#a536381acff1b3628b6e3c9dfe1cfbb43">pyramidBlend</a> (Mat roi, Mat transformedRoi, bool showImg=false)</td></tr>
<tr class="memdesc:a536381acff1b3628b6e3c9dfe1cfbb43"><td class="mdescLeft">&#160;</td><td class="mdescRight">blends using image pyramids transform <a href="classPointBase.html#a536381acff1b3628b6e3c9dfe1cfbb43">More...</a><br /></td></tr>
<tr class="separator:a536381acff1b3628b6e3c9dfe1cfbb43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a328939beca51edba0afc28babfb01a6f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#a328939beca51edba0afc28babfb01a6f">stitchImgs</a> ()</td></tr>
<tr class="memdesc:a328939beca51edba0afc28babfb01a6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">stitches images using opencv pipeline <a href="classPointBase.html#a328939beca51edba0afc28babfb01a6f">More...</a><br /></td></tr>
<tr class="separator:a328939beca51edba0afc28babfb01a6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4efa632ae0036a2c4a4283ae8359bdde"><td class="memItemLeft" align="right" valign="top">std::vector&lt; double &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#a4efa632ae0036a2c4a4283ae8359bdde">getEdgeValues</a> ()</td></tr>
<tr class="memdesc:a4efa632ae0036a2c4a4283ae8359bdde"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets the values of the top right, left and bottom right left images in pointBase <a href="classPointBase.html#a4efa632ae0036a2c4a4283ae8359bdde">More...</a><br /></td></tr>
<tr class="separator:a4efa632ae0036a2c4a4283ae8359bdde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0eb5f51783fa1f0fb1c57b309db4a59"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#ad0eb5f51783fa1f0fb1c57b309db4a59">cumdump</a> (int imgW, int imgH)</td></tr>
<tr class="memdesc:ad0eb5f51783fa1f0fb1c57b309db4a59"><td class="mdescLeft">&#160;</td><td class="mdescRight">image stitching using SIFT <a href="classPointBase.html#ad0eb5f51783fa1f0fb1c57b309db4a59">More...</a><br /></td></tr>
<tr class="separator:ad0eb5f51783fa1f0fb1c57b309db4a59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79819eaffd93c2cf34e9ba0e8b1c07df"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#a79819eaffd93c2cf34e9ba0e8b1c07df">patternMatchTry</a> (int imgW, int imgH)</td></tr>
<tr class="memdesc:a79819eaffd93c2cf34e9ba0e8b1c07df"><td class="mdescLeft">&#160;</td><td class="mdescRight">stitches images using pattern matching <a href="classPointBase.html#a79819eaffd93c2cf34e9ba0e8b1c07df">More...</a><br /></td></tr>
<tr class="separator:a79819eaffd93c2cf34e9ba0e8b1c07df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3f8de651619802cf991ea6e5f9e79d9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#ac3f8de651619802cf991ea6e5f9e79d9">onlineStitch</a> (int imgW, int imgH, string path)</td></tr>
<tr class="memdesc:ac3f8de651619802cf991ea6e5f9e79d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">online image stitching using pattern matching <a href="classPointBase.html#ac3f8de651619802cf991ea6e5f9e79d9">More...</a><br /></td></tr>
<tr class="separator:ac3f8de651619802cf991ea6e5f9e79d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55dc1ba70c1fcb5e769acb84c0cdf1b8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#a55dc1ba70c1fcb5e769acb84c0cdf1b8">onlineStitchSIFT</a> (int imgW, int imgH, string path)</td></tr>
<tr class="memdesc:a55dc1ba70c1fcb5e769acb84c0cdf1b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">online image stitching using SIFT <a href="classPointBase.html#a55dc1ba70c1fcb5e769acb84c0cdf1b8">More...</a><br /></td></tr>
<tr class="separator:a55dc1ba70c1fcb5e769acb84c0cdf1b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a193e388ed173116556aa33debc117dd1"><td class="memItemLeft" align="right" valign="top">vector&lt; Point2d &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#a193e388ed173116556aa33debc117dd1">points</a></td></tr>
<tr class="separator:a193e388ed173116556aa33debc117dd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad70bad6df338bf9f89f80120a3e3a8ff"><td class="memItemLeft" align="right" valign="top">vector&lt; Point2d &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#ad70bad6df338bf9f89f80120a3e3a8ff">doneVector</a></td></tr>
<tr class="separator:ad70bad6df338bf9f89f80120a3e3a8ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8c85601930fe4db42dd6dd0a8e5c13c"><td class="memItemLeft" align="right" valign="top">vector&lt; Point2d &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#aa8c85601930fe4db42dd6dd0a8e5c13c">toDoVector</a></td></tr>
<tr class="separator:aa8c85601930fe4db42dd6dd0a8e5c13c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57df7e36df651f12292953a639df33f9"><td class="memItemLeft" align="right" valign="top">std::map&lt; Point2d, string, <a class="el" href="structComparePoints.html">ComparePoints</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#a57df7e36df651f12292953a639df33f9">pathMap</a></td></tr>
<tr class="separator:a57df7e36df651f12292953a639df33f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af29ebdc02fc7f9feec14952e8d6ae244"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#af29ebdc02fc7f9feec14952e8d6ae244">imgWidthDeg</a></td></tr>
<tr class="separator:af29ebdc02fc7f9feec14952e8d6ae244"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99f91cd4485a3cb125c238cc122e7958"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPointBase.html#a99f91cd4485a3cb125c238cc122e7958">imgHeightDeg</a></td></tr>
<tr class="separator:a99f91cd4485a3cb125c238cc122e7958"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>class implemented as solution for the thesis providing stitching and stitching features </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ad0eb5f51783fa1f0fb1c57b309db4a59"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0eb5f51783fa1f0fb1c57b309db4a59">&#9670;&nbsp;</a></span>cumdump()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void PointBase::cumdump </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>imgW</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>imgH</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>image stitching using SIFT </p>
<p>saves the source image to the current directory</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">imgW</td><td>source image width </td></tr>
<tr><td class="paramname">imgH</td><td>source image height </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a0448f63dca5a9d8b314eaf7e598ee8ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0448f63dca5a9d8b314eaf7e598ee8ae">&#9670;&nbsp;</a></span>dtBlend()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mat PointBase::dtBlend </td>
<td>(</td>
<td class="paramtype">Mat&#160;</td>
<td class="paramname"><em>roi</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Mat&#160;</td>
<td class="paramname"><em>transformedRoi</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>showImg</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>blends using distance transform </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">roi</td><td>original roi with 1 or more stitched images </td></tr>
<tr><td class="paramname">transformedRoi</td><td>roi-sized! image with the new image in the appropriate location </td></tr>
<tr><td class="paramname">showImg</td><td>bool, switch to enable showing of the new roi </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Mat - the blended image </dd></dl>
</div>
</div>
<a id="a119720418d113373b7fab68c762efe63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a119720418d113373b7fab68c762efe63">&#9670;&nbsp;</a></span>getAdjacents()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">vector&lt;Point2d&gt; PointBase::getAdjacents </td>
<td>(</td>
<td class="paramtype">Point2d&#160;</td>
<td class="paramname"><em>inputPoint</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>DESTRUCTIVE!! - removes found adj. points from points vector, adds them to the toBeDone vector. </p>
<p>Searches for adjacent points to a given point</p>
<p>Returns either empty vector, or a vector with the found adjacent points</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">inputPoint</td><td>- opencv Point2d of the searched point </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>vector of &lt;Point2d&gt; - points of images which are adjacent to the inputPoint </dd></dl>
</div>
</div>
<a id="a4efa632ae0036a2c4a4283ae8359bdde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4efa632ae0036a2c4a4283ae8359bdde">&#9670;&nbsp;</a></span>getEdgeValues()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;double&gt; PointBase::getEdgeValues </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>gets the values of the top right, left and bottom right left images in pointBase </p>
<dl class="section return"><dt>Returns</dt><dd>vector, where the values are [minX,maxX,minY,maxY] </dd></dl>
</div>
</div>
<a id="a6922b9ce602af99c7d51080d3bf87f47"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6922b9ce602af99c7d51080d3bf87f47">&#9670;&nbsp;</a></span>getPath()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">string PointBase::getPath </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>y</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>returns the path of a point specified by x and y values </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">x</td><td>- x-value of the point </td></tr>
<tr><td class="paramname">y</td><td>- y-value of the point </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string - path of the point </dd></dl>
</div>
</div>
<a id="abbb9305eacd3ecc8ce9fa240b7a06fbd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbb9305eacd3ecc8ce9fa240b7a06fbd">&#9670;&nbsp;</a></span>load()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int PointBase::load </td>
<td>(</td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>path</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>load the points from a database - necessary for the offline algorithm </p>
<p>loaded points in pointbase are sorted according to X value </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">path</td><td>- location where images and their jsons are stored in string format </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>int - 0 if success, -1 if no points were loaded </dd></dl>
</div>
</div>
<a id="ac3f8de651619802cf991ea6e5f9e79d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac3f8de651619802cf991ea6e5f9e79d9">&#9670;&nbsp;</a></span>onlineStitch()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void PointBase::onlineStitch </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>imgW</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>imgH</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>path</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>online image stitching using pattern matching </p>
<p>saves the result image to the current directory</p>
<p>do not <a class="el" href="classPointBase.html#abbb9305eacd3ecc8ce9fa240b7a06fbd" title="load the points from a database - necessary for the offline algorithm">load()</a> any database previous to using this function</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">imgW</td><td>source image width </td></tr>
<tr><td class="paramname">imgH</td><td>source image height </td></tr>
<tr><td class="paramname">path</td><td>path to the images </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a55dc1ba70c1fcb5e769acb84c0cdf1b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a55dc1ba70c1fcb5e769acb84c0cdf1b8">&#9670;&nbsp;</a></span>onlineStitchSIFT()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void PointBase::onlineStitchSIFT </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>imgW</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>imgH</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">string&#160;</td>
<td class="paramname"><em>path</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>online image stitching using SIFT </p>
<p>saves the result image to the current directory</p>
<p>do not <a class="el" href="classPointBase.html#abbb9305eacd3ecc8ce9fa240b7a06fbd" title="load the points from a database - necessary for the offline algorithm">load()</a> any database previous to using this function</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">imgW</td><td>source image width </td></tr>
<tr><td class="paramname">imgH</td><td>source image height </td></tr>
<tr><td class="paramname">path</td><td>path to the images </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a79819eaffd93c2cf34e9ba0e8b1c07df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a79819eaffd93c2cf34e9ba0e8b1c07df">&#9670;&nbsp;</a></span>patternMatchTry()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void PointBase::patternMatchTry </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>imgW</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>imgH</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>stitches images using pattern matching </p>
<p>saves the source image to the current directory</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">imgW</td><td>width of the source images </td></tr>
<tr><td class="paramname">imgH</td><td>height of the source images </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae8b32365bd6ecbbe1d67620287eea0f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8b32365bd6ecbbe1d67620287eea0f1">&#9670;&nbsp;</a></span>printPoints()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void PointBase::printPoints </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>which</em> = <code>0</code></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>prints the points from the database into the terminal </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">which</td><td>- if which is 0, the points vector is printed; 1 prints the complete contents of pathMap </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a536381acff1b3628b6e3c9dfe1cfbb43"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a536381acff1b3628b6e3c9dfe1cfbb43">&#9670;&nbsp;</a></span>pyramidBlend()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mat PointBase::pyramidBlend </td>
<td>(</td>
<td class="paramtype">Mat&#160;</td>
<td class="paramname"><em>roi</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Mat&#160;</td>
<td class="paramname"><em>transformedRoi</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>showImg</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>blends using image pyramids transform </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">roi</td><td>original roi with 1 or more stitched images </td></tr>
<tr><td class="paramname">transformedRoi</td><td>roi-sized! image with the new image in the appropriate location </td></tr>
<tr><td class="paramname">showImg</td><td>bool, switch to enable showing of the new roi </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Mat - the blended image </dd></dl>
</div>
</div>
<a id="a81aed98eaeca5e5ef2fcef19c3fbbb28"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81aed98eaeca5e5ef2fcef19c3fbbb28">&#9670;&nbsp;</a></span>rotate()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Mat PointBase::rotate </td>
<td>(</td>
<td class="paramtype">Mat&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>angle</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>rotation function <a href="https://stackoverflow.com/questions/22041699/rotate-an-image-without-cropping-in-opencv-in-c">https://stackoverflow.com/questions/22041699/rotate-an-image-without-cropping-in-opencv-in-c</a> </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">src</td><td>- input image </td></tr>
<tr><td class="paramname">angle</td><td>- angle in degrees </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>rotated image </dd></dl>
</div>
</div>
<a id="ab21715a437ce558b06c27a1150643487"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab21715a437ce558b06c27a1150643487">&#9670;&nbsp;</a></span>showPointImg()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void PointBase::showPointImg </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>shows the location of loaded points on an images </p>
<p>useful for debugging</p>
<p>images have to be loaded using the <a class="el" href="classPointBase.html#abbb9305eacd3ecc8ce9fa240b7a06fbd" title="load the points from a database - necessary for the offline algorithm">load()</a> function </p>
</div>
</div>
<a id="a328939beca51edba0afc28babfb01a6f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a328939beca51edba0afc28babfb01a6f">&#9670;&nbsp;</a></span>stitchImgs()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void PointBase::stitchImgs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>stitches images using opencv pipeline </p>
<p>points have to be loaded in the pointBase first</p>
<p>saves the result image in current directory </p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="ad70bad6df338bf9f89f80120a3e3a8ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad70bad6df338bf9f89f80120a3e3a8ff">&#9670;&nbsp;</a></span>doneVector</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">vector&lt;Point2d&gt; PointBase::doneVector</td>
</tr>
</table>
</div><div class="memdoc">
<p>points that have been successfully searched for adjacencies <br />
</p>
</div>
</div>
<a id="a99f91cd4485a3cb125c238cc122e7958"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99f91cd4485a3cb125c238cc122e7958">&#9670;&nbsp;</a></span>imgHeightDeg</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double PointBase::imgHeightDeg</td>
</tr>
</table>
</div><div class="memdoc">
<p>image height in sensor format </p>
</div>
</div>
<a id="af29ebdc02fc7f9feec14952e8d6ae244"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af29ebdc02fc7f9feec14952e8d6ae244">&#9670;&nbsp;</a></span>imgWidthDeg</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double PointBase::imgWidthDeg</td>
</tr>
</table>
</div><div class="memdoc">
<p>image width in degress taken from file </p>
</div>
</div>
<a id="a57df7e36df651f12292953a639df33f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57df7e36df651f12292953a639df33f9">&#9670;&nbsp;</a></span>pathMap</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::map&lt;Point2d, string, <a class="el" href="structComparePoints.html">ComparePoints</a>&gt; PointBase::pathMap</td>
</tr>
</table>
</div><div class="memdoc">
<p>map for file paths - get the path of a file via pathMap[Point2d(x,y)] </p>
</div>
</div>
<a id="a193e388ed173116556aa33debc117dd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a193e388ed173116556aa33debc117dd1">&#9670;&nbsp;</a></span>points</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">vector&lt;Point2d&gt; PointBase::points</td>
</tr>
</table>
</div><div class="memdoc">
<p>all points - points are being removed as adjacencies are found </p>
</div>
</div>
<a id="aa8c85601930fe4db42dd6dd0a8e5c13c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8c85601930fe4db42dd6dd0a8e5c13c">&#9670;&nbsp;</a></span>toDoVector</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">vector&lt;Point2d&gt; PointBase::toDoVector</td>
</tr>
</table>
</div><div class="memdoc">
<p>points yet to be searched for adjacent points </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="pointbase_8cpp.html">pointbase.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>