<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.cuvilib.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ghazanfar</id>
	<title>CUVI Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cuvilib.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ghazanfar"/>
	<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php/Special:Contributions/Ghazanfar"/>
	<updated>2026-08-16T00:46:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:FftShift&amp;diff=859</id>
		<title>Function:FftShift</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:FftShift&amp;diff=859"/>
		<updated>2014-06-18T06:50:24Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Repositions the quadrants of the fft image, so that the zero frequency components of the fft are at the center of the image. This is useful for visualizing the Fouri...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Repositions the quadrants of the fft image, so that the zero frequency components of the fft are at the center of the image. This is useful for visualizing the Fourier transform.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus fftShift(const CuviImage&amp;amp; src,&lt;br /&gt;
                    CuviImage&amp;amp; dst,&lt;br /&gt;
                    const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output image with diagonal quadrants swapped&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 32f&lt;br /&gt;
| 32f&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating GPU images&lt;br /&gt;
CuviImage input = cuvi:io::loadImage(path), fftImage, fftShifted;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
//Computing the Fourier Transform&lt;br /&gt;
cuvi::imageTransforms::fft2(input,fftImage);&lt;br /&gt;
&lt;br /&gt;
//Shift the fft&lt;br /&gt;
cuvi::imageTransforms::fftShift(fftImage, fftShifted);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:FftGetProperty&amp;diff=858</id>
		<title>Function:FftGetProperty</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:FftGetProperty&amp;diff=858"/>
		<updated>2014-06-18T06:41:10Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Gets different properties of fft of an image. ===Function=== {| |style=&amp;quot;font-size:150%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus fftGetProperty(const CuviImage&amp;amp; src...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Gets different properties of fft of an image.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus fftGetProperty(const CuviImage&amp;amp; src,&lt;br /&gt;
                          CuviImage&amp;amp; dst,&lt;br /&gt;
                          const CuviFFTProp prop,&lt;br /&gt;
                          const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input FFT image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output image containing the specified property&lt;br /&gt;
|-&lt;br /&gt;
| prop&lt;br /&gt;
| const CuviFFTProp&lt;br /&gt;
| The property of FFT to get.&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 32fC2&lt;br /&gt;
| 32fC1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating GPU images&lt;br /&gt;
CuviImage input = cuvi:io::loadImage(path), fftImage, magnitude;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
//Computing the Fourier Transform&lt;br /&gt;
cuvi::imageTransforms::fft2(input,fftImage);&lt;br /&gt;
&lt;br /&gt;
//Compute the magnitude of fft&lt;br /&gt;
cuvi::imageTransforms::fftGetProperty(fftImage, magnitude, CUVI_FFT_MAGNITUDE);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Fft2&amp;diff=857</id>
		<title>Function:Fft2</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Fft2&amp;diff=857"/>
		<updated>2014-06-18T06:30:33Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Computes the 2D Fast Fourier Transform of the input image.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus fft2(const CuviImage&amp;amp; src,&lt;br /&gt;
                CuviImage&amp;amp; dst,&lt;br /&gt;
                const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 32fC2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating GPU images&lt;br /&gt;
CuviImage gimg = cuvi:io::loadImage(path), gout;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
//Computing the Fourier Transform&lt;br /&gt;
cuvi::imageTransforms::fft2(gimg,gout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:CuviMotionEstimator&amp;diff=856</id>
		<title>Function:CuviMotionEstimator</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:CuviMotionEstimator&amp;diff=856"/>
		<updated>2014-06-17T11:21:25Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;===CuviMotionEstimator=== A class to estimate translation motion between 2 frames. * CuviMotionEstimator() - Default constructor. Creates empty CuviMotionEstimator object. * C...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CuviMotionEstimator===&lt;br /&gt;
A class to estimate translation motion between 2 frames.&lt;br /&gt;
* CuviMotionEstimator() - Default constructor. Creates empty CuviMotionEstimator object.&lt;br /&gt;
* CuviMotionEstimator(CuviMotionModel model = CUVI_MOTION_DEFAULT) - Creates a CuviMotionEstimator object to estimate the specified type of motion. Currently, only translation motion is supported.&lt;br /&gt;
* ~CuviMotionEstimator() - Destructor.&lt;br /&gt;
* CuviStatus estimate(const CuviImage&amp;amp; frame0, const CuviImage&amp;amp; frame1, Theta&amp;amp; motion) const; - Estimate the global motion vector between 2 frames.&lt;br /&gt;
  {|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   ! Name	&lt;br /&gt;
   ! Type	&lt;br /&gt;
   ! Description&lt;br /&gt;
   |-&lt;br /&gt;
   | frame0&lt;br /&gt;
   | const CuviImage&amp;amp;&lt;br /&gt;
   | First input frame&lt;br /&gt;
   |-&lt;br /&gt;
   | frame1&lt;br /&gt;
   | const CuviImage&amp;amp;&lt;br /&gt;
   | Second input frame&lt;br /&gt;
   |-&lt;br /&gt;
   | motion&lt;br /&gt;
   | Theta&amp;amp;&lt;br /&gt;
   | Output global motion vector&lt;br /&gt;
   |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Create CuviMotionEstimator object&lt;br /&gt;
cuvi::videostab::CuviMotionEstimator estimator;&lt;br /&gt;
&lt;br /&gt;
//Load images&lt;br /&gt;
CuviImage first = cuvi::io::loadImage(path, CUVI_LOAD_IMAGE_COLOR);&lt;br /&gt;
CuviImage second = cuvi::io::loadImage(path, CUVI_LOAD_IMAGE_COLOR);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
cuvi::videostab::Theta theta;&lt;br /&gt;
&lt;br /&gt;
estimator.estimate(first, second, theta);&lt;br /&gt;
&lt;br /&gt;
std::cout&amp;lt;&amp;lt;&amp;quot;Dx = &amp;quot;&amp;lt;&amp;lt;theta.dx()&amp;lt;&amp;lt;&amp;quot;\nDy = &amp;quot;&amp;lt;&amp;lt;theta.dy()&amp;lt;&amp;lt;std::endl;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:CuviVideoStabilizer&amp;diff=855</id>
		<title>Function:CuviVideoStabilizer</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:CuviVideoStabilizer&amp;diff=855"/>
		<updated>2014-06-17T11:02:58Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CuviVideoStabilizer===&lt;br /&gt;
A class to perform stabilization of a video file&lt;br /&gt;
* CuviVideoStabilizer() - Default constructor. Creates empty CuviVideoStabilizer object.&lt;br /&gt;
* CuviVideoStabilizer(const std::string&amp;amp; path, CuviMotionModel model = CUVI_MOTION_DEFAULT) - Creates a CuviVideoStabilizer object from the specified video file. Calls create.&lt;br /&gt;
* ~CuviVideoStabilizer() - Destructor. Calls release.&lt;br /&gt;
* CuviStatus create(const std::string&amp;amp; path, CuviMotionModel model = CUVI_MOTION_DEFAULT) - Creates a CuviVideoStabilizer object from the specified video file.&lt;br /&gt;
  {|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   ! Name	&lt;br /&gt;
   ! Type	&lt;br /&gt;
   ! Description&lt;br /&gt;
   |-&lt;br /&gt;
   | path&lt;br /&gt;
   | const std::string&amp;amp;&lt;br /&gt;
   | Path of the input video file&lt;br /&gt;
   |-&lt;br /&gt;
   | model&lt;br /&gt;
   | CuviMotionModel&lt;br /&gt;
   | Type of motion to compensate.&lt;br /&gt;
   |}&lt;br /&gt;
* void release(). Frees the CuviVideoStabilizer object.&lt;br /&gt;
* CuviStatus getNextStabilizedFrame(CuviImage&amp;amp; stabilized) const; - Stabilize and return the next video frame.&lt;br /&gt;
  {|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   ! Name	&lt;br /&gt;
   ! Type	&lt;br /&gt;
   ! Description&lt;br /&gt;
   |-&lt;br /&gt;
   | stabilized&lt;br /&gt;
   | CuviImage&amp;amp;&lt;br /&gt;
   | Output stabilized frame.&lt;br /&gt;
   |}&lt;br /&gt;
* Cuvi32s width() const; - Returns width of the video frame.&lt;br /&gt;
* Cuvi32s height() const; - Returns height of the video frame.&lt;br /&gt;
* Cuvi32s numFrames() const; - Returns number of frames in the video.&lt;br /&gt;
* Cuvi64f fps() const; - Returns frame rate of the video.&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating Video Stabilizer Object&lt;br /&gt;
CuviVideoStabilizer stabilizer(path);&lt;br /&gt;
&lt;br /&gt;
CuviImage stabilized;&lt;br /&gt;
&lt;br /&gt;
//Loop over all frames and visualize the stabilized video&lt;br /&gt;
for(int i=0; i&amp;lt;stab.numFrames(); i++)&lt;br /&gt;
{&lt;br /&gt;
    stabilizer.getNextStabilizedFrame(stabilized);&lt;br /&gt;
&lt;br /&gt;
    cuvi::showImage(&amp;quot;Stabilized Video&amp;quot;, stabilized);&lt;br /&gt;
    cuvi::waitKeyPress(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:CuviVideoStabilizer&amp;diff=854</id>
		<title>Function:CuviVideoStabilizer</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:CuviVideoStabilizer&amp;diff=854"/>
		<updated>2014-06-17T10:54:55Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CuviVideoStabilizer===&lt;br /&gt;
A class to perform stabilization of a video file&lt;br /&gt;
* CuviVideoStabilizer() - Default constructor. Creates empty CuviVideoStabilizer object.&lt;br /&gt;
* CuviVideoStabilizer(const std::string&amp;amp; path, CuviMotionModel model = CUVI_MOTION_DEFAULT) - Creates a CuviVideoStabilizer object from the specified video file. Calls create.&lt;br /&gt;
* ~CuviVideoStabilizer() - Destructor. Calls release.&lt;br /&gt;
* CuviStatus create(const std::string&amp;amp; path, CuviMotionModel model = CUVI_MOTION_DEFAULT) - Creates a CuviVideoStabilizer object from the specified video file.&lt;br /&gt;
  {|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   ! Name	&lt;br /&gt;
   ! Type	&lt;br /&gt;
   ! Description&lt;br /&gt;
   |-&lt;br /&gt;
   | path&lt;br /&gt;
   | const std::string&amp;amp;&lt;br /&gt;
   | Path of the input video file&lt;br /&gt;
   |-&lt;br /&gt;
   | model&lt;br /&gt;
   | CuviMotionModel&lt;br /&gt;
   | Type of motion to compensate.&lt;br /&gt;
   |}&lt;br /&gt;
* void release(). Frees the CuviVideoStabilizer object.&lt;br /&gt;
* CuviStatus getNextStabilizedFrame(CuviImage&amp;amp; stabilized) const; - Stabilize and return the next video frame.&lt;br /&gt;
  {|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   ! Name	&lt;br /&gt;
   ! Type	&lt;br /&gt;
   ! Description&lt;br /&gt;
   |-&lt;br /&gt;
   | stabilized&lt;br /&gt;
   | CuviImage&amp;amp;&lt;br /&gt;
   | Output stabilized frame.&lt;br /&gt;
   |}&lt;br /&gt;
* Cuvi32s width() const; - Returns width of the video frame.&lt;br /&gt;
* Cuvi32s height() const; - Returns height of the video frame.&lt;br /&gt;
* Cuvi32s numFrames() const; - Returns number of frames in the video.&lt;br /&gt;
* Cuvi64f fps() const; - Returns frame rate of the video.&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating Video Stabilizer Object&lt;br /&gt;
CuviVideoStabilizer stabilizer(path);&lt;br /&gt;
&lt;br /&gt;
CuviImage stabilized;&lt;br /&gt;
&lt;br /&gt;
//Loop over all frames and visualize the stabilized video&lt;br /&gt;
for(int i=0; i&amp;lt;stab.numFrames(); i++)&lt;br /&gt;
{&lt;br /&gt;
    stabilizer.getNextStabilizedFrame(stabilized);&lt;br /&gt;
&lt;br /&gt;
    cuvi::showImage(window, stabilized);&lt;br /&gt;
    cuvi::waitKeyPress(10);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:CuviVideoStabilizer&amp;diff=853</id>
		<title>Function:CuviVideoStabilizer</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:CuviVideoStabilizer&amp;diff=853"/>
		<updated>2014-06-17T10:46:36Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CuviVideoStabilizer===&lt;br /&gt;
A class to perform stabilization of a video file&lt;br /&gt;
* CuviVideoStabilizer() - Default constructor. Creates empty CuviVideoStabilizer object.&lt;br /&gt;
* CuviVideoStabilizer(const std::string&amp;amp; path, CuviMotionModel model = CUVI_MOTION_DEFAULT) - Creates a CuviVideoStabilizer object from the specified video file. Calls create.&lt;br /&gt;
* ~CuviVideoStabilizer() - Destructor. Calls release.&lt;br /&gt;
* CuviStatus create(const std::string&amp;amp; path, CuviMotionModel model = CUVI_MOTION_DEFAULT) - Creates a CuviVideoStabilizer object from the specified video file.&lt;br /&gt;
  {|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   ! Name	&lt;br /&gt;
   ! Type	&lt;br /&gt;
   ! Description&lt;br /&gt;
   |-&lt;br /&gt;
   | path&lt;br /&gt;
   | const std::string&amp;amp;&lt;br /&gt;
   | Path of the input video file&lt;br /&gt;
   |-&lt;br /&gt;
   | model&lt;br /&gt;
   | CuviMotionModel&lt;br /&gt;
   | Type of motion to compensate.&lt;br /&gt;
   |}&lt;br /&gt;
* void release(). Frees the CuviVideoStabilizer object.&lt;br /&gt;
* CuviStatus getNextStabilizedFrame(CuviImage&amp;amp; stabilized) const; - Stabilize and return the next video frame.&lt;br /&gt;
  {|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   ! Name	&lt;br /&gt;
   ! Type	&lt;br /&gt;
   ! Description&lt;br /&gt;
   |-&lt;br /&gt;
   | stabilized&lt;br /&gt;
   | CuviImage&amp;amp;&lt;br /&gt;
   | Output stabilized frame.&lt;br /&gt;
   |}&lt;br /&gt;
* Cuvi32s width() const; - Returns width of the video frame.&lt;br /&gt;
* Cuvi32s height() const; - Returns height of the video frame.&lt;br /&gt;
* Cuvi32s numFrames() const; - Returns number of frames in the video.&lt;br /&gt;
* Cuvi64f fps() const; - Returns frame rate of the video.&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:CuviVideoStabilizer&amp;diff=852</id>
		<title>Function:CuviVideoStabilizer</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:CuviVideoStabilizer&amp;diff=852"/>
		<updated>2014-06-17T10:21:57Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;===CuviVideoStabilizer=== A class to perform stabilization of a video file * CuviVideoStabilizer(); - Default constructor. Creates empty CuviVideoStabilizer object.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CuviVideoStabilizer===&lt;br /&gt;
A class to perform stabilization of a video file&lt;br /&gt;
* CuviVideoStabilizer(); - Default constructor. Creates empty CuviVideoStabilizer object.&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Fft2&amp;diff=851</id>
		<title>Function:Fft2</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Fft2&amp;diff=851"/>
		<updated>2014-06-16T07:37:51Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Computes the 2D Fast Fourier Transform of the input image. ===Function=== {| |style=&amp;quot;font-size:150%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus fft2(const CuviImage&amp;amp; ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Computes the 2D Fast Fourier Transform of the input image.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus fft2(const CuviImage&amp;amp; src,&lt;br /&gt;
                CuviImage&amp;amp; dst,&lt;br /&gt;
                const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 32fC1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating GPU images&lt;br /&gt;
CuviImage gimg = cuvi:io::loadImage(path), gout;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
//Computing the Fourier Transform&lt;br /&gt;
cuvi::imageTransforms::fft2(gimg,gout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Resize&amp;diff=850</id>
		<title>Function:Resize</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Resize&amp;diff=850"/>
		<updated>2014-06-16T07:10:30Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Re-sizes input image to fit into the output image size.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus resize(const CuviImage&amp;amp; src,&lt;br /&gt;
                  CuviImage&amp;amp; dst, &lt;br /&gt;
                  CuviInterpolationType inter = CUVI_INTER_LINEAR,&lt;br /&gt;
                  const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output Image&lt;br /&gt;
|-&lt;br /&gt;
| inter&lt;br /&gt;
| CuviInterpolationType&lt;br /&gt;
| Type of interpolation to use for re-sizing. Supports: &lt;br /&gt;
{|&lt;br /&gt;
|CUVI_INTER_NN&lt;br /&gt;
|- &lt;br /&gt;
|CUVI_INTER_LINEAR&lt;br /&gt;
|- &lt;br /&gt;
|CUVI_INTER_CUBIC&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| stream&lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
|-&lt;br /&gt;
| 32fC1&lt;br /&gt;
| 32fC1&lt;br /&gt;
|-&lt;br /&gt;
| 32fC3&lt;br /&gt;
| 32fC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Samples===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Resizein1.jpg|frame|Input Image (Width = W, Height = H)]]&lt;br /&gt;
|[[File:Resizeout1.jpg|frame| Resized Image (width =0.78625*W, height= 0.78625*H)]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Resizein2.jpg|frame|Input Image (Width = W, Height = H)]]&lt;br /&gt;
|[[File:Resizeout2.jpg|frame| Resized Image (width = 1.2*W, height= 1.75*H)]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviImage gimg = cuvi::io::loadImage(path);&lt;br /&gt;
&lt;br /&gt;
const Cuvi32f xScale = 0.5f, yScale = 0.7f;&lt;br /&gt;
&lt;br /&gt;
const Cuvi32s newWidth = static_cast&amp;lt;Cuvi32s&amp;gt;(gimg.width() * xScale);&lt;br /&gt;
const Cuvi32s newHeight = static_cast&amp;lt;Cuvi32s&amp;gt;(gimg.height() * yScale);&lt;br /&gt;
&lt;br /&gt;
CuviImage gout(newWidth,newHeight,gimg.type());&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Re-sizing input image to fit output container using bicubic interpolation&lt;br /&gt;
cuvi::geometryTransforms::resize(gimg,gout, CUVI_INTER_CUBIC);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Resize&amp;diff=849</id>
		<title>Function:Resize</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Resize&amp;diff=849"/>
		<updated>2014-06-16T07:09:19Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Re-sizes input image to fit into the output image size.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus resize(const CuviImage&amp;amp; src,&lt;br /&gt;
                  CuviImage&amp;amp; dst, &lt;br /&gt;
                  CuviInterpolationType inter = CUVI_INTER_LINEAR,&lt;br /&gt;
                  const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output Image&lt;br /&gt;
|-&lt;br /&gt;
| inter&lt;br /&gt;
| CuviInterpolationType&lt;br /&gt;
| Type of interpolation to use for re-sizing&lt;br /&gt;
| Supports: &lt;br /&gt;
{|&lt;br /&gt;
|CUVI_INTER_NN&lt;br /&gt;
|- &lt;br /&gt;
|CUVI_INTER_LINEAR&lt;br /&gt;
|- &lt;br /&gt;
|CUVI_INTER_CUBIC&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| stream&lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
|-&lt;br /&gt;
| 32fC1&lt;br /&gt;
| 32fC1&lt;br /&gt;
|-&lt;br /&gt;
| 32fC3&lt;br /&gt;
| 32fC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Samples===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Resizein1.jpg|frame|Input Image (Width = W, Height = H)]]&lt;br /&gt;
|[[File:Resizeout1.jpg|frame| Resized Image (width =0.78625*W, height= 0.78625*H)]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Resizein2.jpg|frame|Input Image (Width = W, Height = H)]]&lt;br /&gt;
|[[File:Resizeout2.jpg|frame| Resized Image (width = 1.2*W, height= 1.75*H)]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviImage gimg = cuvi::io::loadImage(path);&lt;br /&gt;
&lt;br /&gt;
const Cuvi32f xScale = 0.5f, yScale = 0.7f;&lt;br /&gt;
&lt;br /&gt;
const Cuvi32s newWidth = static_cast&amp;lt;Cuvi32s&amp;gt;(gimg.width() * xScale);&lt;br /&gt;
const Cuvi32s newHeight = static_cast&amp;lt;Cuvi32s&amp;gt;(gimg.height() * yScale);&lt;br /&gt;
&lt;br /&gt;
CuviImage gout(newWidth,newHeight,gimg.type());&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Re-sizing input image to fit output container using bicubic interpolation&lt;br /&gt;
cuvi::geometryTransforms::resize(gimg,gout, CUVI_INTER_CUBIC);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:TrackFeatures&amp;diff=848</id>
		<title>Function:TrackFeatures</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:TrackFeatures&amp;diff=848"/>
		<updated>2014-06-16T06:50:54Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
CUVI Feature tracker tracks input features from frame 1 onto frame 2. The function is ideal for tracking selected number of features through an image sequence or a video stream. This is a custom algorithm and does not use optical flows to estimate motion. Check out Motion Estimate section for more details on Optical Flow based motion tracking.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus trackFeatures(const CuviImage&amp;amp; previous,&lt;br /&gt;
                         const CuviImage&amp;amp; next,&lt;br /&gt;
                         CuviPointValue2D&amp;lt;Cuvi32f,Cuvi32f&amp;gt;* inputFeatures,&lt;br /&gt;
                         CuviPointValue2D&amp;lt;Cuvi32f,Cuvi32f&amp;gt;*&amp;amp; trackedFeatures,&lt;br /&gt;
                         const Cuvi32s featureCount,&lt;br /&gt;
                         CuviTrackingCriteria criteria,&lt;br /&gt;
                         const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| previous&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| The first image whose features are to be tracked&lt;br /&gt;
|-&lt;br /&gt;
| next&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Second image, in which to look for features of first image&lt;br /&gt;
|-&lt;br /&gt;
| inputFeatures&lt;br /&gt;
| CuviPointValue2D&amp;lt;Cuvi32f,Cuvi32f&amp;gt;*&lt;br /&gt;
| Feature of first image&lt;br /&gt;
|-&lt;br /&gt;
| trackedFeatures&lt;br /&gt;
| CuviPointValue2D&amp;lt;Cuvi32f,Cuvi32f&amp;gt;*&amp;amp;&lt;br /&gt;
| Output feature list containing the location of tracked features from first image onto second image&lt;br /&gt;
|-&lt;br /&gt;
| featureCount&lt;br /&gt;
| const Cuvi32s&lt;br /&gt;
| Number of features to track&lt;br /&gt;
|-&lt;br /&gt;
| criteria&lt;br /&gt;
| CuviFeaturesCriteria&lt;br /&gt;
| A structure containing various parameters that affect feature tracking behavior &lt;br /&gt;
|-&lt;br /&gt;
| stream&lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| CuviPointValue2D&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Samples===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Frame0.jpg|frame]]&lt;br /&gt;
|[[File:Frame1.jpg|frame|]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Image size&lt;br /&gt;
CuviSize size = cuviSize(img1-&amp;gt;width,img1-&amp;gt;height);&lt;br /&gt;
&lt;br /&gt;
//Create two 8-bit Grays-scale CuviImage objects&lt;br /&gt;
CuviImage gimg1 = cuvi::io::loadImage(path, CUVI_LOAD_IMAGE_GRAYSCALE);&lt;br /&gt;
CuviImage gimg2 = cuvi::io::loadImage(path, CUVI_LOAD_IMAGE_GRAYSCALE);&lt;br /&gt;
&lt;br /&gt;
CuviPointValue2D* features1, *features2;&lt;br /&gt;
&lt;br /&gt;
//selection and tracking criteria&lt;br /&gt;
CuviFeaturesCriteria fc(CUVI_FEATURES_HARRIS,0.006f,22);&lt;br /&gt;
CuviTrackingCriteria tc(2,CuviSize(12,12),15,10.0f);&lt;br /&gt;
&lt;br /&gt;
//ROI for selection&lt;br /&gt;
CuviRect roi(0,0,gimg1.width(),gimg1.height());&lt;br /&gt;
&lt;br /&gt;
int featureCount = 50;&lt;br /&gt;
&lt;br /&gt;
//Select Features&lt;br /&gt;
cuvi::computerVision::goodFeaturesToTrack(gimg1,roi,features1,featureCount,fc);&lt;br /&gt;
&lt;br /&gt;
//Track the selected features from first frame onto second frame&lt;br /&gt;
cuvi::computerVision::trackFeatures(gimg1,gimg2,features1,features2,featureCount,tc);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:YUV2RGB&amp;diff=847</id>
		<title>Function:YUV2RGB</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:YUV2RGB&amp;diff=847"/>
		<updated>2014-06-16T06:38:26Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Convert YUV color model to an RGB image&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus yuv2rgb(const CuviImage&amp;amp; src,&lt;br /&gt;
                   CuviImage&amp;amp; dst,&lt;br /&gt;
                   const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input YUV image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output RGB image&lt;br /&gt;
|-&lt;br /&gt;
| stream&lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:YUV_RGB_In.jpg|frame|YUV Image]]&lt;br /&gt;
|[[File:YUV_RGB_Out.jpg|frame|RGB Image]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviImage input = cuvi::io::loadImage(path), output;&lt;br /&gt;
&lt;br /&gt;
//Convert YUV image to RGB&lt;br /&gt;
cuvi::colorOperations::yuv2rgb(input,output);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:RGB2Gray&amp;diff=846</id>
		<title>Function:RGB2Gray</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:RGB2Gray&amp;diff=846"/>
		<updated>2014-06-16T06:34:26Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Converts an RGB image to gray scale using fixed or custom transform coefficients&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus rgb2gray(const CuviImage&amp;amp; src,&lt;br /&gt;
                    CuviImage&amp;amp; dst,&lt;br /&gt;
                    const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&lt;br /&gt;
CuviStatus rgb2gray(const CuviImage&amp;amp; src,&lt;br /&gt;
                    CuviImage&amp;amp; dst,&lt;br /&gt;
                    const CuviScalar&amp;amp; coeffs,&lt;br /&gt;
                    const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Input 3 channel image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output single channel image&lt;br /&gt;
|-&lt;br /&gt;
| coeffs&lt;br /&gt;
| CuviScalar&amp;amp;&lt;br /&gt;
| Custom transformation coefficients&lt;br /&gt;
|-&lt;br /&gt;
| stream&lt;br /&gt;
| CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 32fC3&lt;br /&gt;
| 32fC1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:ColoIn.jpg|frame|Color Image]]&lt;br /&gt;
|[[File:RGB2GrayOut.jpg|frame|Output Gray Image]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviImage gimg = cuvi::io::loadImage(path), gout;&lt;br /&gt;
&lt;br /&gt;
//Convert to gray-scale using standard coefficients&lt;br /&gt;
cuvi::colorOperations::rgb2gray(gimg,gout);&lt;br /&gt;
&lt;br /&gt;
//Convert to gray-scale using custom coefficients&lt;br /&gt;
CuviScalar coeffs(0.33, 0.33, 0.33);&lt;br /&gt;
cuvi::colorOperations::rgb2gray(gimg,gout, coeffs);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:LUT&amp;diff=845</id>
		<title>Function:LUT</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:LUT&amp;diff=845"/>
		<updated>2014-06-16T06:21:56Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Remaps image values according to look up table.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviStatus LUT(const CuviImage&amp;amp; src,&lt;br /&gt;
               const CuviImage&amp;amp; mapping,&lt;br /&gt;
               CuviImage&amp;amp; dst,&lt;br /&gt;
               const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| mapping&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| The look-up table&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant Image&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input 1&lt;br /&gt;
! Input 2&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8u&lt;br /&gt;
| 8u&lt;br /&gt;
| 8u&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviImage input = cuvi::io::loadImage(path), output;&lt;br /&gt;
&lt;br /&gt;
//Create LUT on host&lt;br /&gt;
const int mappingSize = 256;&lt;br /&gt;
&lt;br /&gt;
unsigned char mappingValues[mappingSize];&lt;br /&gt;
&lt;br /&gt;
//Initialize LUT with values which invert the image values&lt;br /&gt;
for(int i=0; i&amp;lt;mappingSize; i++)&lt;br /&gt;
    mappingValues[i] = 255 - i;&lt;br /&gt;
&lt;br /&gt;
//Create and upload LUT matrix on device&lt;br /&gt;
CuviImage mapping(mappingSize,1, CUVI_8UC1);&lt;br /&gt;
mapping.upload(mappingValues, sizeof(mappingValues));&lt;br /&gt;
&lt;br /&gt;
cuvi::colorOperations::LUT( input, mapping, output );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Demosaic&amp;diff=844</id>
		<title>Function:Demosaic</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Demosaic&amp;diff=844"/>
		<updated>2014-06-16T06:15:26Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Image Type Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Restores an RGB image from a gray-scale CFA image using Bayer algorithm&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus demosaic(const CuviImage&amp;amp; src,&lt;br /&gt;
                    CuviImage&amp;amp; dst,&lt;br /&gt;
                    const CuviBayerSeq sensorAlignment,&lt;br /&gt;
                    const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Bayer Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output RGB Image&lt;br /&gt;
|-&lt;br /&gt;
| sensorAlignment&lt;br /&gt;
| CuviBayerSeq&lt;br /&gt;
| Sensor alignment of the bayer image&lt;br /&gt;
|-&lt;br /&gt;
| stream&lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:BayerHolidayIn.png|frame|Input]]&lt;br /&gt;
|[[File:BayerHolidayOut.png|frame|Output]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:BayerHouseIn.png|frame|Input]]&lt;br /&gt;
|[[File:BayerHouseOut.png|frame|Output]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Example using C&lt;br /&gt;
&lt;br /&gt;
CuviImage gimg = cuvi::io::loadImage(path,CUVI_LOAD_IMAGE_GRAYSCALE_KEEP_DEPTH), gout;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Demosaic &lt;br /&gt;
cuvi::colorOperations::demosaic(gimg,gout,CUVI_BAYER_BGGR);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:ChannelSplit&amp;diff=843</id>
		<title>Function:ChannelSplit</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:ChannelSplit&amp;diff=843"/>
		<updated>2014-06-16T06:10:17Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Splits a three channel image into R, G and B channels&lt;br /&gt;
&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus channelSplit(const CuviImage&amp;amp; src,&lt;br /&gt;
                        CuviImage&amp;amp; red,&lt;br /&gt;
                        CuviImage&amp;amp; green,&lt;br /&gt;
                        CuviImage&amp;amp; blue,&lt;br /&gt;
                        const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| 3-channel input Image&lt;br /&gt;
|-&lt;br /&gt;
| red&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output red channel image&lt;br /&gt;
|-&lt;br /&gt;
| green&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output green channel image&lt;br /&gt;
|-&lt;br /&gt;
| blue&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output blue channel image&lt;br /&gt;
|-&lt;br /&gt;
| stream&lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC1 x 3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC1 x 3&lt;br /&gt;
|-&lt;br /&gt;
| 32fC3&lt;br /&gt;
| 32fC1 x 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Splitin.jpg|frame|Input Image]]&lt;br /&gt;
|[[File:Splitred.jpg|frame|Red Channel]]&lt;br /&gt;
|[[File:Splitgreen.jpg|frame|Green Channel]]&lt;br /&gt;
|[[File:Splitblue.jpg|frame|Blue Channel]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//A single color image&lt;br /&gt;
CuviImage gimg = cuvi::io::loadImage(path,CUVI_LOAD_IMAGE_COLOR);&lt;br /&gt;
&lt;br /&gt;
//Three single channel images for storing output&lt;br /&gt;
CuviImage gr, gg, gb;&lt;br /&gt;
&lt;br /&gt;
//Split into R, G and B channels&lt;br /&gt;
CuviStatus st = cuvi::colorOperations::channelSplit(gimg,gr,gg,gb);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:ChannelMerge&amp;diff=842</id>
		<title>Function:ChannelMerge</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:ChannelMerge&amp;diff=842"/>
		<updated>2014-06-16T06:09:04Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Merges R, G and B Channel to form a color image&lt;br /&gt;
&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus channelMerge(const CuviImage&amp;amp; red,&lt;br /&gt;
                        const CuviImage&amp;amp; green,&lt;br /&gt;
                        const CuviImage&amp;amp; blue,&lt;br /&gt;
                        CuviImage&amp;amp; dst,&lt;br /&gt;
                        const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| red&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Red channel input image&lt;br /&gt;
|-&lt;br /&gt;
| green&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Green channel input image&lt;br /&gt;
|-&lt;br /&gt;
| blue&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Blue channel input image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| 3-channel output Image&lt;br /&gt;
|-&lt;br /&gt;
| stream&lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1 x 3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1 x 3&lt;br /&gt;
| 16uC3&lt;br /&gt;
|-&lt;br /&gt;
| 32fC1 x 3&lt;br /&gt;
| 32fC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Splitred.jpg|frame|Red Channel]]&lt;br /&gt;
|[[File:Splitgreen.jpg|frame|Green Channel]]&lt;br /&gt;
|[[File:Splitblue.jpg|frame|Blue Channel]]&lt;br /&gt;
|[[File:Splitin.jpg|frame|Output Image]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Three single channel images&lt;br /&gt;
CuviImage gr = cuvi::io::loadImage(path,CUVI_LOAD_IMAGE_GRAYSCALE);&lt;br /&gt;
CuviImage gg = cuvi::io::loadImage(path,CUVI_LOAD_IMAGE_GRAYSCALE);&lt;br /&gt;
CuviImage gb = cuvi::io::loadImage(path,CUVI_LOAD_IMAGE_GRAYSCALE);&lt;br /&gt;
&lt;br /&gt;
//A single color image for storing output&lt;br /&gt;
CuviImage gout;&lt;br /&gt;
	&lt;br /&gt;
//Merge R, G and B images into a single colored image&lt;br /&gt;
cuvi::colorOperations::channelMerge(gr,gg,gb,gout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:BorderMask&amp;diff=841</id>
		<title>Function:BorderMask</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:BorderMask&amp;diff=841"/>
		<updated>2014-06-16T06:06:54Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Adds borders on the input specified by the 4 arguments: top, bottom, left and right..&lt;br /&gt;
&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus borderMask(const CuviImage&amp;amp; src,&lt;br /&gt;
                      CuviImage&amp;amp; dst,&lt;br /&gt;
                      const Cuvi32s top,&lt;br /&gt;
                      const Cuvi32s bottom,&lt;br /&gt;
                      const Cuvi32s left, &lt;br /&gt;
                      const Cuvi32s right,&lt;br /&gt;
                      const Cuvi32f* mask,&lt;br /&gt;
                      const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output Image&lt;br /&gt;
|-&lt;br /&gt;
| top&lt;br /&gt;
| const Cuvi32s	&lt;br /&gt;
| Number of pixels to mask from top&lt;br /&gt;
|-&lt;br /&gt;
| bottom&lt;br /&gt;
| const Cuvi32s	&lt;br /&gt;
| Number of pixels to mask from bottom&lt;br /&gt;
|-&lt;br /&gt;
| left&lt;br /&gt;
| const Cuvi32s	&lt;br /&gt;
| Number of pixels to mask from left&lt;br /&gt;
|-&lt;br /&gt;
| right&lt;br /&gt;
| const Cuvi32s	&lt;br /&gt;
| Number of pixels to mask from right&lt;br /&gt;
|-&lt;br /&gt;
| mask&lt;br /&gt;
| const Cuvi32f*&lt;br /&gt;
| Values of masked pixel for each channel&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Maskin.jpg‎|frame|Input Image]]&lt;br /&gt;
|[[File:Maskout.jpg|frame|Masked Image]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage gimg = cuvi::io::loadImage(path), gout;&lt;br /&gt;
&lt;br /&gt;
Cuvi32f mask[3] = { 0 };&lt;br /&gt;
&lt;br /&gt;
//Mask borders with pixel value of 0 for each channel&lt;br /&gt;
cuvi::colorOperations::borderMask(gimg,gout,10,10,5,3,mask);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Pow&amp;diff=840</id>
		<title>Function:Pow</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Pow&amp;diff=840"/>
		<updated>2014-06-16T05:59:55Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Image Type Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Raises each pixel of the image to the specified power.&lt;br /&gt;
&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus pow(const CuviImage&amp;amp; src,&lt;br /&gt;
	       const Cuvi32f power,&lt;br /&gt;
               CuviImage&amp;amp; dst,&lt;br /&gt;
               const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| power&lt;br /&gt;
| const Cuvi32f	&lt;br /&gt;
| Power by which each pixel would be raised.&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output Image&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 32fC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 32fC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 32fC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 32fC3&lt;br /&gt;
|-&lt;br /&gt;
| 32fC1&lt;br /&gt;
| 32fC1&lt;br /&gt;
|-&lt;br /&gt;
| 32fC3&lt;br /&gt;
| 32fC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Read an image from the disk&lt;br /&gt;
CuviImage input = cuvi::io::loadImage(path);&lt;br /&gt;
CuviImage output;&lt;br /&gt;
&lt;br /&gt;
const Cuvi32f power = 2.0f;&lt;br /&gt;
&lt;br /&gt;
//Raise the image to the specified power.&lt;br /&gt;
cuvi::arithmeticLogical::pow(input,power,output);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:NOT&amp;diff=839</id>
		<title>Function:NOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:NOT&amp;diff=839"/>
		<updated>2014-06-16T05:57:43Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Inverts the bits of each image pixel.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus NOT(const CuviImage&amp;amp; src,&lt;br /&gt;
               CuviImage&amp;amp; dst,&lt;br /&gt;
               const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:NotIn.jpg|frame|Input Image]]&lt;br /&gt;
|[[File:NotOut.jpg|frame|Negative Image]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating GPU images&lt;br /&gt;
CuviImage gimg = cuvi:io::loadImage(path), gout;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
//Computing Negative of the image&lt;br /&gt;
cuvi::arithmeticLogical::NOT(gimg,gout);&lt;br /&gt;
&lt;br /&gt;
//The same can be achieved using the ~ operator&lt;br /&gt;
gout = ~gimg;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Threshold&amp;diff=838</id>
		<title>Function:Threshold</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Threshold&amp;diff=838"/>
		<updated>2014-06-16T05:50:27Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Clamps image pixel values between specified thresholds.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus threshold(const CuviImage&amp;amp; src,&lt;br /&gt;
                     CuviImage&amp;amp; dst,&lt;br /&gt;
                     const CuviScalar&amp;amp; minThresh,&lt;br /&gt;
                     const CuviScalar&amp;amp; maxThresh,&lt;br /&gt;
                     const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
|-&lt;br /&gt;
| minThresh&lt;br /&gt;
| const CuviScalar&amp;amp;&lt;br /&gt;
| Minimum value of threshold&lt;br /&gt;
|-&lt;br /&gt;
| maxThresh&lt;br /&gt;
| const CuviScalar&amp;amp;&lt;br /&gt;
| Maximum value of threshold&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8u&lt;br /&gt;
| 8u&lt;br /&gt;
|-&lt;br /&gt;
| 16u&lt;br /&gt;
| 16u&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating GPU images&lt;br /&gt;
CuviImage gimg = cuvi:io::loadImage(path), gout;&lt;br /&gt;
&lt;br /&gt;
CuviScalar minThresh(10,20,20);&lt;br /&gt;
CuviScalar maxThresh(100,200,150);&lt;br /&gt;
&lt;br /&gt;
//Apply threshold on image pixel values&lt;br /&gt;
cuvi::dataExchange::threshold(gimg,gout,minThresh, maxThresh);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:ColorPick&amp;diff=837</id>
		<title>Function:ColorPick</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:ColorPick&amp;diff=837"/>
		<updated>2014-06-16T05:49:12Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Segments input color image by selecting a specified color. Rest of the image is converted to grayscale.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviStatus colorPick(const CuviImage&amp;amp; src,&lt;br /&gt;
                     CuviImage&amp;amp; dst,&lt;br /&gt;
                     const CuviColor color,&lt;br /&gt;
                     const Cuvi32f threshold = 128.0f,&lt;br /&gt;
                     const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
|-&lt;br /&gt;
| color&lt;br /&gt;
| CuviColor&lt;br /&gt;
| The color to select from the image&lt;br /&gt;
|-&lt;br /&gt;
| threshold&lt;br /&gt;
| Cuvi32f&lt;br /&gt;
| The threshold for color selection&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating GPU images&lt;br /&gt;
CuviImage input = cuvi:io::loadImage(path), output;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
//Select blue color from the image.&lt;br /&gt;
cuvi::colorOperations::colorPick(input,output,CUVI_COLOR_BLUE);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:MatMulTrans&amp;diff=836</id>
		<title>Function:MatMulTrans</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:MatMulTrans&amp;diff=836"/>
		<updated>2014-06-16T05:45:59Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Performs matrix multiplication with its transpose.&lt;br /&gt;
&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus matMulTrans(const CuviImage&amp;amp; A,&lt;br /&gt;
                       CuviImage&amp;amp; B,&lt;br /&gt;
                       bool trans = false,&lt;br /&gt;
                       const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| A&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| B&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant Image&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 32f single channel&lt;br /&gt;
| 32f single channel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviSize aSize(3,3);&lt;br /&gt;
&lt;br /&gt;
//Initialize input image&lt;br /&gt;
CuviImage A(aSize, CUVI_32FC1);&lt;br /&gt;
&lt;br /&gt;
//Fill image with random values&lt;br /&gt;
cuvi::dataExchange::generateRandomImage(A);&lt;br /&gt;
&lt;br /&gt;
CuviImage B;&lt;br /&gt;
&lt;br /&gt;
//Perform matrix multiplication (A * A')&lt;br /&gt;
cuvi::arithmeticLogical::matMulTrans(A,B);&lt;br /&gt;
&lt;br /&gt;
//The order of multiplication can be reversed to (A' * A)&lt;br /&gt;
cuvi::arithmeticLogical::matMulTrans(A,B,true);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Threshold&amp;diff=835</id>
		<title>Function:Threshold</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Threshold&amp;diff=835"/>
		<updated>2014-06-13T13:41:36Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Clamps image pixel values between specified thresholds. ===Function=== {| |style=&amp;quot;font-size:150%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus threshold(const CuviImage...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Clamps image pixel values between specified thresholds.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus threshold(const CuviImage&amp;amp; src,&lt;br /&gt;
                     CuviImage&amp;amp; dst,&lt;br /&gt;
                     const CuviScalar&amp;amp; minThresh,&lt;br /&gt;
                     const CuviScalar&amp;amp; maxThresh,&lt;br /&gt;
                     const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
|-&lt;br /&gt;
| minThresh&lt;br /&gt;
| const CuviScalar&amp;amp;&lt;br /&gt;
| Minimum value of threshold&lt;br /&gt;
|-&lt;br /&gt;
| maxThresh&lt;br /&gt;
| const CuviScalar&amp;amp;&lt;br /&gt;
| Maximum value of threshold&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8u&lt;br /&gt;
| 8u&lt;br /&gt;
|-&lt;br /&gt;
| 16u&lt;br /&gt;
| 16u&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating GPU images&lt;br /&gt;
CuviImage gimg = cuvi:io::loadImage(path), gout;&lt;br /&gt;
&lt;br /&gt;
CuviScalar minThresh(10,20,20);&lt;br /&gt;
CuviScalar maxThresh(100,200,150);&lt;br /&gt;
&lt;br /&gt;
//Computing exponential of image pixels&lt;br /&gt;
cuvi::dataExchange::threshold(gimg,gout,minThresh, maxThresh);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Exp&amp;diff=834</id>
		<title>Function:Exp</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Exp&amp;diff=834"/>
		<updated>2014-06-13T13:30:58Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Image Type Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Calculates exponential value of each pixel of input image.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus exp(const CuviImage&amp;amp; src,&lt;br /&gt;
               CuviImage&amp;amp; dst,&lt;br /&gt;
               const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8u&lt;br /&gt;
| 32f&lt;br /&gt;
|-&lt;br /&gt;
| 16u&lt;br /&gt;
| 32f&lt;br /&gt;
|-&lt;br /&gt;
| 32f&lt;br /&gt;
| 32f&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating GPU images&lt;br /&gt;
CuviImage gimg = cuvi:io::loadImage(path), gout;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
//Computing exponential of image pixels&lt;br /&gt;
cuvi::arithmeticLogical::exp(gimg,gout);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:ColorPick&amp;diff=833</id>
		<title>Function:ColorPick</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:ColorPick&amp;diff=833"/>
		<updated>2014-06-13T13:28:25Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Segments input color image by selecting a specified color. Rest of the image is converted to grayscale. ===Function=== {| |style=&amp;quot;font-size:150%;&amp;quot;| &amp;lt;syntaxhighlight ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Segments input color image by selecting a specified color. Rest of the image is converted to grayscale.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviStatus colorPick(const CuviImage&amp;amp; src,&lt;br /&gt;
                     CuviImage&amp;amp; dst,&lt;br /&gt;
                     const CuviColor color,&lt;br /&gt;
                     const Cuvi32f threshold = 128.0f,&lt;br /&gt;
                     const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
|-&lt;br /&gt;
| color&lt;br /&gt;
| CuviColor&lt;br /&gt;
| The color to select from the image&lt;br /&gt;
|-&lt;br /&gt;
| threshold&lt;br /&gt;
| Cuvi32f&lt;br /&gt;
| The threshold for color selection&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating GPU images&lt;br /&gt;
CuviImage gimg = cuvi:io::loadImage(path), gout;&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
//Select blue color from the image.&lt;br /&gt;
cuvi::arithmeticLogical::NOT(gimg,gout,CUVI_COLOR_BLUE);&lt;br /&gt;
&lt;br /&gt;
//The same can be achieved using the ~ operator&lt;br /&gt;
gout = ~gimg;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Image_I/O_%26_Framework&amp;diff=832</id>
		<title>Image I/O &amp; Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Image_I/O_%26_Framework&amp;diff=832"/>
		<updated>2014-06-13T13:20:22Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Methods */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Using CUVI with C++==&lt;br /&gt;
CUVI C++ interface uses various features of C++ including classes, namespaces, default arguments and overloading to provide ease of use.&lt;br /&gt;
&lt;br /&gt;
===CuviImage===&lt;br /&gt;
CuviImage is a C++ class to hold image data on the device. It has all the essential members to hold image information as well as methods to create and move image to and from device. All the C++ functions in CUVI take CuviImage as input/output image argument. CuviImage creates an image on the GPU so you do not need to cater for manually copying the image to the GPU and then back to the CPU, this is catered by CuviImage.&lt;br /&gt;
&lt;br /&gt;
CuviImage methods helps create, copy and show images.&lt;br /&gt;
====Methods====&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method		&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| CuviImage()&lt;br /&gt;
| Default constructor. Initializes all members with 0&lt;br /&gt;
|-&lt;br /&gt;
| CuviImage(const Cuvi32s width, const Cuvi32s height, const Cuvi32s depth, const Cuvi32s channels);&lt;br /&gt;
| Creates a CuviImage of specified width, height, depth and channels.&lt;br /&gt;
|-&lt;br /&gt;
| CuviImage(const CuviSize&amp;amp; size, const Cuvi32s depth, const Cuvi32s channels);&lt;br /&gt;
| Creates a CuviImage of specified size, depth and channels.&lt;br /&gt;
|-&lt;br /&gt;
| CuviImage(const CuviImage&amp;amp;);&lt;br /&gt;
| Creates a copy of existing CuviImage&lt;br /&gt;
|-&lt;br /&gt;
| CuviStatus upload(const void* pSrcHost, Cuvi32s srcPitch); &lt;br /&gt;
| Copy image data from host memory to CuviImage.&lt;br /&gt;
|-&lt;br /&gt;
| CuviStatus upload(const void* pSrcHost, Cuvi32s srcPitch, const CuviStream&amp;amp; stream); &lt;br /&gt;
| Copy image data asynchronously, from host memory to CuviImage using the specified CuviStream.&lt;br /&gt;
|-&lt;br /&gt;
| CuviStatus download(void* pDstHost, Cuvi32s dstPitch);	&lt;br /&gt;
| Copy image data from CuviImage to host memory.&lt;br /&gt;
|-&lt;br /&gt;
| CuviStatus download(void* pDstHost, Cuvi32s dstPitch, const CuviStream&amp;amp; stream);	&lt;br /&gt;
| Copy image data asynchronously,from CuviImage to host memory using the specified CuviStream.&lt;br /&gt;
|-&lt;br /&gt;
| CuviStatus show(const std::string&amp;amp; title = &amp;quot;CUVI Image&amp;quot;,Cuvi32s milliseconds = 0);&lt;br /&gt;
| Render CuviImage on screen for a specified amount of time&lt;br /&gt;
|-&lt;br /&gt;
| CuviStatus create(const Cuvi32s width, const Cuvi32s height, const Cuvi32s depth, const Cuvi32s channels);&lt;br /&gt;
| Creates a CuviImage of specified width, height, depth and channels. Used for lazy initialization of a previously declared CuviImage.&lt;br /&gt;
|-&lt;br /&gt;
| CuviStatus create(const CuviSize&amp;amp; size, const Cuvi32s depth, const Cuvi32s channels);&lt;br /&gt;
| Creates a CuviImage of specified size, depth and channels. Used for lazy initialization of a previously declared CuviImage.&lt;br /&gt;
|-&lt;br /&gt;
| CuviStatus release(); &lt;br /&gt;
| Deallocates a CuviImage object.&lt;br /&gt;
|-&lt;br /&gt;
| ~CuviImage(); &lt;br /&gt;
| CuviImage destructor. Calls release().&lt;br /&gt;
|-&lt;br /&gt;
| Cuvi32s width(); &lt;br /&gt;
| Returns the width of CuviImage in pixels.&lt;br /&gt;
|-&lt;br /&gt;
| Cuvi32s height(); &lt;br /&gt;
| Returns the height of CuviImage in pixels.&lt;br /&gt;
|-&lt;br /&gt;
| Cuvi32s depth(); &lt;br /&gt;
| Returns the depth of CuviImage.&lt;br /&gt;
|-&lt;br /&gt;
| Cuvi32s pitch(); &lt;br /&gt;
| Returns the size of a row in bytes, including the padding of the row.&lt;br /&gt;
|-&lt;br /&gt;
| Cuvi32s channels(); &lt;br /&gt;
| Returns the number of channels of the CuviImage.&lt;br /&gt;
|-&lt;br /&gt;
| CuviSize size(); &lt;br /&gt;
| Returns the size of CuviImage.&lt;br /&gt;
|-&lt;br /&gt;
| Cuvi32s dataBits(); &lt;br /&gt;
| Returns the number of actual data bits of the image.&lt;br /&gt;
|-&lt;br /&gt;
| CuviType type(); &lt;br /&gt;
| Returns the type of CuviImage, e.g. CUVI_8UC1, CUVI_8UC3.&lt;br /&gt;
|-&lt;br /&gt;
| CuviChannelSeq channelSeq(); &lt;br /&gt;
| Returns the channel sequence of the image, e.g. RGB, BGR etc.&lt;br /&gt;
|-&lt;br /&gt;
| bool isSigned(); &lt;br /&gt;
| Returns true in case of unsigned or floating point image type, else returns false.&lt;br /&gt;
|-&lt;br /&gt;
| bool isInitialized(); &lt;br /&gt;
| Returns whether the image has been initialized.&lt;br /&gt;
|-&lt;br /&gt;
| void* ptr(); &lt;br /&gt;
| Returns the GPU data pointer of the image.&lt;br /&gt;
|-&lt;br /&gt;
| T* ptr&amp;lt;T&amp;gt;(); &lt;br /&gt;
| Returns the GPU data pointer as the specified type.&lt;br /&gt;
|-&lt;br /&gt;
| void setDataBits(const Cuvi32s dataBits); &lt;br /&gt;
| Set the dataBits of the image.&lt;br /&gt;
|-&lt;br /&gt;
| void setChannelSequence(const CuviChannelSeq sequence); &lt;br /&gt;
| Set the channel sequence of the image.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====I/O using CuviImage====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:125%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;iostream&amp;gt;&lt;br /&gt;
#include&amp;lt;cuvi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    try&lt;br /&gt;
    {&lt;br /&gt;
          const char* imagePath = &amp;quot;image.jpg&amp;quot;;&lt;br /&gt;
          CuviImage input = cuvi::io::loadImage(imagePath);&lt;br /&gt;
 &lt;br /&gt;
          if(!input.isInitialized())&lt;br /&gt;
          {&lt;br /&gt;
             cout&amp;lt;&amp;lt;&amp;quot;Image Not Loaded&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;
             return -1;&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          CuviImage output;&lt;br /&gt;
&lt;br /&gt;
          cuvi::arithmeticLogical::NOT(input,output);&lt;br /&gt;
  &lt;br /&gt;
          output.show(&amp;quot;Negative Image&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
          const char* outputPath = &amp;quot;output.jpg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
          cuvi::io::saveImage(output,outputPath);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
    catch(const char* e)&lt;br /&gt;
    {&lt;br /&gt;
           cout&amp;lt;&amp;lt;&amp;quot;Error: &amp;quot;&amp;lt;&amp;lt;endl&amp;lt;&amp;lt;e&amp;lt;&amp;lt;endl;&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Namespaces===&lt;br /&gt;
CUVI is divided in image processing modules based on functionality. These modules use separate namespace in CUVI C++ interface to increase readability and ease of use. The current CUVI version has following namespaces:&lt;br /&gt;
*cuvi&lt;br /&gt;
**arithmeticLogical&lt;br /&gt;
**colorOpertions&lt;br /&gt;
**computerVision&lt;br /&gt;
**dataExchange&lt;br /&gt;
**geometryTransforms&lt;br /&gt;
**imageFiltering&lt;br /&gt;
**imageStatistics&lt;br /&gt;
**imageTransforms&lt;br /&gt;
**io&lt;br /&gt;
**device&lt;br /&gt;
**videoStab&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:PadImage&amp;diff=831</id>
		<title>Function:PadImage</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:PadImage&amp;diff=831"/>
		<updated>2014-06-13T13:15:30Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Extends image borders by padding extra values on the image boundaries.&lt;br /&gt;
&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus padImage(const CuviImage&amp;amp; src,&lt;br /&gt;
                    CuviImage&amp;amp; dst,&lt;br /&gt;
                    const Cuvi32s top,&lt;br /&gt;
                    const Cuvi32s bottom,&lt;br /&gt;
                    const Cuvi32s left, &lt;br /&gt;
                    const Cuvi32s right,&lt;br /&gt;
                    const Cuvi32f* values,&lt;br /&gt;
                    const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output Image&lt;br /&gt;
|-&lt;br /&gt;
| top&lt;br /&gt;
| const Cuvi32s	&lt;br /&gt;
| Number of pixels to pad on top&lt;br /&gt;
|-&lt;br /&gt;
| bottom&lt;br /&gt;
| const Cuvi32s	&lt;br /&gt;
| Number of pixels to pad on bottom&lt;br /&gt;
|-&lt;br /&gt;
| left&lt;br /&gt;
| const Cuvi32s	&lt;br /&gt;
| Number of pixels to pad on left&lt;br /&gt;
|-&lt;br /&gt;
| right&lt;br /&gt;
| const Cuvi32s	&lt;br /&gt;
| Number of pixels to pad on right&lt;br /&gt;
|-&lt;br /&gt;
| values&lt;br /&gt;
| const Cuvi32f*&lt;br /&gt;
| Values of padded pixels&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage gimg = cuvi::io::loadImage(path), gout;&lt;br /&gt;
&lt;br /&gt;
//Pad borders with pixel value of 0&lt;br /&gt;
Cuvi32f values[] = {0,0,0};&lt;br /&gt;
cuvi::colorOperations::padImage(gimg,gout,10,10,5,3,values);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:PadImage&amp;diff=830</id>
		<title>Function:PadImage</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:PadImage&amp;diff=830"/>
		<updated>2014-06-13T13:14:32Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Extends image borders by padding extra values on the image boundaries.  ===Function=== {| |style=&amp;quot;font-size:150%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus padImage(...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Extends image borders by padding extra values on the image boundaries.&lt;br /&gt;
&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus padImage(const CuviImage&amp;amp; src,&lt;br /&gt;
                    CuviImage&amp;amp; dst,&lt;br /&gt;
                    const Cuvi32s top,&lt;br /&gt;
                    const Cuvi32s bottom,&lt;br /&gt;
                    const Cuvi32s left, &lt;br /&gt;
                    const Cuvi32s right,&lt;br /&gt;
                    const Cuvi32f* values,&lt;br /&gt;
                    const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output Image&lt;br /&gt;
|-&lt;br /&gt;
| top&lt;br /&gt;
| const Cuvi32s	&lt;br /&gt;
| Number of pixels to pad on top&lt;br /&gt;
|-&lt;br /&gt;
| bottom&lt;br /&gt;
| const Cuvi32s	&lt;br /&gt;
| Number of pixels to pad on bottom&lt;br /&gt;
|-&lt;br /&gt;
| left&lt;br /&gt;
| const Cuvi32s	&lt;br /&gt;
| Number of pixels to pad on left&lt;br /&gt;
|-&lt;br /&gt;
| right&lt;br /&gt;
| const Cuvi32s	&lt;br /&gt;
| Number of pixels to pad on right&lt;br /&gt;
|-&lt;br /&gt;
| values&lt;br /&gt;
| const Cuvi32f*&lt;br /&gt;
| Values of padded pixels&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage gimg = cuvi::io::loadImage(path), gout;&lt;br /&gt;
&lt;br /&gt;
//Pad borders with pixel value of 0&lt;br /&gt;
Cuvi32f values[] = {0,0,0};&lt;br /&gt;
cuvi::colorOperations::borderMask(gimg,gout,10,10,5,3,values);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:CalcHist&amp;diff=829</id>
		<title>Function:CalcHist</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:CalcHist&amp;diff=829"/>
		<updated>2014-06-13T12:59:49Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Computes the histogram of input image. ===Function=== {| |style=&amp;quot;font-size:150%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;  CuviStatus calcHist(const CuviImage&amp;amp; src,           ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Computes the histogram of input image.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviStatus calcHist(const CuviImage&amp;amp; src, &lt;br /&gt;
                    CuviHistogram&amp;amp; hist, &lt;br /&gt;
                    const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| hist&lt;br /&gt;
| CuviHistogram&amp;amp;&lt;br /&gt;
| Computed histogram of input image&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| CuviHistogram&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| CuviHistogram&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage input = cuvi::io::loadImage(path);&lt;br /&gt;
&lt;br /&gt;
//Create histogram according to image type&lt;br /&gt;
CuviHistogram hist(input.type());&lt;br /&gt;
&lt;br /&gt;
//Calculate the histogram&lt;br /&gt;
cuvi::imageStatistics::calcHist(input, hist);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:CountInRange&amp;diff=828</id>
		<title>Function:CountInRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:CountInRange&amp;diff=828"/>
		<updated>2014-06-13T12:51:20Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Counts the number of pixels within the given intensity range&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus countInRange(const CuviImage&amp;amp; src,&lt;br /&gt;
                        CuviScalar&amp;amp; count,&lt;br /&gt;
                        const CuviScalar&amp;amp; rangeMin,&lt;br /&gt;
                        const CuviScalar&amp;amp; rangeMax,&lt;br /&gt;
                        const CuviStream&amp;amp; stream = NULL);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| count&lt;br /&gt;
| CuviScalar&amp;amp;&lt;br /&gt;
| Computed number of pixels within the given intensity range.&lt;br /&gt;
|-&lt;br /&gt;
| rangeMin&lt;br /&gt;
| const CuviScalar&amp;amp;&lt;br /&gt;
| Lower limit of the intensity range&lt;br /&gt;
|-&lt;br /&gt;
| rangeMax&lt;br /&gt;
| const CuviScalar&amp;amp;&lt;br /&gt;
| Upper limit of the intensity range&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 32fC1&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 32fC3&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Count.PNG]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage gimg = cuvi::io::loadImage(path);&lt;br /&gt;
&lt;br /&gt;
CuviScalar count;&lt;br /&gt;
&lt;br /&gt;
const CuviScalar lowerBound(25.0, 10.0, 10.0);&lt;br /&gt;
const CuviScalar upperBound(100.0, 200.0, 150.0);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Returns number of pixels within the given intensity range&lt;br /&gt;
cuvi::imageStatistics::countInRange(gimg, count, lowerBound, upperBound);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:CountInRange&amp;diff=827</id>
		<title>Function:CountInRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:CountInRange&amp;diff=827"/>
		<updated>2014-06-13T12:50:35Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Counts the number of pixels within the given intensity range&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus countInRange(const CuviImage&amp;amp; src,&lt;br /&gt;
                        CuviScalar&amp;amp; count,&lt;br /&gt;
                        const CuviScalar&amp;amp; rangeMin,&lt;br /&gt;
                        const CuviScalar&amp;amp; rangeMax,&lt;br /&gt;
                        const CuviStream&amp;amp; stream = NULL);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| count&lt;br /&gt;
| CuviScalar&amp;amp;&lt;br /&gt;
| Computed number of pixels within the given intensity range.&lt;br /&gt;
|-&lt;br /&gt;
| rangeMin&lt;br /&gt;
| const CuviScalar&amp;amp;&lt;br /&gt;
| Lower limit of the intensity range&lt;br /&gt;
|-&lt;br /&gt;
| rangeMax&lt;br /&gt;
| const CuviScalar&amp;amp;&lt;br /&gt;
| Upper limit of the intensity range&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 32fC1&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 32fC3&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Count.PNG]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage* gimg = cuvi::io::loadImage(path);&lt;br /&gt;
&lt;br /&gt;
CuviScalar count;&lt;br /&gt;
&lt;br /&gt;
const CuviScalar lowerBound(25.0, 10.0, 10.0);&lt;br /&gt;
const CuviScalar upperBound(100.0, 200.0, 150.0);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Returns number of pixels within the given intensity range&lt;br /&gt;
cuvi::imageStatistics::countInRange(gimg, count, lowerBound, upperBound);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:LogTransform&amp;diff=826</id>
		<title>Function:LogTransform</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:LogTransform&amp;diff=826"/>
		<updated>2014-06-13T12:39:26Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Applies log transformation to pixel values. ===Function=== {| |style=&amp;quot;font-size:150%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus logTransform(const CuviImage&amp;amp; src,   ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Applies log transformation to pixel values.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus logTransform(const CuviImage&amp;amp; src,&lt;br /&gt;
                        CuviImage&amp;amp; dst,&lt;br /&gt;
                        const Cuvi32f c = 1.0f,&lt;br /&gt;
                        const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
|-&lt;br /&gt;
| c&lt;br /&gt;
| const Cuvi32f&lt;br /&gt;
| Scaling value&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8u&lt;br /&gt;
| 32f&lt;br /&gt;
|-&lt;br /&gt;
| 16u&lt;br /&gt;
| 32f&lt;br /&gt;
|-&lt;br /&gt;
| 32f&lt;br /&gt;
| 32f&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating input images&lt;br /&gt;
CuviImage input = cuvi:io::loadImage(path), output;&lt;br /&gt;
&lt;br /&gt;
const Cuvi32f c = 1.5f;&lt;br /&gt;
&lt;br /&gt;
cuvi::colorOperations::logTransform(input,output,c);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:GammaCorrect&amp;diff=825</id>
		<title>Function:GammaCorrect</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:GammaCorrect&amp;diff=825"/>
		<updated>2014-06-13T12:36:28Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Increases or decreases gamma value of input image.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus gammaCorrect(const CuviImage&amp;amp; src,&lt;br /&gt;
                        CuviImage&amp;amp; dst,&lt;br /&gt;
                        const Cuvi32f gamma = 1.0f,&lt;br /&gt;
                        const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
|-&lt;br /&gt;
| gamma&lt;br /&gt;
| const Cuvi32f&lt;br /&gt;
| Gamma value&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8u&lt;br /&gt;
| 8u&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating input images&lt;br /&gt;
CuviImage input = cuvi:io::loadImage(path), output;&lt;br /&gt;
&lt;br /&gt;
const Cuvi32f gamma = 1.5f;&lt;br /&gt;
&lt;br /&gt;
cuvi::colorOperations::gammaCorrect(input,output,gamma);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:GammaCorrect&amp;diff=824</id>
		<title>Function:GammaCorrect</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:GammaCorrect&amp;diff=824"/>
		<updated>2014-06-13T12:33:16Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Converts image data type with optional scaling. ===Function=== {| |style=&amp;quot;font-size:150%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus gammaCorrect(const CuviImage&amp;amp; src...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Converts image data type with optional scaling.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus gammaCorrect(const CuviImage&amp;amp; src,&lt;br /&gt;
                        CuviImage&amp;amp; dst,&lt;br /&gt;
                        const Cuvi32f gamma = 1.0f,&lt;br /&gt;
                        const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
|-&lt;br /&gt;
| gamma&lt;br /&gt;
| const Cuvi32f&lt;br /&gt;
| Gamma value&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8u&lt;br /&gt;
| 8u&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating input images&lt;br /&gt;
CuviImage input = cuvi:io::loadImage(path), output;&lt;br /&gt;
&lt;br /&gt;
const Cuvi32f gamma = 1.5f;&lt;br /&gt;
&lt;br /&gt;
cuvi::colorOperations::gammaCorrect(input,output,gamma);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:LUT&amp;diff=823</id>
		<title>Function:LUT</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:LUT&amp;diff=823"/>
		<updated>2014-06-13T12:13:06Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Remaps image values according to look up table. ===Function=== {| |style=&amp;quot;font-size:150%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;  CuviStatus LUT(const CuviImage&amp;amp; src,       ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Remaps image values according to look up table.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviStatus LUT(const CuviImage&amp;amp; src,&lt;br /&gt;
               const CuviImage&amp;amp; mapping,&lt;br /&gt;
               CuviImage&amp;amp; dst,&lt;br /&gt;
               const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| mapping&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| The look-up table&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant Image&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input 1&lt;br /&gt;
! Input 2&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8u&lt;br /&gt;
| 8u&lt;br /&gt;
| 8u&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviImage input = cuvi::io::loadImage(path), output;&lt;br /&gt;
&lt;br /&gt;
//Create LUT on host&lt;br /&gt;
const int mappingSize = 256;&lt;br /&gt;
&lt;br /&gt;
unsigned char mappingValues[mappingSize];&lt;br /&gt;
&lt;br /&gt;
//Initialize LUT with values which invert the image values&lt;br /&gt;
for(int i=0; i&amp;lt;mappingSize; i++)&lt;br /&gt;
    mappingValues[i] = 255 - i;&lt;br /&gt;
&lt;br /&gt;
//Create and upload LUT matrix on device&lt;br /&gt;
CuviImage mapping(mappingSize,1, CUVI_8UC1);&lt;br /&gt;
mapping.upload(mappingValues, sizeof(mappingValues);&lt;br /&gt;
&lt;br /&gt;
cuvi::colorOperations::LUT( input, mapping, output );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:MedianFilter&amp;diff=822</id>
		<title>Function:MedianFilter</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:MedianFilter&amp;diff=822"/>
		<updated>2014-06-13T11:51:18Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Applies 2D median filter to the input image&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus medianFilter(const CuviImage&amp;amp; src,&lt;br /&gt;
                        CuviImage&amp;amp; dst,&lt;br /&gt;
                        const CuviRect&amp;amp; roi,&lt;br /&gt;
                        const CuviSize&amp;amp; filterSize,&lt;br /&gt;
                        const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output Image&lt;br /&gt;
|-&lt;br /&gt;
| roi&lt;br /&gt;
| const CuviRect&amp;amp;&lt;br /&gt;
| Region of Interest&lt;br /&gt;
|-&lt;br /&gt;
| filterSize&lt;br /&gt;
| const CuviSize&amp;amp;&lt;br /&gt;
| Median filter's kernel size. Only 3x3, 5x5, 7x7, and 9x9 are supported&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Input image&lt;br /&gt;
CuviImage gimg = cuvi::io::loadImage(path);&lt;br /&gt;
&lt;br /&gt;
//Output Image&lt;br /&gt;
CuviImage gout;&lt;br /&gt;
&lt;br /&gt;
//Choosing ROI&lt;br /&gt;
CuviRect roi(0,0,img.width(),img.height());&lt;br /&gt;
&lt;br /&gt;
//Filter Size&lt;br /&gt;
CuviSize  fSize(5,5);&lt;br /&gt;
&lt;br /&gt;
//Applying Median filter of size 5x5 on the image&lt;br /&gt;
cuvi::imageFiltering::medianFilter(gimg, gout, roi, fSize);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:MedianFilter&amp;diff=821</id>
		<title>Function:MedianFilter</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:MedianFilter&amp;diff=821"/>
		<updated>2014-06-13T11:51:00Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Applies 2D median filter to the input image ===Function=== {| |style=&amp;quot;font-size:150%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus minFilter(const CuviImage&amp;amp; src,      ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Applies 2D median filter to the input image&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus minFilter(const CuviImage&amp;amp; src,&lt;br /&gt;
                     CuviImage&amp;amp; dst,&lt;br /&gt;
                     const CuviRect&amp;amp; roi,&lt;br /&gt;
                     const CuviSize&amp;amp; filterSize,&lt;br /&gt;
                     const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Output Image&lt;br /&gt;
|-&lt;br /&gt;
| roi&lt;br /&gt;
| const CuviRect&amp;amp;&lt;br /&gt;
| Region of Interest&lt;br /&gt;
|-&lt;br /&gt;
| filterSize&lt;br /&gt;
| const CuviSize&amp;amp;&lt;br /&gt;
| Median filter's kernel size. Only 3x3, 5x5, 7x7, and 9x9 are supported&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Input image&lt;br /&gt;
CuviImage gimg = cuvi::io::loadImage(path);&lt;br /&gt;
&lt;br /&gt;
//Output Image&lt;br /&gt;
CuviImage gout;&lt;br /&gt;
&lt;br /&gt;
//Choosing ROI&lt;br /&gt;
CuviRect roi(0,0,img.width(),img.height());&lt;br /&gt;
&lt;br /&gt;
//Filter Size&lt;br /&gt;
CuviSize  fSize(5,5);&lt;br /&gt;
&lt;br /&gt;
//Applying Median filter of size 5x5 on the image&lt;br /&gt;
cuvi::imageFiltering::medianFilter(gimg, gout, roi, fSize);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:MinMax&amp;diff=820</id>
		<title>Function:MinMax</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:MinMax&amp;diff=820"/>
		<updated>2014-06-13T11:27:38Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Computes the minimum and maximum pixel values in the image&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus minMax(const CuviImage&amp;amp; src,&lt;br /&gt;
                  CuviScalar&amp;amp; minValue,&lt;br /&gt;
                  CuviScalar&amp;amp; maxValue,&lt;br /&gt;
                  const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| minValue&lt;br /&gt;
| CuviScalar&amp;amp;&lt;br /&gt;
| Minimum pixel value(s) in the image&lt;br /&gt;
|-&lt;br /&gt;
| maxValue&lt;br /&gt;
| CuviScalar&amp;amp;&lt;br /&gt;
| Maximum pixel value(s) in the image&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 2 x CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 2 x CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 2 x CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 2 x CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 32fC1&lt;br /&gt;
| 2 x CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 32fC3&lt;br /&gt;
| 2 x CuviScalar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Minmax.PNG]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage gimg = cuvi::io::loadImage(path);&lt;br /&gt;
&lt;br /&gt;
CuviScalar min, max;&lt;br /&gt;
&lt;br /&gt;
//Returns minimum and maximum pixel value(s)	&lt;br /&gt;
cuvi::imageStatistics::minMax(gimg, min, max);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Min&amp;diff=819</id>
		<title>Function:Min</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Min&amp;diff=819"/>
		<updated>2014-06-13T11:24:54Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Computes the minimum of image pixel values&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus min(const CuviImage&amp;amp; src,&lt;br /&gt;
               CuviScalar&amp;amp; minValue,&lt;br /&gt;
               const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| minValue&lt;br /&gt;
| CuviScalar&amp;amp;&lt;br /&gt;
| Minimum pixel value in the image&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 32fC1&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|-&lt;br /&gt;
| 32fC3&lt;br /&gt;
| CuviScalar&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Min.PNG]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage gimg = cuvi::io::loadImage(path);&lt;br /&gt;
&lt;br /&gt;
CuviScalar min;&lt;br /&gt;
&lt;br /&gt;
//Returns minimum pixel value(s)&lt;br /&gt;
cuvi::imageStatistics::min(gimg, min);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:ConvertScale&amp;diff=818</id>
		<title>Function:ConvertScale</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:ConvertScale&amp;diff=818"/>
		<updated>2014-06-13T11:20:51Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Converts image data type with optional scaling. ===Function=== {| |style=&amp;quot;font-size:150%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus convertScale(const CuviImage&amp;amp; src...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Converts image data type with optional scaling.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus convertScale(const CuviImage&amp;amp; src,&lt;br /&gt;
                        CuviImage&amp;amp; dst,&lt;br /&gt;
                        const Cuvi32f scale = 1.0f,&lt;br /&gt;
                        const Cuvi32f offset = 0.0f,&lt;br /&gt;
                        const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
|-&lt;br /&gt;
| scale&lt;br /&gt;
| const Cuvi32f&lt;br /&gt;
| Scale factor&lt;br /&gt;
|-&lt;br /&gt;
| offset&lt;br /&gt;
| const Cuvi32f&lt;br /&gt;
| Value added to scaled values&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8u&lt;br /&gt;
| 8u&lt;br /&gt;
|-&lt;br /&gt;
| 16u&lt;br /&gt;
| 16u&lt;br /&gt;
|-&lt;br /&gt;
| 32f&lt;br /&gt;
| 32f&lt;br /&gt;
|-&lt;br /&gt;
| 8u&lt;br /&gt;
| 32f&lt;br /&gt;
|-&lt;br /&gt;
| 16u&lt;br /&gt;
| 32f&lt;br /&gt;
|-&lt;br /&gt;
| 8u&lt;br /&gt;
| 16u&lt;br /&gt;
|-&lt;br /&gt;
| 32f&lt;br /&gt;
| 8u&lt;br /&gt;
|-&lt;br /&gt;
| 32f&lt;br /&gt;
| 16u&lt;br /&gt;
|-&lt;br /&gt;
| 16u&lt;br /&gt;
| 8u&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating input images&lt;br /&gt;
CuviImage input = cuvi:io::loadImage(path);&lt;br /&gt;
&lt;br /&gt;
//Create output image of same size but different type&lt;br /&gt;
CuviImage output(input.size(), CUVI_DEPTH_32F, input.channels());&lt;br /&gt;
&lt;br /&gt;
//Convert image by normalizing pixel values (divide each pixel by 255)&lt;br /&gt;
cuvi::dataExchange::convertScale(input, output, 1.0f/255.0f);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:GetChannel&amp;diff=817</id>
		<title>Function:GetChannel</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:GetChannel&amp;diff=817"/>
		<updated>2014-06-13T11:11:57Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Extracts the specified channel from a multichannel image.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus getChannel(const CuviImage&amp;amp; src,&lt;br /&gt;
                      CuviImage&amp;amp; dst,&lt;br /&gt;
                      const Cuvi32s channel,&lt;br /&gt;
                      const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
|-&lt;br /&gt;
| channel&lt;br /&gt;
| Cuvi32s&lt;br /&gt;
| Channel number from 0 to (src.channels() - 1)&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC4&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC4&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 32fC3&lt;br /&gt;
| 32fC1&lt;br /&gt;
|-&lt;br /&gt;
| 32fC4&lt;br /&gt;
| 32fC1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating GPU images&lt;br /&gt;
CuviImage input = cuvi:io::loadImage(path), output;&lt;br /&gt;
	&lt;br /&gt;
//Get first channel of the input image&lt;br /&gt;
cuvi::dataExchange::getChannel(input, output, 0);&lt;br /&gt;
&lt;br /&gt;
//The same can be achieved by using the channel fetch operator&lt;br /&gt;
output = input[0];&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:OR&amp;diff=816</id>
		<title>Function:OR</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:OR&amp;diff=816"/>
		<updated>2014-06-13T10:52:39Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Bitwise OR operation of an image with another image or a constant value.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviStatus OR(const CuviImage&amp;amp; src1,&lt;br /&gt;
              const CuviImage&amp;amp; src2,&lt;br /&gt;
              CuviImage&amp;amp; dst,&lt;br /&gt;
              const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
 &lt;br /&gt;
CuviStatus OR(const CuviImage&amp;amp; src,&lt;br /&gt;
              const Cuvi32s value,&lt;br /&gt;
              CuviImage&amp;amp; dst,&lt;br /&gt;
              const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src1&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| First Input Image&lt;br /&gt;
|-&lt;br /&gt;
| src2&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Second Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant Image&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input 1&lt;br /&gt;
! Input 2&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Addin1.jpg|frame|First Input Image]]&lt;br /&gt;
|[[File:Addin2.jpg|frame|Second Input Image]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:ORout.jpg|frame| Resultant Image]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage input1 = cuvi::io::loadImage(path);&lt;br /&gt;
CuviImage input2 = cuvi::io::loadImage(path);&lt;br /&gt;
CuviImage output;&lt;br /&gt;
 &lt;br /&gt;
//OR Operation&lt;br /&gt;
cuvi::arithmeticLogical::OR(input1,input2,output);&lt;br /&gt;
 &lt;br /&gt;
//The same can be achieved by using OR operator&lt;br /&gt;
output = input1 | input2;&lt;br /&gt;
 &lt;br /&gt;
//Set last 4 bits of each pixel of the image&lt;br /&gt;
output |= 0x0f;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:XOR&amp;diff=815</id>
		<title>Function:XOR</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:XOR&amp;diff=815"/>
		<updated>2014-06-13T10:40:56Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Bitwise XOR operation of an image with another image or a constant value.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviStatus XOR(const CuviImage&amp;amp; src1,&lt;br /&gt;
               const CuviImage&amp;amp; src2,&lt;br /&gt;
               CuviImage&amp;amp; dst,&lt;br /&gt;
               const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&lt;br /&gt;
CuviStatus XOR(const CuviImage&amp;amp; src,&lt;br /&gt;
               const Cuvi32s value,&lt;br /&gt;
               CuviImage&amp;amp; dst,&lt;br /&gt;
               const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src1&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| First Input Image&lt;br /&gt;
|-&lt;br /&gt;
| src2&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Second Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant Image&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input 1&lt;br /&gt;
! Input 2&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Penguin.jpg|frame|First Input Image]]&lt;br /&gt;
|[[File:Bluebird.jpg|frame|Second Input Image]]&lt;br /&gt;
|[[File:XORout.jpg|frame| Resultant Image]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviImage input1 = cuvi::io::loadImage(path);&lt;br /&gt;
CuviImage input2 = cuvi::io::loadImage(path);&lt;br /&gt;
CuviImage output;&lt;br /&gt;
&lt;br /&gt;
//XOR Operation&lt;br /&gt;
cuvi::arithmeticLogical::XOR(input1,input2,output);&lt;br /&gt;
&lt;br /&gt;
//The same can be achieved by using XOR operator&lt;br /&gt;
output = input1 ^ input2;&lt;br /&gt;
&lt;br /&gt;
//Inverting last 4 bits of each pixel of the image&lt;br /&gt;
output ^= 0x0f;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:GetChannel&amp;diff=814</id>
		<title>Function:GetChannel</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:GetChannel&amp;diff=814"/>
		<updated>2014-06-13T10:34:40Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Extracts the specified channel from a multichannel image. ===Function=== {| |style=&amp;quot;font-size:150%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus getChannel(const CuviIm...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Extracts the specified channel from a multichannel image.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus getChannel(const CuviImage&amp;amp; src,&lt;br /&gt;
                      CuviImage&amp;amp; dst,&lt;br /&gt;
                      const Cuvi32s channel,&lt;br /&gt;
                      const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
|-&lt;br /&gt;
| channel&lt;br /&gt;
| Cuvi32s&lt;br /&gt;
| Channel number to extract&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC4&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC4&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 32fC3&lt;br /&gt;
| 32fC1&lt;br /&gt;
|-&lt;br /&gt;
| 32fC4&lt;br /&gt;
| 32fC1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Creating GPU images&lt;br /&gt;
CuviImage input = cuvi:io::loadImage(path), output;&lt;br /&gt;
	&lt;br /&gt;
//Get first channel of the input image&lt;br /&gt;
cuvi::dataExchange::getChannel(input, output, 0);&lt;br /&gt;
&lt;br /&gt;
//The same can be achieved by using the channel fetch operator&lt;br /&gt;
output = input[0];&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Features&amp;diff=813</id>
		<title>CUVI Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Features&amp;diff=813"/>
		<updated>2014-06-13T10:27:12Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Arithmetic &amp;amp; Logical */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a list of all the functionality available in the latest release of CUVI Library.&lt;br /&gt;
==Modules==&lt;br /&gt;
CUVI comes in following image processing modules.&lt;br /&gt;
* Arithmetic &amp;amp; Logical&amp;lt;!--[[Module:cuvial|Arithmetic &amp;amp; Logical]]--&amp;gt;&lt;br /&gt;
* Color Operations &amp;lt;!--[[Module:cuvico|Color Operations]]--&amp;gt;&lt;br /&gt;
* Computer Vision&amp;lt;!--[[Module:cuvicv|Computer Vision]]--&amp;gt;&lt;br /&gt;
* Data Exchange&amp;lt;!--[[Module:cuvide|Data Exchange]]--&amp;gt;&lt;br /&gt;
* Geometry Transforms&amp;lt;!--[[Module:cuvigt|Geometry Transforms]]--&amp;gt;&lt;br /&gt;
* Image Filtering&amp;lt;!--[[Module:cuviif|Image Filtering]]--&amp;gt;&lt;br /&gt;
* Image Statistics&amp;lt;!--[[Module:cuviis|Image Statistics]]--&amp;gt;&lt;br /&gt;
* Image Transforms&amp;lt;!--[[Module:cuviit|Image Transforms]]--&amp;gt;&lt;br /&gt;
* Video Stabilization&amp;lt;!--[[Module:videostab|Video Stabilization]]--&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Function List==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f6f6f6; margin-top:1.2em; border:1px solid #ccc;&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
===Arithmetic &amp;amp; Logical===&lt;br /&gt;
* [[Function:Abs|abs]] - Computes absolute value of each image pixel&lt;br /&gt;
* [[Function:AbsDiff|absDiff]] - Computes absolute difference between 2 images.&lt;br /&gt;
* [[Function:Add|add]] - Adds two images&lt;br /&gt;
* [[Function:AND|AND]] - Bitwise AND operation between two images.&lt;br /&gt;
* [[Function:Cbrt|cbrt]] - Computes cube root of each image pixel&lt;br /&gt;
* [[Function:Ceil|ceil]] - Applies ceil function to each image pixel&lt;br /&gt;
* [[Function:Divide|divide]] - Divides pixel values of two images&lt;br /&gt;
* [[Function:Exp|exp]] - Computes exponential of each image pixel&lt;br /&gt;
* [[Function:Floor|floor]] - Applies floor function to each image pixel&lt;br /&gt;
* [[Function:Invert|invert]] - Computes matrix inverse using LU factorization&lt;br /&gt;
* [[Function:MatMul|matMul]] - Performs matrix multiplication&lt;br /&gt;
* [[Function:MatMulTrans|matMulTrans]] - Performs matrix multiplication with its transpose&lt;br /&gt;
* [[Function:Multiply|multiply]] - Multiplies pixel values of two images&lt;br /&gt;
* [[Function:NOT|NOT]] - Inverts the bits of each pixel.&lt;br /&gt;
* [[Function:OR|OR]] - Bitwise OR operation between two images.&lt;br /&gt;
* [[Function:Pow|pow]] - Raise each pixel to a specified power.&lt;br /&gt;
* [[Function:Round|round]] - Rounds each pixel to nearest integer value.&lt;br /&gt;
* [[Function:SHL|SHL]] - Left shift each pixel of an image&lt;br /&gt;
* [[Function:SHR|SHR]] - Right shift each pixel of an image&lt;br /&gt;
* [[Function:Sqrt|sqrt]] - Takes square root of each pixel of an image.&lt;br /&gt;
* [[Function:Subtract|subtract]] - Subtracts pixel values of two images.&lt;br /&gt;
* [[Function:XOR|XOR]] - Logical bitwise XOR operation between two images.&lt;br /&gt;
&lt;br /&gt;
===Color Operations===&lt;br /&gt;
* [[Function:Adjust|adjust]] - Equivalent to MATLAB's imadjust&lt;br /&gt;
* [[Function:BorderMask|borderMask]] - Masks image borders with custom intensity&lt;br /&gt;
* [[Function:ChannelMerge|channelMerge]] - Merges R, G and B Channel to form a color image&lt;br /&gt;
* [[Function:ChannelSplit|channelSplit]] - Splits a three channel image into R, G and B channels&lt;br /&gt;
* [[Function:ColorPick|colorPick]] - Performs color segmentation of image by selecting a single color.&lt;br /&gt;
* [[Function:ColorTwist|colorTwist]] - Applies a color twist matrix to an image&lt;br /&gt;
* [[Function:Demosaic|demosaic]] - Restores an RGB image from a CFA Bayer image&lt;br /&gt;
* [[Function:DemosaicDFPD|'''demosaicDFPD''']] - Restores an RGB image from a CFA Bayer image using DFPD algorithm&lt;br /&gt;
* [[Function:GammaCorrect|gammaCorrect]] - Performs gamma correction of an image&lt;br /&gt;
* [[Function:Gray2rgb|gray2rgb]] - Copy a grayscale image to each channel of an RGB image.&lt;br /&gt;
* [[Function:HistEq|histEq]] - Performs histogram equalization&lt;br /&gt;
* [[Function:Hsv2rgb|hsv2rgb]] - Converts image from HSV color space to RGB.&lt;br /&gt;
* [[Function:ImageBinary|imageBinary]] - Converts input image into a binary image based on threshold&lt;br /&gt;
* [[Function:Lab2rgb|Lab2rgb]] - Converts image from CIE Lab color space to RGB.&lt;br /&gt;
* [[Function:LogTransform|logTransform]] - Applies log transformation for contrast enhancement of an image.&lt;br /&gt;
* [[Function:LUT|LUT]] - Remaps image values according to look up table&lt;br /&gt;
* [[Function:RGB2Gray|rgb2gray]] - Converts an RGB image to gray scale.&lt;br /&gt;
* [[Function:Rgb2hsv|rgb2hsv]] - Converts an RGB image to HSV color space.&lt;br /&gt;
* [[Function:Rgb2Lab|rgb2Lab]] - Converts an RGB image to CIE Lab color space.&lt;br /&gt;
* [[Function:Rgb2ycbcr|rgb2ycbcr]] - Converts an RGB image to YCbCr color space.&lt;br /&gt;
* [[Function:RGB2YUV|rgb2yuv]] - Converts RGB image to YUV color space.&lt;br /&gt;
* [[Function:Ycbcr2rgb|ycbcr2rgb]] - Converts YCbCr image to an RGB image.&lt;br /&gt;
* [[Function:YUV2RGB|yuv2rgb]] - Converts YUV image to an RGB image.&lt;br /&gt;
&lt;br /&gt;
===Computer Vision===&lt;br /&gt;
* [[Function:EigenValsVecs|eigenValsVecs]] - Calculates eigen values and eigen vectors at each pixel in an image&lt;br /&gt;
* [[Function:GoodFeaturesToTrack|goodFeaturesToTrack]] - selects N best points on a image using KLT or Harris&lt;br /&gt;
* [[Function:MinEigenVal|minEigenVal]] - Calculates the minimum eigen value at each pixel in an image&lt;br /&gt;
* [[Function:OpticalFlowHS|opticalFlowHS]] - Calculates flow of each image pixel in two frames using Horn–Schunck method&lt;br /&gt;
* [[Function:opticalFlowPyrLKDense|opticalFlowPyrLKDense]] - Calculates flow of each image pixel in two frames using pyramidal Lucas–Kanade method&lt;br /&gt;
* [[Function:TrackFeatures|trackFeatures]] - Tracks input features from frame 1 onto frame 2 using KLT method&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
===Data Exchange===&lt;br /&gt;
* [[Function:BitConversion|bitConversion]] - Converts image pixel values from one data type to another.&lt;br /&gt;
* [[Function:ConvertScale|convertScale]] - Converts image data type with optional scaling.&lt;br /&gt;
* [[Function:GenerateRandomImage|generateRandomImage]] - Creates a new random image.&lt;br /&gt;
* [[Function:GetChannel|getChannel]] - Extracts a channel of an image.&lt;br /&gt;
* [[Function:PadImage|padImage]] - Pads any side of the image with the value specified.&lt;br /&gt;
* [[Function:Rectangle|rectangle]] - Draws a rectangle on the specified region of an image.&lt;br /&gt;
* [[Function:Threshold|threshold]] - Clamps image pixel values between specified thresholds.&lt;br /&gt;
&lt;br /&gt;
===Geometry Transforms===&lt;br /&gt;
* [[Function:Crop|crop]] - Crops the desired portion of an image&lt;br /&gt;
* [[Function:Flip|flipImage]] - Mirrors an image about a horizontal or vertical axis, or both&lt;br /&gt;
* [[Function:Resize|resize]] - Resizes input image using specified interpolation&lt;br /&gt;
* [[Function:Rotate|rotate]] - Rotates an image about origin (0,0) or center&lt;br /&gt;
* [[Function:Transpose|transpose]] - Takes Transpose of the image&lt;br /&gt;
* [[Function:WarpAffine|warpAffine]] - Applies an affine transformation to an image.&lt;br /&gt;
* [[Function:WarpAffineBack|warpAffineBack]] - Applies an inverse affine transformation to an image.&lt;br /&gt;
&lt;br /&gt;
===Image Filtering===&lt;br /&gt;
* [[Function:Enhance|'''enhance''']] - description&lt;br /&gt;
* [[Function:ImageFilter|imageFilter]] - Performs linear 1D and 2D image filtering&lt;br /&gt;
* [[Function:ImageGradients|imageGradients]] - Calculates X and Y gradients of image&lt;br /&gt;
* [[Function:MinFilter|minFilter]] - Filters an image using a min filter&lt;br /&gt;
* [[Function:MaxFilter|maxFilter]] - Filters an image using a max filter&lt;br /&gt;
* [[Function:MedianFilter|medianFilter]] - Applies 2D median filter on an image&lt;br /&gt;
&lt;br /&gt;
===Image Statistics===&lt;br /&gt;
* [[Function:CalcHist|calcHist]] - Computes the histogram of an 8 bit image.&lt;br /&gt;
* [[Function:CountInRange|countInRange]] - Counts the number of pixels within the given intensity range&lt;br /&gt;
* [[Function:Max|max]] - Computes the maximum of image pixel values&lt;br /&gt;
* [[Function:Mean|mean]] - Computes the mean of image pixel values&lt;br /&gt;
* [[Function:MeanStdDev|meanStdDev]] - Computes the mean and standard deviation of image pixel values&lt;br /&gt;
* [[Function:Min|min]] - Computes the minimum of image pixel values&lt;br /&gt;
* [[Function:MinMax|minMax]] - Computes the minimum and maximum of image pixel values&lt;br /&gt;
* [[Function:Sum|sum]] - Computes the sum of image pixel values&lt;br /&gt;
&lt;br /&gt;
===Image Transforms===&lt;br /&gt;
* [[Function:Fft2|fft2]] - Computes the 2D Fast Fourier Transform of an image.&lt;br /&gt;
* [[Function:FftGetProperty|fftGetProperty]] - Gets magnitude, phase, real and imaginary part of an FFT image with optional scaling.&lt;br /&gt;
* [[Function:FftShift|fftShift]] - Moves low frequency components to the center of an FFT image.&lt;br /&gt;
* [[Function:haarFwd|haarFwd]] - Performs one-level wavelet decomposition of an image using haar basis&lt;br /&gt;
* [[Function:haarInv|haarInv]] - Performs one-level haar wavelet reconstruction of an image&lt;br /&gt;
&lt;br /&gt;
===Video Stabilization===&lt;br /&gt;
* [[Function:CuviMotionEstimator|CuviMotionEstimator]] - Class to estimate global motion vectors between an image pair.&lt;br /&gt;
* [[Function:CuviVideoStabilizer|CuviVideoStabilizer]] - Class for transparent video stabilization of a video file.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;!-- CUVI Core Starts --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CUVI Core==&lt;br /&gt;
CUVI Core includes the following helper functionality:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f6f6f6; margin-top:1.2em; border:1px solid #ccc;&amp;quot;&lt;br /&gt;
|style=&amp;quot;width:100%;&amp;quot;|&lt;br /&gt;
===CuviImage===&lt;br /&gt;
A C++ class to hold image data on the device. It has the following methods&lt;br /&gt;
* CuviImage(); - default constructor&lt;br /&gt;
* CuviImage(CuviSize size, Cuvi32s depth, Cuvi32s channels) - Main Constructor. throws exception in case of failure&lt;br /&gt;
* CuviImage(const CuviImage&amp;amp;) - copy constructor&lt;br /&gt;
* upload(const void* pSrcHost, const Cuvi32s srcPitch) - Copy image data from host to device.&lt;br /&gt;
* upload(const void* pSrcHost, const Cuvi32s srcPitch, const CuviStream&amp;amp; stream) - Asynchronously copy image data from host to device.&lt;br /&gt;
* download(void* pDstHost, const Cuvi32s dstPitch) - Copy image data from device to host&lt;br /&gt;
* download(void* pDstHost, const Cuvi32s dstPitch, const CuviStream&amp;amp; stream) - Asynchronously copy image data from device to host&lt;br /&gt;
* show(const std::string&amp;amp; title = &amp;quot;CUVI Image&amp;quot;, Cuvi32s milliseconds = 0) - Render device image directly on the screen&lt;br /&gt;
* ~CuviImage() - Destructor. Frees Device Memory. throws exception in case of failure&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;width:50%;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===Timer===&lt;br /&gt;
CUVI provides a C++ Timer class that accurately profiles your application timing&lt;br /&gt;
* Start() - Starts the timer.&lt;br /&gt;
* Stop() - Stops the timer&lt;br /&gt;
* Reset() - Resets the timer&lt;br /&gt;
* GetElapsedTime() - Returns the elapsed time between Start and Stop calls in seconds&lt;br /&gt;
|style=&amp;quot;width:50%; &amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===DeviceProperties===&lt;br /&gt;
CuviDeviceProperties holds all the important properties of underlying CUDA device. Device management functions are present inside the namespace cuvi::device.&lt;br /&gt;
*Cuvi32s getDeviceCount() - Gives the count of devices installed in the machine&lt;br /&gt;
*Cuvi32s getCurentDevice() - Returns the ID of selected graphics card&lt;br /&gt;
*CuviStatus setCurrentDevice(const Cuvi32s ID) - Makes any device an active device&lt;br /&gt;
*CuviStatus getDeviceProperties(const Cuvi32s deviceID, CuviDeviceProperties&amp;amp; props) - Returns all the important properties of desired GPU&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- CUVI Core Ends--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:GenerateRandomImage&amp;diff=812</id>
		<title>Function:GenerateRandomImage</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:GenerateRandomImage&amp;diff=812"/>
		<updated>2014-06-13T10:25:25Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Fills an image with random values.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus generateRandomImage(CuviImage&amp;amp; srcDst,&lt;br /&gt;
                               const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| srcDst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Input/Output Image&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input/Output&lt;br /&gt;
|-&lt;br /&gt;
| 32fC1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Initialize GPU images&lt;br /&gt;
CuviImage image(640, 480, CUVI_32FC1);&lt;br /&gt;
	&lt;br /&gt;
//Fill image with random value&lt;br /&gt;
cuvi::dataExchange::generateRandomImage(image);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:GenerateRandomImage&amp;diff=811</id>
		<title>Function:GenerateRandomImage</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:GenerateRandomImage&amp;diff=811"/>
		<updated>2014-06-13T10:25:05Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: Created page with &amp;quot;__NOTOC__ Fills an image with random values. ===Function=== {| |style=&amp;quot;font-size:150%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus generateRandomImage(CuviImage&amp;amp; srcDst,        ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Fills an image with random values.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus generateRandomImage(CuviImage&amp;amp; srcDst,&lt;br /&gt;
                               const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| srcDst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Input/Output Image&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input/Output&lt;br /&gt;
|-&lt;br /&gt;
| 32fC1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Initialize GPU images&lt;br /&gt;
CuviImage image(640, 480, CUVI_32FC1);&lt;br /&gt;
	&lt;br /&gt;
//Fill image with random values&lt;br /&gt;
cuvi::dataExchange::generateRandomImage(image);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Invert&amp;diff=810</id>
		<title>Function:Invert</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Invert&amp;diff=810"/>
		<updated>2014-06-13T10:20:27Z</updated>

		<summary type="html">&lt;p&gt;Ghazanfar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Computes matrix inverse of a square image using LU factorization.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus invert(const CuviImage&amp;amp; src,&lt;br /&gt;
                  CuviImage&amp;amp; dst,&lt;br /&gt;
                  const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name	&lt;br /&gt;
! Type	&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| src&lt;br /&gt;
| const CuviImage&amp;amp;&lt;br /&gt;
| Input Image&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Destination Image&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| stream &lt;br /&gt;
| const CuviStream&amp;amp;&lt;br /&gt;
| GPU stream ID for execution&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Output&lt;br /&gt;
|-&lt;br /&gt;
| 32fC1&lt;br /&gt;
| 32fC1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:150%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Initialize GPU image&lt;br /&gt;
CuviImage input(3,3,CUVI_32FC1), output;&lt;br /&gt;
&lt;br /&gt;
//Fill input image with random values&lt;br /&gt;
cuvi::dataExchange::generateRandomImage(input);&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
//Calculate the inverse&lt;br /&gt;
cuvi::arithmeticLogical::invert(input, output);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ghazanfar</name></author>
	</entry>
</feed>