<?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=Jawad</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=Jawad"/>
	<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php/Special:Contributions/Jawad"/>
	<updated>2026-08-16T00:28:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1787</id>
		<title>CUVI Release Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1787"/>
		<updated>2024-11-18T12:12:53Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==Version 2.0.2 (Latest Stable)==&lt;br /&gt;
*Major Release Date: June 15, 2024&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
**Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
**Toolkit version 12.5.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack|focusStack]]''' (for additional debug output)&lt;br /&gt;
**Changed '''[[Function:lowlight|lowLight]]''' (added monochrome support)&lt;br /&gt;
**Changed '''[[Function:demosaic|demosaic]]''' (large window support added)&lt;br /&gt;
**Added '''[[Function:demosaicHQLI|demosaicHQLI]]'''&lt;br /&gt;
**Bug fixes&lt;br /&gt;
**Major code refactoring&lt;br /&gt;
&lt;br /&gt;
==Version 1.8.0==&lt;br /&gt;
*Major Release Date: Oct 16, 2022&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:underwaterFilter]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:autoColor]]''' (for results)&lt;br /&gt;
**Added '''[[Function:findTransformECC]]'''&lt;br /&gt;
**Added '''[[Function:warpAffine]]'''&lt;br /&gt;
**Added '''[[Function:dot]]'''&lt;br /&gt;
**Added '''[[Function:inRange]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.7.0==&lt;br /&gt;
*Major Release Date: Apr 27, 2021&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:focusStack]]'''&lt;br /&gt;
**Added new '''[[Function:encode]]'''&lt;br /&gt;
**Added new '''[[Function:decode]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.5==&lt;br /&gt;
*Major Release Date: Nov 05, 2020&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Removed '''[[Function:Invert]]'''&lt;br /&gt;
*10x Speed up '''[[Function:underwaterFilter]]'''&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
*Added Support for Linux (x64 and aarch64) for trial version&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.1==&lt;br /&gt;
*Minor Release Date: Nov 17, 2019&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:rotateNoCrop]]'''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.0==&lt;br /&gt;
*Major Release Date: June 30, 2019&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Trial limit exceeded to 1000x1000 image size&lt;br /&gt;
**Bug fixes in '''[[Function:trackFeatures]]''', '''[[Function:colorPick]]''', '''[[Function:haarFwd]]'''&lt;br /&gt;
**Added '''copyTo''' function to CuviImage which copies image data (or an ROI of it) from one image to another.&lt;br /&gt;
**Added ROI support for '''upload''' and '''download''' functions of CuviImage.&lt;br /&gt;
**Added new '''[[Function:taper]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspective]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspectiveBack]]'''&lt;br /&gt;
**Changed '''[[Function:rotate]]''' (ROI, anti-alaising at boundary added. Performance 5x improved)&lt;br /&gt;
**Removed Video Stabilization module.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.5==&lt;br /&gt;
*Major Release Date: June 12, 2017&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
**Latest Visual C++ redistributable package [[https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads download]]&lt;br /&gt;
** Build for Compute Capability 3.0, 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2 and 7.0&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''[[Function:lowlight]]'''&lt;br /&gt;
**Added '''[[Function:autoColor]]'''&lt;br /&gt;
**Added '''[[Function:dehaze]]'''&lt;br /&gt;
**2x Speed up '''[[Function:DemosaicDFPD]]'''&lt;br /&gt;
**Function:colorTwist renamed to '''[[Function:ChannelMix]]'''&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Function:enhance renamed to '''[[Function:underwaterFilter]]''' and improved&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Latest CUDA GPUs &amp;amp; architectures support.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.2==&lt;br /&gt;
*Major Release Date: June 12, 2015&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Bug fix '''demosiacDFPD'''.&lt;br /&gt;
**Speed up '''demosiacDFPD'''.&lt;br /&gt;
*Removed ''Video Stabilization'' module&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Support for latest GPUs.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.1==&lt;br /&gt;
*Release Date: June 12, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''demosiacDFPD''' that restores an RGB image from a CFA Bayer image using DFPD algorithm.&lt;br /&gt;
*Added ''Video Stabilization'' module&lt;br /&gt;
**Added '''CuviVideoStabilizer''' class for transparent video stabilization.&lt;br /&gt;
**Added '''CuviMotionEstimator''' class to determine the global motion vector between 2 frames.&lt;br /&gt;
*Core&lt;br /&gt;
**Added ''cuvi::showImage'' function to display the image.&lt;br /&gt;
**Added ''cuvi::waitKeyPress'' function to keep displaying the window opened by ''cuvi::showImage''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.0==&lt;br /&gt;
*Major Release Date: May 05, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Core:&lt;br /&gt;
**Added arithmtic and logic operators for CuviImage.&lt;br /&gt;
**Added channel extraction operator [] for CuviImage.&lt;br /&gt;
**Added CuviPyramid class&lt;br /&gt;
**Added CuviHistogram class&lt;br /&gt;
**Added CuviSpecialFilters class for creating standard predefined filters.&lt;br /&gt;
&lt;br /&gt;
*Data Exchange:&lt;br /&gt;
**Added getChannel function for channel extraction.&lt;br /&gt;
&lt;br /&gt;
*Arithmetic and Logical:&lt;br /&gt;
**Added different point scalar functions&lt;br /&gt;
**abs -&amp;gt; Image absolute value&lt;br /&gt;
**exp -&amp;gt; e raised to power image&lt;br /&gt;
**absDiff -&amp;gt; Absolute difference between 2 images&lt;br /&gt;
**sqrt -&amp;gt; Square root&lt;br /&gt;
**cbrt -&amp;gt; Cube root&lt;br /&gt;
**floor&lt;br /&gt;
**ceil&lt;br /&gt;
**round&lt;br /&gt;
**Added bit shifting functions (SHL and SHR)&lt;br /&gt;
**Added matrix multiplication (matMul)&lt;br /&gt;
**Added matrix multiplication with transpose -&amp;gt; A*A' or A'*A&lt;br /&gt;
**Added matrix inversion for square images.&lt;br /&gt;
&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added lookup table transformation function (LUT)&lt;br /&gt;
**Merged rgba2gray into rgb2gray&lt;br /&gt;
**Added color space conversions:&lt;br /&gt;
***Grayscale --&amp;gt; RGB 	(gray2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; YCbCr (rgb2ycbcr and ycbcr2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; HSV (rgb2hsv and hsv2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; Lab (rgb2Lab and Lab2rgb)&lt;br /&gt;
&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Added median filtering (medianFilter)&lt;br /&gt;
**Added image enhancement algorithm (fusion)&lt;br /&gt;
&lt;br /&gt;
*Image Statistics:&lt;br /&gt;
**Added histogram calculation function (calcHist)&lt;br /&gt;
&lt;br /&gt;
*Misc:&lt;br /&gt;
**Replaced raw pointer/array arguments with CuviScalar class for the following functions:&lt;br /&gt;
***rgb2gray&lt;br /&gt;
***sum, mean, min, max, minMax, countInRange&lt;br /&gt;
&lt;br /&gt;
==Version 1.2.1==&lt;br /&gt;
*Major Release Date: April 17, 2013&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*New Features/Enchancements&lt;br /&gt;
**[[Function:pow|pow]] - Raises each pixel to the specified power.&lt;br /&gt;
**[[Function:rectangle |rectangle ]] - draws a rectangle on the image.&lt;br /&gt;
**[[Function:adjust |adjust ]] function can now take adjust parameters separately for each channel&lt;br /&gt;
**[[Function:haarFwd|haarFwd]] and [[Function:haarInv|haarInv]] now also support 3 channel images.&lt;br /&gt;
&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**C Interface has been discontinued.&lt;br /&gt;
**All functions in C++ interface now take CuviImage references instead of pointers.&lt;br /&gt;
**Added image I/O. CuviImage can now be loaded and saved directly on the disk without the requirement of a host.&lt;br /&gt;
**Added namespace &amp;quot;device&amp;quot; which contains device management functions:&lt;br /&gt;
***getDeviceCount&lt;br /&gt;
***getCurrentDevice&lt;br /&gt;
***setCurrentDevice(const Cuvi32s id);&lt;br /&gt;
***syncCurrentDevice()&lt;br /&gt;
***resetCurrentDevice()&lt;br /&gt;
***getDeviceProperties(const int deviceID, CuviDeviceProperties&amp;amp; props);&lt;br /&gt;
&lt;br /&gt;
*Features removal:&lt;br /&gt;
**eigenVals&lt;br /&gt;
**eigenValsVecs&lt;br /&gt;
**meanStdDev&lt;br /&gt;
**Color2Gray (added as an overload of rgb2gray)&lt;br /&gt;
&lt;br /&gt;
==Version 1.2==&lt;br /&gt;
*Major Release Date: May 11, 2012&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7, Linux or Mac OSX&lt;br /&gt;
*New Features&lt;br /&gt;
**[[Function:CountInRange|CountInRange]] - Counts the number of pixels within the given intensity range&lt;br /&gt;
**[[Function:Sum|Sum]] - Computes the sum of pixel values of each channel in an image&lt;br /&gt;
**[[Function:Max|Max]] - Computes the maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Min|Min]] - Computes the minimum pixel value of each channel in an image&lt;br /&gt;
**[[Function:MinMax|MinMax]] - Computes the minimum and maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Mean|Mean]] - Computes the mean of each channel of the input image&lt;br /&gt;
**[[Function:MeanStdDev|MeanStdDev]] - Computes the mean and standard deviation of each channel in an image&lt;br /&gt;
**[[Function:EigenValsVecs|EigenValsVecs]] - Calculates eigen values and eigen vectors at each pixel in an image&lt;br /&gt;
**[[Function:Flip|Flip]] - Mirrors an image about a horizontal or vertical axis, or both&lt;br /&gt;
**[[Function:ImageGradients|ImageGradients]] - Calculates X and Y gradients of image&lt;br /&gt;
**[[Function:MinEigenVal|MinEigenVal]] - Calculates the minimum eigen value at each pixel in an image&lt;br /&gt;
**[[Function:Rotate|Rotate]] - Rotates an image with the origin (0,0) or center&lt;br /&gt;
**[[Function:Transpose|Transpose]] - Takes Transpose of the image&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**Instead of a single function for all color operations and one for arithmetic operations, the new build contains individual functions like [[Function:RGB2YUV|RGB2YUV]] and [[Function:Add|Add]] to improve usability&lt;br /&gt;
**The functions 'split' and 'merge' are renamed to [[Function:ChannelSplit|ChannelSplit]] and [[Function:ChannelMerge|ChannelMerge]]&lt;br /&gt;
**The function 'bayerToRGB' is renamed to [[Function:Demosaic|Demosaic]]&lt;br /&gt;
**The function 'imFilter' is renamed to [[Function:ImageFilter|ImageFilter]] and its input argument have been simplified&lt;br /&gt;
**The function 'dwt' and 'idwt' have been renamed to [[Function:HaarFwd|haarFwd]] and [[Function:HaarInv|haarInv]] respectively&lt;br /&gt;
**CUVI now includes a C++ Timer class that accurately profiles your application timing&lt;br /&gt;
**CuviMat is introduced which is C counterpart of the class CuviImage&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
**[[Function:ImageFilter|ImageFilter]] bug fixed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Release notes for previous versions is not available''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1786</id>
		<title>CUVI Release Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1786"/>
		<updated>2024-11-18T08:58:11Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Version 2.0.2 (Latest Stable) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==Version 2.0.2 (Latest Stable)==&lt;br /&gt;
*Major Release Date: June 15, 2024&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
**Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
**Toolkit version 12.5.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack|focusStack]]''' (for additional debug output)&lt;br /&gt;
**Changed '''[[Function:lowlight|lowLight]]''' (added monochrome support)&lt;br /&gt;
**Changed '''[[Function:DemosaicHQLI|DemosaicHQLI]]''' (large window support added)&lt;br /&gt;
**Added '''[[Function:demosaicHQLI|demosaicHQLI]]'''&lt;br /&gt;
**Bug fixes&lt;br /&gt;
**Major code refactoring&lt;br /&gt;
&lt;br /&gt;
==Version 1.8.0==&lt;br /&gt;
*Major Release Date: Oct 16, 2022&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:underwaterFilter]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:autoColor]]''' (for results)&lt;br /&gt;
**Added '''[[Function:findTransformECC]]'''&lt;br /&gt;
**Added '''[[Function:warpAffine]]'''&lt;br /&gt;
**Added '''[[Function:dot]]'''&lt;br /&gt;
**Added '''[[Function:inRange]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.7.0==&lt;br /&gt;
*Major Release Date: Apr 27, 2021&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:focusStack]]'''&lt;br /&gt;
**Added new '''[[Function:encode]]'''&lt;br /&gt;
**Added new '''[[Function:decode]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.5==&lt;br /&gt;
*Major Release Date: Nov 05, 2020&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Removed '''[[Function:Invert]]'''&lt;br /&gt;
*10x Speed up '''[[Function:underwaterFilter]]'''&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
*Added Support for Linux (x64 and aarch64) for trial version&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.1==&lt;br /&gt;
*Minor Release Date: Nov 17, 2019&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:rotateNoCrop]]'''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.0==&lt;br /&gt;
*Major Release Date: June 30, 2019&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Trial limit exceeded to 1000x1000 image size&lt;br /&gt;
**Bug fixes in '''[[Function:trackFeatures]]''', '''[[Function:colorPick]]''', '''[[Function:haarFwd]]'''&lt;br /&gt;
**Added '''copyTo''' function to CuviImage which copies image data (or an ROI of it) from one image to another.&lt;br /&gt;
**Added ROI support for '''upload''' and '''download''' functions of CuviImage.&lt;br /&gt;
**Added new '''[[Function:taper]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspective]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspectiveBack]]'''&lt;br /&gt;
**Changed '''[[Function:rotate]]''' (ROI, anti-alaising at boundary added. Performance 5x improved)&lt;br /&gt;
**Removed Video Stabilization module.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.5==&lt;br /&gt;
*Major Release Date: June 12, 2017&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
**Latest Visual C++ redistributable package [[https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads download]]&lt;br /&gt;
** Build for Compute Capability 3.0, 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2 and 7.0&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''[[Function:lowlight]]'''&lt;br /&gt;
**Added '''[[Function:autoColor]]'''&lt;br /&gt;
**Added '''[[Function:dehaze]]'''&lt;br /&gt;
**2x Speed up '''[[Function:DemosaicDFPD]]'''&lt;br /&gt;
**Function:colorTwist renamed to '''[[Function:ChannelMix]]'''&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Function:enhance renamed to '''[[Function:underwaterFilter]]''' and improved&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Latest CUDA GPUs &amp;amp; architectures support.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.2==&lt;br /&gt;
*Major Release Date: June 12, 2015&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Bug fix '''demosiacDFPD'''.&lt;br /&gt;
**Speed up '''demosiacDFPD'''.&lt;br /&gt;
*Removed ''Video Stabilization'' module&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Support for latest GPUs.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.1==&lt;br /&gt;
*Release Date: June 12, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''demosiacDFPD''' that restores an RGB image from a CFA Bayer image using DFPD algorithm.&lt;br /&gt;
*Added ''Video Stabilization'' module&lt;br /&gt;
**Added '''CuviVideoStabilizer''' class for transparent video stabilization.&lt;br /&gt;
**Added '''CuviMotionEstimator''' class to determine the global motion vector between 2 frames.&lt;br /&gt;
*Core&lt;br /&gt;
**Added ''cuvi::showImage'' function to display the image.&lt;br /&gt;
**Added ''cuvi::waitKeyPress'' function to keep displaying the window opened by ''cuvi::showImage''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.0==&lt;br /&gt;
*Major Release Date: May 05, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Core:&lt;br /&gt;
**Added arithmtic and logic operators for CuviImage.&lt;br /&gt;
**Added channel extraction operator [] for CuviImage.&lt;br /&gt;
**Added CuviPyramid class&lt;br /&gt;
**Added CuviHistogram class&lt;br /&gt;
**Added CuviSpecialFilters class for creating standard predefined filters.&lt;br /&gt;
&lt;br /&gt;
*Data Exchange:&lt;br /&gt;
**Added getChannel function for channel extraction.&lt;br /&gt;
&lt;br /&gt;
*Arithmetic and Logical:&lt;br /&gt;
**Added different point scalar functions&lt;br /&gt;
**abs -&amp;gt; Image absolute value&lt;br /&gt;
**exp -&amp;gt; e raised to power image&lt;br /&gt;
**absDiff -&amp;gt; Absolute difference between 2 images&lt;br /&gt;
**sqrt -&amp;gt; Square root&lt;br /&gt;
**cbrt -&amp;gt; Cube root&lt;br /&gt;
**floor&lt;br /&gt;
**ceil&lt;br /&gt;
**round&lt;br /&gt;
**Added bit shifting functions (SHL and SHR)&lt;br /&gt;
**Added matrix multiplication (matMul)&lt;br /&gt;
**Added matrix multiplication with transpose -&amp;gt; A*A' or A'*A&lt;br /&gt;
**Added matrix inversion for square images.&lt;br /&gt;
&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added lookup table transformation function (LUT)&lt;br /&gt;
**Merged rgba2gray into rgb2gray&lt;br /&gt;
**Added color space conversions:&lt;br /&gt;
***Grayscale --&amp;gt; RGB 	(gray2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; YCbCr (rgb2ycbcr and ycbcr2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; HSV (rgb2hsv and hsv2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; Lab (rgb2Lab and Lab2rgb)&lt;br /&gt;
&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Added median filtering (medianFilter)&lt;br /&gt;
**Added image enhancement algorithm (fusion)&lt;br /&gt;
&lt;br /&gt;
*Image Statistics:&lt;br /&gt;
**Added histogram calculation function (calcHist)&lt;br /&gt;
&lt;br /&gt;
*Misc:&lt;br /&gt;
**Replaced raw pointer/array arguments with CuviScalar class for the following functions:&lt;br /&gt;
***rgb2gray&lt;br /&gt;
***sum, mean, min, max, minMax, countInRange&lt;br /&gt;
&lt;br /&gt;
==Version 1.2.1==&lt;br /&gt;
*Major Release Date: April 17, 2013&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*New Features/Enchancements&lt;br /&gt;
**[[Function:pow|pow]] - Raises each pixel to the specified power.&lt;br /&gt;
**[[Function:rectangle |rectangle ]] - draws a rectangle on the image.&lt;br /&gt;
**[[Function:adjust |adjust ]] function can now take adjust parameters separately for each channel&lt;br /&gt;
**[[Function:haarFwd|haarFwd]] and [[Function:haarInv|haarInv]] now also support 3 channel images.&lt;br /&gt;
&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**C Interface has been discontinued.&lt;br /&gt;
**All functions in C++ interface now take CuviImage references instead of pointers.&lt;br /&gt;
**Added image I/O. CuviImage can now be loaded and saved directly on the disk without the requirement of a host.&lt;br /&gt;
**Added namespace &amp;quot;device&amp;quot; which contains device management functions:&lt;br /&gt;
***getDeviceCount&lt;br /&gt;
***getCurrentDevice&lt;br /&gt;
***setCurrentDevice(const Cuvi32s id);&lt;br /&gt;
***syncCurrentDevice()&lt;br /&gt;
***resetCurrentDevice()&lt;br /&gt;
***getDeviceProperties(const int deviceID, CuviDeviceProperties&amp;amp; props);&lt;br /&gt;
&lt;br /&gt;
*Features removal:&lt;br /&gt;
**eigenVals&lt;br /&gt;
**eigenValsVecs&lt;br /&gt;
**meanStdDev&lt;br /&gt;
**Color2Gray (added as an overload of rgb2gray)&lt;br /&gt;
&lt;br /&gt;
==Version 1.2==&lt;br /&gt;
*Major Release Date: May 11, 2012&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7, Linux or Mac OSX&lt;br /&gt;
*New Features&lt;br /&gt;
**[[Function:CountInRange|CountInRange]] - Counts the number of pixels within the given intensity range&lt;br /&gt;
**[[Function:Sum|Sum]] - Computes the sum of pixel values of each channel in an image&lt;br /&gt;
**[[Function:Max|Max]] - Computes the maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Min|Min]] - Computes the minimum pixel value of each channel in an image&lt;br /&gt;
**[[Function:MinMax|MinMax]] - Computes the minimum and maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Mean|Mean]] - Computes the mean of each channel of the input image&lt;br /&gt;
**[[Function:MeanStdDev|MeanStdDev]] - Computes the mean and standard deviation of each channel in an image&lt;br /&gt;
**[[Function:EigenValsVecs|EigenValsVecs]] - Calculates eigen values and eigen vectors at each pixel in an image&lt;br /&gt;
**[[Function:Flip|Flip]] - Mirrors an image about a horizontal or vertical axis, or both&lt;br /&gt;
**[[Function:ImageGradients|ImageGradients]] - Calculates X and Y gradients of image&lt;br /&gt;
**[[Function:MinEigenVal|MinEigenVal]] - Calculates the minimum eigen value at each pixel in an image&lt;br /&gt;
**[[Function:Rotate|Rotate]] - Rotates an image with the origin (0,0) or center&lt;br /&gt;
**[[Function:Transpose|Transpose]] - Takes Transpose of the image&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**Instead of a single function for all color operations and one for arithmetic operations, the new build contains individual functions like [[Function:RGB2YUV|RGB2YUV]] and [[Function:Add|Add]] to improve usability&lt;br /&gt;
**The functions 'split' and 'merge' are renamed to [[Function:ChannelSplit|ChannelSplit]] and [[Function:ChannelMerge|ChannelMerge]]&lt;br /&gt;
**The function 'bayerToRGB' is renamed to [[Function:Demosaic|Demosaic]]&lt;br /&gt;
**The function 'imFilter' is renamed to [[Function:ImageFilter|ImageFilter]] and its input argument have been simplified&lt;br /&gt;
**The function 'dwt' and 'idwt' have been renamed to [[Function:HaarFwd|haarFwd]] and [[Function:HaarInv|haarInv]] respectively&lt;br /&gt;
**CUVI now includes a C++ Timer class that accurately profiles your application timing&lt;br /&gt;
**CuviMat is introduced which is C counterpart of the class CuviImage&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
**[[Function:ImageFilter|ImageFilter]] bug fixed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Release notes for previous versions is not available''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:FocusStack&amp;diff=1785</id>
		<title>Function:FocusStack</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:FocusStack&amp;diff=1785"/>
		<updated>2024-11-18T08:53:05Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Code Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Stacks multiple images into a single, all focused image. The input images need to be aligned and in order. The function also returns a depth_info image that contains the information against each pixel where it was picked from the stack. &lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
CUVI_EXPORTS CuviStatus focusStack(CuviImage* images, const int numImages, CuviImage&amp;amp; stack, CuviImage&amp;amp; depth_info, const CuviFilter denoiseFilter, const CuviStream&amp;amp; stream);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| images&lt;br /&gt;
| const CuviImage*&lt;br /&gt;
| Input images array&lt;br /&gt;
|-&lt;br /&gt;
| numImages&lt;br /&gt;
| const int&lt;br /&gt;
| Number of images &lt;br /&gt;
|-&lt;br /&gt;
| stack&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant image&lt;br /&gt;
|-&lt;br /&gt;
| depth_info&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Slice/Depth information against stacked image&lt;br /&gt;
|-&lt;br /&gt;
| denoiseFilter&lt;br /&gt;
| CuviFilter &lt;br /&gt;
| Filter to remove noise&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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 x N&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3 x N&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Samples====&lt;br /&gt;
[[File:Fs-in-1.jpg|none|frame| Input image with foreground focused]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Fs-in-2.jpg|none|frame| Input image with background focused]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Focused.jpg|none|frame| Focus-Stacked Image]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Code Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
std::string path = &amp;quot;D:/dataset/fs/imageFolder/&amp;quot;;&lt;br /&gt;
std::string result = &amp;quot;D:/dataset/fs/focused.png&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for (const auto&amp;amp; entry : fs::directory_iterator(path))&lt;br /&gt;
	{&lt;br /&gt;
		if (entry.path().has_extension() &amp;amp;&amp;amp; isSupportedExtension(entry.path().extension().string()))&lt;br /&gt;
			vec.push_back(entry.path().string());&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
int numImages = vec.size();&lt;br /&gt;
vector&amp;lt;CuviImage&amp;gt; ImgArr(numImages);&lt;br /&gt;
//Sort filesnames to read in order. THIS IS VERY IMPORTANT FOR FOCUS STACKING&lt;br /&gt;
sort(vec.begin(), vec.end(), lessFirst);&lt;br /&gt;
&lt;br /&gt;
for (int i = 0; i &amp;lt; numImages; i++)&lt;br /&gt;
	{&lt;br /&gt;
		ImgArr[i].create(vec[i], CUVI_LOAD_IMAGE_COLOR_KEEP_DEPTH);&lt;br /&gt;
		cout &amp;lt;&amp;lt; vec[i]&amp;lt;&amp;lt; std::endl;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage focusImage, slice_info;&lt;br /&gt;
CuviFilter denoiseFilter = CuviSpecialFilters::gaussian(CuviSize(11, 11), 15.0f);&lt;br /&gt;
cuvi::computerVision::focusStack(ImgArr.data(), numImages, focusImage, slice_info, denoiseFilter);&lt;br /&gt;
&lt;br /&gt;
printf(&amp;quot;\nSaving to disk..&amp;quot;);&lt;br /&gt;
cuvi::io::saveImage(focusImage, result);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:FocusStack&amp;diff=1784</id>
		<title>Function:FocusStack</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:FocusStack&amp;diff=1784"/>
		<updated>2024-11-18T08:52:26Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Stacks multiple images into a single, all focused image. The input images need to be aligned and in order. The function also returns a depth_info image that contains the information against each pixel where it was picked from the stack. &lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
CUVI_EXPORTS CuviStatus focusStack(CuviImage* images, const int numImages, CuviImage&amp;amp; stack, CuviImage&amp;amp; depth_info, const CuviFilter denoiseFilter, const CuviStream&amp;amp; stream);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| images&lt;br /&gt;
| const CuviImage*&lt;br /&gt;
| Input images array&lt;br /&gt;
|-&lt;br /&gt;
| numImages&lt;br /&gt;
| const int&lt;br /&gt;
| Number of images &lt;br /&gt;
|-&lt;br /&gt;
| stack&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant image&lt;br /&gt;
|-&lt;br /&gt;
| depth_info&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Slice/Depth information against stacked image&lt;br /&gt;
|-&lt;br /&gt;
| denoiseFilter&lt;br /&gt;
| CuviFilter &lt;br /&gt;
| Filter to remove noise&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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 x N&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3 x N&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Samples====&lt;br /&gt;
[[File:Fs-in-1.jpg|none|frame| Input image with foreground focused]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Fs-in-2.jpg|none|frame| Input image with background focused]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Focused.jpg|none|frame| Focus-Stacked Image]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Code Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
std::string path = &amp;quot;D:/dataset/fs/imageFolder/&amp;quot;;&lt;br /&gt;
std::string result = &amp;quot;D:/dataset/fs/focused.png&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for (const auto&amp;amp; entry : fs::directory_iterator(path))&lt;br /&gt;
	{&lt;br /&gt;
		if (entry.path().has_extension() &amp;amp;&amp;amp; isSupportedExtension(entry.path().extension().string()))&lt;br /&gt;
			vec.push_back(entry.path().string());&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
int numImages = vec.size();&lt;br /&gt;
vector&amp;lt;CuviImage&amp;gt; ImgArr(numImages);&lt;br /&gt;
//Sort filesnames to read in order. THIS IS VERY IMPORTANT FOR FOCUS STACKING&lt;br /&gt;
sort(vec.begin(), vec.end(), lessFirst);&lt;br /&gt;
&lt;br /&gt;
for (int i = 0; i &amp;lt; numImages; i++)&lt;br /&gt;
	{&lt;br /&gt;
		ImgArr[i].create(vec[i], CUVI_LOAD_IMAGE_COLOR_KEEP_DEPTH);&lt;br /&gt;
		cout &amp;lt;&amp;lt; vec[i]&amp;lt;&amp;lt; std::endl;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage focusImage;&lt;br /&gt;
CuviFilter denoiseFilter = CuviSpecialFilters::gaussian(CuviSize(11, 11), 15.0f);&lt;br /&gt;
cuvi::computerVision::focusStack(ImgArr.data(), numImages, focusImage, denoiseFilter);&lt;br /&gt;
&lt;br /&gt;
printf(&amp;quot;\nSaving to disk..&amp;quot;);&lt;br /&gt;
cuvi::io::saveImage(focusImage, result);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:FocusStack&amp;diff=1783</id>
		<title>Function:FocusStack</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:FocusStack&amp;diff=1783"/>
		<updated>2024-11-18T08:49:51Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Function */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Stacks multiple images into a single image. Images need to be aligned.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
CUVI_EXPORTS CuviStatus focusStack(CuviImage* images, const int numImages, CuviImage&amp;amp; stack, CuviImage&amp;amp; depth_info, const CuviFilter denoiseFilter, const CuviStream&amp;amp; stream);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| ImgArr&lt;br /&gt;
| const CuviImage*&lt;br /&gt;
| Input images array&lt;br /&gt;
|-&lt;br /&gt;
| numImages&lt;br /&gt;
| const int&lt;br /&gt;
| Number of images &lt;br /&gt;
|-&lt;br /&gt;
| sharpImage&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant image&lt;br /&gt;
|-&lt;br /&gt;
| denoiseFilter&lt;br /&gt;
| CuviFilter &lt;br /&gt;
| Filter to remove noise&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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 x N&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3 x N&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Samples====&lt;br /&gt;
[[File:Fs-in-1.jpg|none|frame| Input image with foreground focused]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Fs-in-2.jpg|none|frame| Input image with background focused]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Focused.jpg|none|frame| Focus-Stacked Image]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Code Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
std::string path = &amp;quot;D:/dataset/fs/imageFolder/&amp;quot;;&lt;br /&gt;
std::string result = &amp;quot;D:/dataset/fs/focused.png&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for (const auto&amp;amp; entry : fs::directory_iterator(path))&lt;br /&gt;
	{&lt;br /&gt;
		if (entry.path().has_extension() &amp;amp;&amp;amp; isSupportedExtension(entry.path().extension().string()))&lt;br /&gt;
			vec.push_back(entry.path().string());&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
int numImages = vec.size();&lt;br /&gt;
vector&amp;lt;CuviImage&amp;gt; ImgArr(numImages);&lt;br /&gt;
//Sort filesnames to read in order. THIS IS VERY IMPORTANT FOR FOCUS STACKING&lt;br /&gt;
sort(vec.begin(), vec.end(), lessFirst);&lt;br /&gt;
&lt;br /&gt;
for (int i = 0; i &amp;lt; numImages; i++)&lt;br /&gt;
	{&lt;br /&gt;
		ImgArr[i].create(vec[i], CUVI_LOAD_IMAGE_COLOR_KEEP_DEPTH);&lt;br /&gt;
		cout &amp;lt;&amp;lt; vec[i]&amp;lt;&amp;lt; std::endl;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage focusImage;&lt;br /&gt;
CuviFilter denoiseFilter = CuviSpecialFilters::gaussian(CuviSize(11, 11), 15.0f);&lt;br /&gt;
cuvi::computerVision::focusStack(ImgArr.data(), numImages, focusImage, denoiseFilter);&lt;br /&gt;
&lt;br /&gt;
printf(&amp;quot;\nSaving to disk..&amp;quot;);&lt;br /&gt;
cuvi::io::saveImage(focusImage, result);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:FocusStack&amp;diff=1782</id>
		<title>Function:FocusStack</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:FocusStack&amp;diff=1782"/>
		<updated>2024-11-18T08:49:32Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Function */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Stacks multiple images into a single image. Images need to be aligned.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
CUVI_EXPORTS CuviStatus focusStack(CuviImage* images, const int numImages, CuviImage&amp;amp; stack, CuviImage&amp;amp; depth_info, const CuviFilter denoiseFilter = CuviSpecialFilters::gaussian(CuviSize(15, 15), 5.0f), 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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| ImgArr&lt;br /&gt;
| const CuviImage*&lt;br /&gt;
| Input images array&lt;br /&gt;
|-&lt;br /&gt;
| numImages&lt;br /&gt;
| const int&lt;br /&gt;
| Number of images &lt;br /&gt;
|-&lt;br /&gt;
| sharpImage&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant image&lt;br /&gt;
|-&lt;br /&gt;
| denoiseFilter&lt;br /&gt;
| CuviFilter &lt;br /&gt;
| Filter to remove noise&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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 x N&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3 x N&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Samples====&lt;br /&gt;
[[File:Fs-in-1.jpg|none|frame| Input image with foreground focused]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Fs-in-2.jpg|none|frame| Input image with background focused]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Focused.jpg|none|frame| Focus-Stacked Image]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Code Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
std::string path = &amp;quot;D:/dataset/fs/imageFolder/&amp;quot;;&lt;br /&gt;
std::string result = &amp;quot;D:/dataset/fs/focused.png&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for (const auto&amp;amp; entry : fs::directory_iterator(path))&lt;br /&gt;
	{&lt;br /&gt;
		if (entry.path().has_extension() &amp;amp;&amp;amp; isSupportedExtension(entry.path().extension().string()))&lt;br /&gt;
			vec.push_back(entry.path().string());&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
int numImages = vec.size();&lt;br /&gt;
vector&amp;lt;CuviImage&amp;gt; ImgArr(numImages);&lt;br /&gt;
//Sort filesnames to read in order. THIS IS VERY IMPORTANT FOR FOCUS STACKING&lt;br /&gt;
sort(vec.begin(), vec.end(), lessFirst);&lt;br /&gt;
&lt;br /&gt;
for (int i = 0; i &amp;lt; numImages; i++)&lt;br /&gt;
	{&lt;br /&gt;
		ImgArr[i].create(vec[i], CUVI_LOAD_IMAGE_COLOR_KEEP_DEPTH);&lt;br /&gt;
		cout &amp;lt;&amp;lt; vec[i]&amp;lt;&amp;lt; std::endl;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage focusImage;&lt;br /&gt;
CuviFilter denoiseFilter = CuviSpecialFilters::gaussian(CuviSize(11, 11), 15.0f);&lt;br /&gt;
cuvi::computerVision::focusStack(ImgArr.data(), numImages, focusImage, denoiseFilter);&lt;br /&gt;
&lt;br /&gt;
printf(&amp;quot;\nSaving to disk..&amp;quot;);&lt;br /&gt;
cuvi::io::saveImage(focusImage, result);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:FocusStack&amp;diff=1781</id>
		<title>Function:FocusStack</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:FocusStack&amp;diff=1781"/>
		<updated>2024-11-18T08:49:05Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Function */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Stacks multiple images into a single image. Images need to be aligned.&lt;br /&gt;
===Function===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus focusStack(const CuviImage* ImgArr, const int numImages, CuviImage&amp;amp; stackedImage, CuviImage&amp;amp; depth_info, CuviFilter denoiseFilter, 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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| ImgArr&lt;br /&gt;
| const CuviImage*&lt;br /&gt;
| Input images array&lt;br /&gt;
|-&lt;br /&gt;
| numImages&lt;br /&gt;
| const int&lt;br /&gt;
| Number of images &lt;br /&gt;
|-&lt;br /&gt;
| sharpImage&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant image&lt;br /&gt;
|-&lt;br /&gt;
| denoiseFilter&lt;br /&gt;
| CuviFilter &lt;br /&gt;
| Filter to remove noise&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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 x N&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3 x N&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Samples====&lt;br /&gt;
[[File:Fs-in-1.jpg|none|frame| Input image with foreground focused]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Fs-in-2.jpg|none|frame| Input image with background focused]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Focused.jpg|none|frame| Focus-Stacked Image]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Code Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
std::string path = &amp;quot;D:/dataset/fs/imageFolder/&amp;quot;;&lt;br /&gt;
std::string result = &amp;quot;D:/dataset/fs/focused.png&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for (const auto&amp;amp; entry : fs::directory_iterator(path))&lt;br /&gt;
	{&lt;br /&gt;
		if (entry.path().has_extension() &amp;amp;&amp;amp; isSupportedExtension(entry.path().extension().string()))&lt;br /&gt;
			vec.push_back(entry.path().string());&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
int numImages = vec.size();&lt;br /&gt;
vector&amp;lt;CuviImage&amp;gt; ImgArr(numImages);&lt;br /&gt;
//Sort filesnames to read in order. THIS IS VERY IMPORTANT FOR FOCUS STACKING&lt;br /&gt;
sort(vec.begin(), vec.end(), lessFirst);&lt;br /&gt;
&lt;br /&gt;
for (int i = 0; i &amp;lt; numImages; i++)&lt;br /&gt;
	{&lt;br /&gt;
		ImgArr[i].create(vec[i], CUVI_LOAD_IMAGE_COLOR_KEEP_DEPTH);&lt;br /&gt;
		cout &amp;lt;&amp;lt; vec[i]&amp;lt;&amp;lt; std::endl;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CuviImage focusImage;&lt;br /&gt;
CuviFilter denoiseFilter = CuviSpecialFilters::gaussian(CuviSize(11, 11), 15.0f);&lt;br /&gt;
cuvi::computerVision::focusStack(ImgArr.data(), numImages, focusImage, denoiseFilter);&lt;br /&gt;
&lt;br /&gt;
printf(&amp;quot;\nSaving to disk..&amp;quot;);&lt;br /&gt;
cuvi::io::saveImage(focusImage, result);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Guide&amp;diff=1780</id>
		<title>CUVI Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Guide&amp;diff=1780"/>
		<updated>2024-06-23T13:09:02Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CUDA Vision &amp;amp; Imaging Library, '''CUVI''', is a simple to use, GPU accelerated computer vision SDK.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;180px&amp;quot;|&lt;br /&gt;
[[File:Logo.png]]&lt;br /&gt;
|td valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
	&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;200px&amp;quot; valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Getting Started&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
*[[Getting Started]]&lt;br /&gt;
*[[Image I/O &amp;amp; Framework|I/O &amp;amp; Framework]]&lt;br /&gt;
*[[CUVI by Example]]&lt;br /&gt;
*[[CUVI Features|Features]]&lt;br /&gt;
*[http://www.cuvilib.com/downloads/ Downloads]&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
|width=&amp;quot;200px&amp;quot; valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Useful Links&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
*[[Performance &amp;amp; Benchmark|Benchmark]]&lt;br /&gt;
*[[Streams and Multi-GPU using CUVI|Multi-GPU]]&lt;br /&gt;
*[[CUVI Release Notes|Release Notes]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Features&amp;diff=1779</id>
		<title>CUVI Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Features&amp;diff=1779"/>
		<updated>2024-06-23T13:07:14Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Color Operations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
CUVI SDK is an image processing kit written and developed on C-CUDA and C++ for over a period of ten years. The SDK includes 100+ image processing and computer vision functions that are plug-n-play for imaging applications in a plethora of verticals. Each function is hand crafted and highly optimized to run on CUDA supported GPUs. Many functions use our own proprietary approach to algorithms and processing to make the best out of hardware and input data.&lt;br /&gt;
&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;
# Image Codecs&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:dot|dot]]&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:InRange|inRange]] - Checks if image pixels lie between a range of values&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:AutoColor|autoColor]] - Fixes false colors at pixel level using a propriety approach&lt;br /&gt;
# [[Function:BorderMask|borderMask]] - Masks image borders with custom intensity&lt;br /&gt;
# [[Function:blackGammaLUT|blackGammaLUT]] - Remaps image values according to 3 look up tables&lt;br /&gt;
# [[Function:ChannelMix|channelMix]] - Applies a color twist matrix to an image&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:Dehaze|dehaze]] - Makes sense of images taken in a blizzard&lt;br /&gt;
# [[Function:Demosaic|demosaic]] - Restores an RGB image from a CFA Bayer image&lt;br /&gt;
# [[Function:DemosaicHQLI|demosaicHQLI]] - Restores an RGB using advanced hq debayering&lt;br /&gt;
# [[Function:DemosaicDFPD|demosaicDFPD]] - Restores an RGB image from a CFA Bayer image using DFPD algorithm&lt;br /&gt;
# [[Function:fpn|fpn]] - fixed point noise remove via camera black image&lt;br /&gt;
# [[Function:FPNCorrection|FPNCorrection]] - fixed point noise removal via black and white images and gain&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:Lowlight|lowlight]] -  enhances the low intensity colors in a dark photo&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;
# [[Function:YUV422TOV210|YUV422TOV210]] - Converts YUV422 image to an V210 image.&lt;br /&gt;
# [[Function:YUV444TOV210|YUV444TOV210]] - Converts YUV444 image to an V210 image.&lt;br /&gt;
# [[Function:V210TOYUV444|V210TOYUV444]] - Converts V210 image to an YUV444 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:findTransformECC|findTransformECC]] - Calculates geometric transform between two images in terms of the ECC criterion&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;
# [[Function:FocusStack|focusStack]] - Stacks multiples photos with various focus into a single all focused image&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 specified anchor&lt;br /&gt;
# [[Function:RotateNoCrop|RotateNoCrop]] - Rotates an image about specified anchor&lt;br /&gt;
# [[Function:Taper|taper]] - Smartly extends image border&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;
# [[Function:WarpPerspective|warpPerspective]] - Applies an affine transformation to an image.&lt;br /&gt;
# [[Function:WarpPerspectiveBack|warpPerspectiveBack]] - Applies an inverse affine transformation to an image.&lt;br /&gt;
&lt;br /&gt;
===Image Filtering===&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;
# [[Function:UnderwaterFilter|underwaterFilter]] - Brings out original colors of underwater photography.&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;
===Image Codecs===&lt;br /&gt;
# [[Function:Encode|encode]] - Encodes image pixel array into JPEG.&lt;br /&gt;
# [[Function:Decode|decode]] - Decodes a JPEG into an image pixel array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--===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.--&amp;gt;&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;
* upload(const void* pSrcHost, CuviRect srcROI, const Cuvi32s srcPitch, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin) - Copy a chunk of image data from host to device. &lt;br /&gt;
* upload(const void* pSrcHost, CuviRect srcROI, const Cuvi32s srcPitch, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const CuviStream&amp;amp; stream) - Asynchronously copy a chunk of 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;
* download(void* pDstHost, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const Cuvi32s dstPitch, CuviRect srcROI) - Copy a chunk of image data from device to host&lt;br /&gt;
* download(void* pDstHost, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const Cuvi32s dstPitch, CuviRect srcROI, const CuviStream&amp;amp; stream) - Asynchronously copy a chunk of image data from device to host&lt;br /&gt;
* copyTo(CuviImage&amp;amp; dst, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, CuviRect srcROI, const CuviStream&amp;amp; stream = CuviStream()) - Copy image data (or an ROI of it) from one Cuvi Image to another.&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>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1778</id>
		<title>CUVI Release Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1778"/>
		<updated>2024-06-23T13:00:09Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==Version 2.0.2 (Latest Stable)==&lt;br /&gt;
*Major Release Date: June 15, 2024&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
**Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
**Toolkit version 12.5.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack|focusStack]]''' (for additional debug output)&lt;br /&gt;
**Changed '''[[Function:lowlight|lowLight]]''' (added monochrome support)&lt;br /&gt;
**Changed '''[[Function:demosaic|demosaic]]''' (large window support added)&lt;br /&gt;
**Added '''[[Function:demosaicHQLI|demosaicHQLI]]'''&lt;br /&gt;
**Bug fixes&lt;br /&gt;
**Major code refactoring&lt;br /&gt;
&lt;br /&gt;
==Version 1.8.0==&lt;br /&gt;
*Major Release Date: Oct 16, 2022&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:underwaterFilter]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:autoColor]]''' (for results)&lt;br /&gt;
**Added '''[[Function:findTransformECC]]'''&lt;br /&gt;
**Added '''[[Function:warpAffine]]'''&lt;br /&gt;
**Added '''[[Function:dot]]'''&lt;br /&gt;
**Added '''[[Function:inRange]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.7.0==&lt;br /&gt;
*Major Release Date: Apr 27, 2021&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:focusStack]]'''&lt;br /&gt;
**Added new '''[[Function:encode]]'''&lt;br /&gt;
**Added new '''[[Function:decode]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.5==&lt;br /&gt;
*Major Release Date: Nov 05, 2020&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Removed '''[[Function:Invert]]'''&lt;br /&gt;
*10x Speed up '''[[Function:underwaterFilter]]'''&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
*Added Support for Linux (x64 and aarch64) for trial version&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.1==&lt;br /&gt;
*Minor Release Date: Nov 17, 2019&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:rotateNoCrop]]'''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.0==&lt;br /&gt;
*Major Release Date: June 30, 2019&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Trial limit exceeded to 1000x1000 image size&lt;br /&gt;
**Bug fixes in '''[[Function:trackFeatures]]''', '''[[Function:colorPick]]''', '''[[Function:haarFwd]]'''&lt;br /&gt;
**Added '''copyTo''' function to CuviImage which copies image data (or an ROI of it) from one image to another.&lt;br /&gt;
**Added ROI support for '''upload''' and '''download''' functions of CuviImage.&lt;br /&gt;
**Added new '''[[Function:taper]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspective]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspectiveBack]]'''&lt;br /&gt;
**Changed '''[[Function:rotate]]''' (ROI, anti-alaising at boundary added. Performance 5x improved)&lt;br /&gt;
**Removed Video Stabilization module.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.5==&lt;br /&gt;
*Major Release Date: June 12, 2017&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
**Latest Visual C++ redistributable package [[https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads download]]&lt;br /&gt;
** Build for Compute Capability 3.0, 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2 and 7.0&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''[[Function:lowlight]]'''&lt;br /&gt;
**Added '''[[Function:autoColor]]'''&lt;br /&gt;
**Added '''[[Function:dehaze]]'''&lt;br /&gt;
**2x Speed up '''[[Function:DemosaicDFPD]]'''&lt;br /&gt;
**Function:colorTwist renamed to '''[[Function:ChannelMix]]'''&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Function:enhance renamed to '''[[Function:underwaterFilter]]''' and improved&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Latest CUDA GPUs &amp;amp; architectures support.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.2==&lt;br /&gt;
*Major Release Date: June 12, 2015&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Bug fix '''demosiacDFPD'''.&lt;br /&gt;
**Speed up '''demosiacDFPD'''.&lt;br /&gt;
*Removed ''Video Stabilization'' module&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Support for latest GPUs.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.1==&lt;br /&gt;
*Release Date: June 12, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''demosiacDFPD''' that restores an RGB image from a CFA Bayer image using DFPD algorithm.&lt;br /&gt;
*Added ''Video Stabilization'' module&lt;br /&gt;
**Added '''CuviVideoStabilizer''' class for transparent video stabilization.&lt;br /&gt;
**Added '''CuviMotionEstimator''' class to determine the global motion vector between 2 frames.&lt;br /&gt;
*Core&lt;br /&gt;
**Added ''cuvi::showImage'' function to display the image.&lt;br /&gt;
**Added ''cuvi::waitKeyPress'' function to keep displaying the window opened by ''cuvi::showImage''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.0==&lt;br /&gt;
*Major Release Date: May 05, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Core:&lt;br /&gt;
**Added arithmtic and logic operators for CuviImage.&lt;br /&gt;
**Added channel extraction operator [] for CuviImage.&lt;br /&gt;
**Added CuviPyramid class&lt;br /&gt;
**Added CuviHistogram class&lt;br /&gt;
**Added CuviSpecialFilters class for creating standard predefined filters.&lt;br /&gt;
&lt;br /&gt;
*Data Exchange:&lt;br /&gt;
**Added getChannel function for channel extraction.&lt;br /&gt;
&lt;br /&gt;
*Arithmetic and Logical:&lt;br /&gt;
**Added different point scalar functions&lt;br /&gt;
**abs -&amp;gt; Image absolute value&lt;br /&gt;
**exp -&amp;gt; e raised to power image&lt;br /&gt;
**absDiff -&amp;gt; Absolute difference between 2 images&lt;br /&gt;
**sqrt -&amp;gt; Square root&lt;br /&gt;
**cbrt -&amp;gt; Cube root&lt;br /&gt;
**floor&lt;br /&gt;
**ceil&lt;br /&gt;
**round&lt;br /&gt;
**Added bit shifting functions (SHL and SHR)&lt;br /&gt;
**Added matrix multiplication (matMul)&lt;br /&gt;
**Added matrix multiplication with transpose -&amp;gt; A*A' or A'*A&lt;br /&gt;
**Added matrix inversion for square images.&lt;br /&gt;
&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added lookup table transformation function (LUT)&lt;br /&gt;
**Merged rgba2gray into rgb2gray&lt;br /&gt;
**Added color space conversions:&lt;br /&gt;
***Grayscale --&amp;gt; RGB 	(gray2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; YCbCr (rgb2ycbcr and ycbcr2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; HSV (rgb2hsv and hsv2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; Lab (rgb2Lab and Lab2rgb)&lt;br /&gt;
&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Added median filtering (medianFilter)&lt;br /&gt;
**Added image enhancement algorithm (fusion)&lt;br /&gt;
&lt;br /&gt;
*Image Statistics:&lt;br /&gt;
**Added histogram calculation function (calcHist)&lt;br /&gt;
&lt;br /&gt;
*Misc:&lt;br /&gt;
**Replaced raw pointer/array arguments with CuviScalar class for the following functions:&lt;br /&gt;
***rgb2gray&lt;br /&gt;
***sum, mean, min, max, minMax, countInRange&lt;br /&gt;
&lt;br /&gt;
==Version 1.2.1==&lt;br /&gt;
*Major Release Date: April 17, 2013&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*New Features/Enchancements&lt;br /&gt;
**[[Function:pow|pow]] - Raises each pixel to the specified power.&lt;br /&gt;
**[[Function:rectangle |rectangle ]] - draws a rectangle on the image.&lt;br /&gt;
**[[Function:adjust |adjust ]] function can now take adjust parameters separately for each channel&lt;br /&gt;
**[[Function:haarFwd|haarFwd]] and [[Function:haarInv|haarInv]] now also support 3 channel images.&lt;br /&gt;
&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**C Interface has been discontinued.&lt;br /&gt;
**All functions in C++ interface now take CuviImage references instead of pointers.&lt;br /&gt;
**Added image I/O. CuviImage can now be loaded and saved directly on the disk without the requirement of a host.&lt;br /&gt;
**Added namespace &amp;quot;device&amp;quot; which contains device management functions:&lt;br /&gt;
***getDeviceCount&lt;br /&gt;
***getCurrentDevice&lt;br /&gt;
***setCurrentDevice(const Cuvi32s id);&lt;br /&gt;
***syncCurrentDevice()&lt;br /&gt;
***resetCurrentDevice()&lt;br /&gt;
***getDeviceProperties(const int deviceID, CuviDeviceProperties&amp;amp; props);&lt;br /&gt;
&lt;br /&gt;
*Features removal:&lt;br /&gt;
**eigenVals&lt;br /&gt;
**eigenValsVecs&lt;br /&gt;
**meanStdDev&lt;br /&gt;
**Color2Gray (added as an overload of rgb2gray)&lt;br /&gt;
&lt;br /&gt;
==Version 1.2==&lt;br /&gt;
*Major Release Date: May 11, 2012&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7, Linux or Mac OSX&lt;br /&gt;
*New Features&lt;br /&gt;
**[[Function:CountInRange|CountInRange]] - Counts the number of pixels within the given intensity range&lt;br /&gt;
**[[Function:Sum|Sum]] - Computes the sum of pixel values of each channel in an image&lt;br /&gt;
**[[Function:Max|Max]] - Computes the maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Min|Min]] - Computes the minimum pixel value of each channel in an image&lt;br /&gt;
**[[Function:MinMax|MinMax]] - Computes the minimum and maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Mean|Mean]] - Computes the mean of each channel of the input image&lt;br /&gt;
**[[Function:MeanStdDev|MeanStdDev]] - Computes the mean and standard deviation of each channel in an image&lt;br /&gt;
**[[Function:EigenValsVecs|EigenValsVecs]] - Calculates eigen values and eigen vectors at each pixel in an image&lt;br /&gt;
**[[Function:Flip|Flip]] - Mirrors an image about a horizontal or vertical axis, or both&lt;br /&gt;
**[[Function:ImageGradients|ImageGradients]] - Calculates X and Y gradients of image&lt;br /&gt;
**[[Function:MinEigenVal|MinEigenVal]] - Calculates the minimum eigen value at each pixel in an image&lt;br /&gt;
**[[Function:Rotate|Rotate]] - Rotates an image with the origin (0,0) or center&lt;br /&gt;
**[[Function:Transpose|Transpose]] - Takes Transpose of the image&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**Instead of a single function for all color operations and one for arithmetic operations, the new build contains individual functions like [[Function:RGB2YUV|RGB2YUV]] and [[Function:Add|Add]] to improve usability&lt;br /&gt;
**The functions 'split' and 'merge' are renamed to [[Function:ChannelSplit|ChannelSplit]] and [[Function:ChannelMerge|ChannelMerge]]&lt;br /&gt;
**The function 'bayerToRGB' is renamed to [[Function:Demosaic|Demosaic]]&lt;br /&gt;
**The function 'imFilter' is renamed to [[Function:ImageFilter|ImageFilter]] and its input argument have been simplified&lt;br /&gt;
**The function 'dwt' and 'idwt' have been renamed to [[Function:HaarFwd|haarFwd]] and [[Function:HaarInv|haarInv]] respectively&lt;br /&gt;
**CUVI now includes a C++ Timer class that accurately profiles your application timing&lt;br /&gt;
**CuviMat is introduced which is C counterpart of the class CuviImage&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
**[[Function:ImageFilter|ImageFilter]] bug fixed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Release notes for previous versions is not available''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1777</id>
		<title>CUVI Release Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1777"/>
		<updated>2024-06-23T12:59:36Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==Version 2.0.2 (Latest Stable)==&lt;br /&gt;
*Major Release Date: June 15, 2024&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
**Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
**Toolkit version 12.5.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack|focusStack]]''' (for additional debug output)&lt;br /&gt;
**Changed '''[[Function:lowlight]]''' (added monochrome support)&lt;br /&gt;
**Changed '''[[Function:demosaic]]''' (large window support added)&lt;br /&gt;
**Added '''[[Function:demosaicHQLI]]'''&lt;br /&gt;
**Bug fixes&lt;br /&gt;
**Major code refactoring&lt;br /&gt;
&lt;br /&gt;
==Version 1.8.0==&lt;br /&gt;
*Major Release Date: Oct 16, 2022&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:underwaterFilter]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:autoColor]]''' (for results)&lt;br /&gt;
**Added '''[[Function:findTransformECC]]'''&lt;br /&gt;
**Added '''[[Function:warpAffine]]'''&lt;br /&gt;
**Added '''[[Function:dot]]'''&lt;br /&gt;
**Added '''[[Function:inRange]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.7.0==&lt;br /&gt;
*Major Release Date: Apr 27, 2021&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:focusStack]]'''&lt;br /&gt;
**Added new '''[[Function:encode]]'''&lt;br /&gt;
**Added new '''[[Function:decode]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.5==&lt;br /&gt;
*Major Release Date: Nov 05, 2020&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Removed '''[[Function:Invert]]'''&lt;br /&gt;
*10x Speed up '''[[Function:underwaterFilter]]'''&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
*Added Support for Linux (x64 and aarch64) for trial version&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.1==&lt;br /&gt;
*Minor Release Date: Nov 17, 2019&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:rotateNoCrop]]'''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.0==&lt;br /&gt;
*Major Release Date: June 30, 2019&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Trial limit exceeded to 1000x1000 image size&lt;br /&gt;
**Bug fixes in '''[[Function:trackFeatures]]''', '''[[Function:colorPick]]''', '''[[Function:haarFwd]]'''&lt;br /&gt;
**Added '''copyTo''' function to CuviImage which copies image data (or an ROI of it) from one image to another.&lt;br /&gt;
**Added ROI support for '''upload''' and '''download''' functions of CuviImage.&lt;br /&gt;
**Added new '''[[Function:taper]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspective]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspectiveBack]]'''&lt;br /&gt;
**Changed '''[[Function:rotate]]''' (ROI, anti-alaising at boundary added. Performance 5x improved)&lt;br /&gt;
**Removed Video Stabilization module.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.5==&lt;br /&gt;
*Major Release Date: June 12, 2017&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
**Latest Visual C++ redistributable package [[https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads download]]&lt;br /&gt;
** Build for Compute Capability 3.0, 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2 and 7.0&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''[[Function:lowlight]]'''&lt;br /&gt;
**Added '''[[Function:autoColor]]'''&lt;br /&gt;
**Added '''[[Function:dehaze]]'''&lt;br /&gt;
**2x Speed up '''[[Function:DemosaicDFPD]]'''&lt;br /&gt;
**Function:colorTwist renamed to '''[[Function:ChannelMix]]'''&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Function:enhance renamed to '''[[Function:underwaterFilter]]''' and improved&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Latest CUDA GPUs &amp;amp; architectures support.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.2==&lt;br /&gt;
*Major Release Date: June 12, 2015&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Bug fix '''demosiacDFPD'''.&lt;br /&gt;
**Speed up '''demosiacDFPD'''.&lt;br /&gt;
*Removed ''Video Stabilization'' module&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Support for latest GPUs.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.1==&lt;br /&gt;
*Release Date: June 12, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''demosiacDFPD''' that restores an RGB image from a CFA Bayer image using DFPD algorithm.&lt;br /&gt;
*Added ''Video Stabilization'' module&lt;br /&gt;
**Added '''CuviVideoStabilizer''' class for transparent video stabilization.&lt;br /&gt;
**Added '''CuviMotionEstimator''' class to determine the global motion vector between 2 frames.&lt;br /&gt;
*Core&lt;br /&gt;
**Added ''cuvi::showImage'' function to display the image.&lt;br /&gt;
**Added ''cuvi::waitKeyPress'' function to keep displaying the window opened by ''cuvi::showImage''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.0==&lt;br /&gt;
*Major Release Date: May 05, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Core:&lt;br /&gt;
**Added arithmtic and logic operators for CuviImage.&lt;br /&gt;
**Added channel extraction operator [] for CuviImage.&lt;br /&gt;
**Added CuviPyramid class&lt;br /&gt;
**Added CuviHistogram class&lt;br /&gt;
**Added CuviSpecialFilters class for creating standard predefined filters.&lt;br /&gt;
&lt;br /&gt;
*Data Exchange:&lt;br /&gt;
**Added getChannel function for channel extraction.&lt;br /&gt;
&lt;br /&gt;
*Arithmetic and Logical:&lt;br /&gt;
**Added different point scalar functions&lt;br /&gt;
**abs -&amp;gt; Image absolute value&lt;br /&gt;
**exp -&amp;gt; e raised to power image&lt;br /&gt;
**absDiff -&amp;gt; Absolute difference between 2 images&lt;br /&gt;
**sqrt -&amp;gt; Square root&lt;br /&gt;
**cbrt -&amp;gt; Cube root&lt;br /&gt;
**floor&lt;br /&gt;
**ceil&lt;br /&gt;
**round&lt;br /&gt;
**Added bit shifting functions (SHL and SHR)&lt;br /&gt;
**Added matrix multiplication (matMul)&lt;br /&gt;
**Added matrix multiplication with transpose -&amp;gt; A*A' or A'*A&lt;br /&gt;
**Added matrix inversion for square images.&lt;br /&gt;
&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added lookup table transformation function (LUT)&lt;br /&gt;
**Merged rgba2gray into rgb2gray&lt;br /&gt;
**Added color space conversions:&lt;br /&gt;
***Grayscale --&amp;gt; RGB 	(gray2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; YCbCr (rgb2ycbcr and ycbcr2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; HSV (rgb2hsv and hsv2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; Lab (rgb2Lab and Lab2rgb)&lt;br /&gt;
&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Added median filtering (medianFilter)&lt;br /&gt;
**Added image enhancement algorithm (fusion)&lt;br /&gt;
&lt;br /&gt;
*Image Statistics:&lt;br /&gt;
**Added histogram calculation function (calcHist)&lt;br /&gt;
&lt;br /&gt;
*Misc:&lt;br /&gt;
**Replaced raw pointer/array arguments with CuviScalar class for the following functions:&lt;br /&gt;
***rgb2gray&lt;br /&gt;
***sum, mean, min, max, minMax, countInRange&lt;br /&gt;
&lt;br /&gt;
==Version 1.2.1==&lt;br /&gt;
*Major Release Date: April 17, 2013&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*New Features/Enchancements&lt;br /&gt;
**[[Function:pow|pow]] - Raises each pixel to the specified power.&lt;br /&gt;
**[[Function:rectangle |rectangle ]] - draws a rectangle on the image.&lt;br /&gt;
**[[Function:adjust |adjust ]] function can now take adjust parameters separately for each channel&lt;br /&gt;
**[[Function:haarFwd|haarFwd]] and [[Function:haarInv|haarInv]] now also support 3 channel images.&lt;br /&gt;
&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**C Interface has been discontinued.&lt;br /&gt;
**All functions in C++ interface now take CuviImage references instead of pointers.&lt;br /&gt;
**Added image I/O. CuviImage can now be loaded and saved directly on the disk without the requirement of a host.&lt;br /&gt;
**Added namespace &amp;quot;device&amp;quot; which contains device management functions:&lt;br /&gt;
***getDeviceCount&lt;br /&gt;
***getCurrentDevice&lt;br /&gt;
***setCurrentDevice(const Cuvi32s id);&lt;br /&gt;
***syncCurrentDevice()&lt;br /&gt;
***resetCurrentDevice()&lt;br /&gt;
***getDeviceProperties(const int deviceID, CuviDeviceProperties&amp;amp; props);&lt;br /&gt;
&lt;br /&gt;
*Features removal:&lt;br /&gt;
**eigenVals&lt;br /&gt;
**eigenValsVecs&lt;br /&gt;
**meanStdDev&lt;br /&gt;
**Color2Gray (added as an overload of rgb2gray)&lt;br /&gt;
&lt;br /&gt;
==Version 1.2==&lt;br /&gt;
*Major Release Date: May 11, 2012&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7, Linux or Mac OSX&lt;br /&gt;
*New Features&lt;br /&gt;
**[[Function:CountInRange|CountInRange]] - Counts the number of pixels within the given intensity range&lt;br /&gt;
**[[Function:Sum|Sum]] - Computes the sum of pixel values of each channel in an image&lt;br /&gt;
**[[Function:Max|Max]] - Computes the maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Min|Min]] - Computes the minimum pixel value of each channel in an image&lt;br /&gt;
**[[Function:MinMax|MinMax]] - Computes the minimum and maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Mean|Mean]] - Computes the mean of each channel of the input image&lt;br /&gt;
**[[Function:MeanStdDev|MeanStdDev]] - Computes the mean and standard deviation of each channel in an image&lt;br /&gt;
**[[Function:EigenValsVecs|EigenValsVecs]] - Calculates eigen values and eigen vectors at each pixel in an image&lt;br /&gt;
**[[Function:Flip|Flip]] - Mirrors an image about a horizontal or vertical axis, or both&lt;br /&gt;
**[[Function:ImageGradients|ImageGradients]] - Calculates X and Y gradients of image&lt;br /&gt;
**[[Function:MinEigenVal|MinEigenVal]] - Calculates the minimum eigen value at each pixel in an image&lt;br /&gt;
**[[Function:Rotate|Rotate]] - Rotates an image with the origin (0,0) or center&lt;br /&gt;
**[[Function:Transpose|Transpose]] - Takes Transpose of the image&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**Instead of a single function for all color operations and one for arithmetic operations, the new build contains individual functions like [[Function:RGB2YUV|RGB2YUV]] and [[Function:Add|Add]] to improve usability&lt;br /&gt;
**The functions 'split' and 'merge' are renamed to [[Function:ChannelSplit|ChannelSplit]] and [[Function:ChannelMerge|ChannelMerge]]&lt;br /&gt;
**The function 'bayerToRGB' is renamed to [[Function:Demosaic|Demosaic]]&lt;br /&gt;
**The function 'imFilter' is renamed to [[Function:ImageFilter|ImageFilter]] and its input argument have been simplified&lt;br /&gt;
**The function 'dwt' and 'idwt' have been renamed to [[Function:HaarFwd|haarFwd]] and [[Function:HaarInv|haarInv]] respectively&lt;br /&gt;
**CUVI now includes a C++ Timer class that accurately profiles your application timing&lt;br /&gt;
**CuviMat is introduced which is C counterpart of the class CuviImage&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
**[[Function:ImageFilter|ImageFilter]] bug fixed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Release notes for previous versions is not available''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1776</id>
		<title>CUVI Release Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1776"/>
		<updated>2024-06-23T12:58:44Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==Version 2.0.2 (Latest Stable)==&lt;br /&gt;
*Major Release Date: June 15, 2024&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
**Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
**Toolkit version 12.5.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack] | focusStack]''' (for additional debug output)&lt;br /&gt;
**Changed '''[[Function:lowlight]]''' (added monochrome support)&lt;br /&gt;
**Changed '''[[Function:demosaic]]''' (large window support added)&lt;br /&gt;
**Added '''[[Function:demosaicHQLI]]'''&lt;br /&gt;
**Bug fixes&lt;br /&gt;
**Major code refactoring&lt;br /&gt;
&lt;br /&gt;
==Version 1.8.0==&lt;br /&gt;
*Major Release Date: Oct 16, 2022&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:underwaterFilter]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:autoColor]]''' (for results)&lt;br /&gt;
**Added '''[[Function:findTransformECC]]'''&lt;br /&gt;
**Added '''[[Function:warpAffine]]'''&lt;br /&gt;
**Added '''[[Function:dot]]'''&lt;br /&gt;
**Added '''[[Function:inRange]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.7.0==&lt;br /&gt;
*Major Release Date: Apr 27, 2021&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:focusStack]]'''&lt;br /&gt;
**Added new '''[[Function:encode]]'''&lt;br /&gt;
**Added new '''[[Function:decode]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.5==&lt;br /&gt;
*Major Release Date: Nov 05, 2020&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Removed '''[[Function:Invert]]'''&lt;br /&gt;
*10x Speed up '''[[Function:underwaterFilter]]'''&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
*Added Support for Linux (x64 and aarch64) for trial version&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.1==&lt;br /&gt;
*Minor Release Date: Nov 17, 2019&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:rotateNoCrop]]'''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.0==&lt;br /&gt;
*Major Release Date: June 30, 2019&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Trial limit exceeded to 1000x1000 image size&lt;br /&gt;
**Bug fixes in '''[[Function:trackFeatures]]''', '''[[Function:colorPick]]''', '''[[Function:haarFwd]]'''&lt;br /&gt;
**Added '''copyTo''' function to CuviImage which copies image data (or an ROI of it) from one image to another.&lt;br /&gt;
**Added ROI support for '''upload''' and '''download''' functions of CuviImage.&lt;br /&gt;
**Added new '''[[Function:taper]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspective]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspectiveBack]]'''&lt;br /&gt;
**Changed '''[[Function:rotate]]''' (ROI, anti-alaising at boundary added. Performance 5x improved)&lt;br /&gt;
**Removed Video Stabilization module.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.5==&lt;br /&gt;
*Major Release Date: June 12, 2017&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
**Latest Visual C++ redistributable package [[https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads download]]&lt;br /&gt;
** Build for Compute Capability 3.0, 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2 and 7.0&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''[[Function:lowlight]]'''&lt;br /&gt;
**Added '''[[Function:autoColor]]'''&lt;br /&gt;
**Added '''[[Function:dehaze]]'''&lt;br /&gt;
**2x Speed up '''[[Function:DemosaicDFPD]]'''&lt;br /&gt;
**Function:colorTwist renamed to '''[[Function:ChannelMix]]'''&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Function:enhance renamed to '''[[Function:underwaterFilter]]''' and improved&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Latest CUDA GPUs &amp;amp; architectures support.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.2==&lt;br /&gt;
*Major Release Date: June 12, 2015&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Bug fix '''demosiacDFPD'''.&lt;br /&gt;
**Speed up '''demosiacDFPD'''.&lt;br /&gt;
*Removed ''Video Stabilization'' module&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Support for latest GPUs.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.1==&lt;br /&gt;
*Release Date: June 12, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''demosiacDFPD''' that restores an RGB image from a CFA Bayer image using DFPD algorithm.&lt;br /&gt;
*Added ''Video Stabilization'' module&lt;br /&gt;
**Added '''CuviVideoStabilizer''' class for transparent video stabilization.&lt;br /&gt;
**Added '''CuviMotionEstimator''' class to determine the global motion vector between 2 frames.&lt;br /&gt;
*Core&lt;br /&gt;
**Added ''cuvi::showImage'' function to display the image.&lt;br /&gt;
**Added ''cuvi::waitKeyPress'' function to keep displaying the window opened by ''cuvi::showImage''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.0==&lt;br /&gt;
*Major Release Date: May 05, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Core:&lt;br /&gt;
**Added arithmtic and logic operators for CuviImage.&lt;br /&gt;
**Added channel extraction operator [] for CuviImage.&lt;br /&gt;
**Added CuviPyramid class&lt;br /&gt;
**Added CuviHistogram class&lt;br /&gt;
**Added CuviSpecialFilters class for creating standard predefined filters.&lt;br /&gt;
&lt;br /&gt;
*Data Exchange:&lt;br /&gt;
**Added getChannel function for channel extraction.&lt;br /&gt;
&lt;br /&gt;
*Arithmetic and Logical:&lt;br /&gt;
**Added different point scalar functions&lt;br /&gt;
**abs -&amp;gt; Image absolute value&lt;br /&gt;
**exp -&amp;gt; e raised to power image&lt;br /&gt;
**absDiff -&amp;gt; Absolute difference between 2 images&lt;br /&gt;
**sqrt -&amp;gt; Square root&lt;br /&gt;
**cbrt -&amp;gt; Cube root&lt;br /&gt;
**floor&lt;br /&gt;
**ceil&lt;br /&gt;
**round&lt;br /&gt;
**Added bit shifting functions (SHL and SHR)&lt;br /&gt;
**Added matrix multiplication (matMul)&lt;br /&gt;
**Added matrix multiplication with transpose -&amp;gt; A*A' or A'*A&lt;br /&gt;
**Added matrix inversion for square images.&lt;br /&gt;
&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added lookup table transformation function (LUT)&lt;br /&gt;
**Merged rgba2gray into rgb2gray&lt;br /&gt;
**Added color space conversions:&lt;br /&gt;
***Grayscale --&amp;gt; RGB 	(gray2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; YCbCr (rgb2ycbcr and ycbcr2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; HSV (rgb2hsv and hsv2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; Lab (rgb2Lab and Lab2rgb)&lt;br /&gt;
&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Added median filtering (medianFilter)&lt;br /&gt;
**Added image enhancement algorithm (fusion)&lt;br /&gt;
&lt;br /&gt;
*Image Statistics:&lt;br /&gt;
**Added histogram calculation function (calcHist)&lt;br /&gt;
&lt;br /&gt;
*Misc:&lt;br /&gt;
**Replaced raw pointer/array arguments with CuviScalar class for the following functions:&lt;br /&gt;
***rgb2gray&lt;br /&gt;
***sum, mean, min, max, minMax, countInRange&lt;br /&gt;
&lt;br /&gt;
==Version 1.2.1==&lt;br /&gt;
*Major Release Date: April 17, 2013&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*New Features/Enchancements&lt;br /&gt;
**[[Function:pow|pow]] - Raises each pixel to the specified power.&lt;br /&gt;
**[[Function:rectangle |rectangle ]] - draws a rectangle on the image.&lt;br /&gt;
**[[Function:adjust |adjust ]] function can now take adjust parameters separately for each channel&lt;br /&gt;
**[[Function:haarFwd|haarFwd]] and [[Function:haarInv|haarInv]] now also support 3 channel images.&lt;br /&gt;
&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**C Interface has been discontinued.&lt;br /&gt;
**All functions in C++ interface now take CuviImage references instead of pointers.&lt;br /&gt;
**Added image I/O. CuviImage can now be loaded and saved directly on the disk without the requirement of a host.&lt;br /&gt;
**Added namespace &amp;quot;device&amp;quot; which contains device management functions:&lt;br /&gt;
***getDeviceCount&lt;br /&gt;
***getCurrentDevice&lt;br /&gt;
***setCurrentDevice(const Cuvi32s id);&lt;br /&gt;
***syncCurrentDevice()&lt;br /&gt;
***resetCurrentDevice()&lt;br /&gt;
***getDeviceProperties(const int deviceID, CuviDeviceProperties&amp;amp; props);&lt;br /&gt;
&lt;br /&gt;
*Features removal:&lt;br /&gt;
**eigenVals&lt;br /&gt;
**eigenValsVecs&lt;br /&gt;
**meanStdDev&lt;br /&gt;
**Color2Gray (added as an overload of rgb2gray)&lt;br /&gt;
&lt;br /&gt;
==Version 1.2==&lt;br /&gt;
*Major Release Date: May 11, 2012&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7, Linux or Mac OSX&lt;br /&gt;
*New Features&lt;br /&gt;
**[[Function:CountInRange|CountInRange]] - Counts the number of pixels within the given intensity range&lt;br /&gt;
**[[Function:Sum|Sum]] - Computes the sum of pixel values of each channel in an image&lt;br /&gt;
**[[Function:Max|Max]] - Computes the maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Min|Min]] - Computes the minimum pixel value of each channel in an image&lt;br /&gt;
**[[Function:MinMax|MinMax]] - Computes the minimum and maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Mean|Mean]] - Computes the mean of each channel of the input image&lt;br /&gt;
**[[Function:MeanStdDev|MeanStdDev]] - Computes the mean and standard deviation of each channel in an image&lt;br /&gt;
**[[Function:EigenValsVecs|EigenValsVecs]] - Calculates eigen values and eigen vectors at each pixel in an image&lt;br /&gt;
**[[Function:Flip|Flip]] - Mirrors an image about a horizontal or vertical axis, or both&lt;br /&gt;
**[[Function:ImageGradients|ImageGradients]] - Calculates X and Y gradients of image&lt;br /&gt;
**[[Function:MinEigenVal|MinEigenVal]] - Calculates the minimum eigen value at each pixel in an image&lt;br /&gt;
**[[Function:Rotate|Rotate]] - Rotates an image with the origin (0,0) or center&lt;br /&gt;
**[[Function:Transpose|Transpose]] - Takes Transpose of the image&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**Instead of a single function for all color operations and one for arithmetic operations, the new build contains individual functions like [[Function:RGB2YUV|RGB2YUV]] and [[Function:Add|Add]] to improve usability&lt;br /&gt;
**The functions 'split' and 'merge' are renamed to [[Function:ChannelSplit|ChannelSplit]] and [[Function:ChannelMerge|ChannelMerge]]&lt;br /&gt;
**The function 'bayerToRGB' is renamed to [[Function:Demosaic|Demosaic]]&lt;br /&gt;
**The function 'imFilter' is renamed to [[Function:ImageFilter|ImageFilter]] and its input argument have been simplified&lt;br /&gt;
**The function 'dwt' and 'idwt' have been renamed to [[Function:HaarFwd|haarFwd]] and [[Function:HaarInv|haarInv]] respectively&lt;br /&gt;
**CUVI now includes a C++ Timer class that accurately profiles your application timing&lt;br /&gt;
**CuviMat is introduced which is C counterpart of the class CuviImage&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
**[[Function:ImageFilter|ImageFilter]] bug fixed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Release notes for previous versions is not available''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1775</id>
		<title>CUVI Release Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1775"/>
		<updated>2024-06-23T12:55:13Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Version 2.0.2 (Latest Stable) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==Version 2.0.2 (Latest Stable)==&lt;br /&gt;
*Major Release Date: June 15, 2024&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
**Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
**Toolkit version 12.5.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack]]''' (for additional debug output)&lt;br /&gt;
**Changed '''[[Function:lowlight]]''' (added monochrome support)&lt;br /&gt;
**Changed '''[[Function:demosaic]]''' (large window support added)&lt;br /&gt;
**Added '''[[Function:demosaicHQLI]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
**Major code refactoring&lt;br /&gt;
&lt;br /&gt;
==Version 1.8.0==&lt;br /&gt;
*Major Release Date: Oct 16, 2022&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:underwaterFilter]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:autoColor]]''' (for results)&lt;br /&gt;
**Added '''[[Function:findTransformECC]]'''&lt;br /&gt;
**Added '''[[Function:warpAffine]]'''&lt;br /&gt;
**Added '''[[Function:dot]]'''&lt;br /&gt;
**Added '''[[Function:inRange]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.7.0==&lt;br /&gt;
*Major Release Date: Apr 27, 2021&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:focusStack]]'''&lt;br /&gt;
**Added new '''[[Function:encode]]'''&lt;br /&gt;
**Added new '''[[Function:decode]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.5==&lt;br /&gt;
*Major Release Date: Nov 05, 2020&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Removed '''[[Function:Invert]]'''&lt;br /&gt;
*10x Speed up '''[[Function:underwaterFilter]]'''&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
*Added Support for Linux (x64 and aarch64) for trial version&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.1==&lt;br /&gt;
*Minor Release Date: Nov 17, 2019&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:rotateNoCrop]]'''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.0==&lt;br /&gt;
*Major Release Date: June 30, 2019&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Trial limit exceeded to 1000x1000 image size&lt;br /&gt;
**Bug fixes in '''[[Function:trackFeatures]]''', '''[[Function:colorPick]]''', '''[[Function:haarFwd]]'''&lt;br /&gt;
**Added '''copyTo''' function to CuviImage which copies image data (or an ROI of it) from one image to another.&lt;br /&gt;
**Added ROI support for '''upload''' and '''download''' functions of CuviImage.&lt;br /&gt;
**Added new '''[[Function:taper]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspective]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspectiveBack]]'''&lt;br /&gt;
**Changed '''[[Function:rotate]]''' (ROI, anti-alaising at boundary added. Performance 5x improved)&lt;br /&gt;
**Removed Video Stabilization module.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.5==&lt;br /&gt;
*Major Release Date: June 12, 2017&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
**Latest Visual C++ redistributable package [[https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads download]]&lt;br /&gt;
** Build for Compute Capability 3.0, 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2 and 7.0&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''[[Function:lowlight]]'''&lt;br /&gt;
**Added '''[[Function:autoColor]]'''&lt;br /&gt;
**Added '''[[Function:dehaze]]'''&lt;br /&gt;
**2x Speed up '''[[Function:DemosaicDFPD]]'''&lt;br /&gt;
**Function:colorTwist renamed to '''[[Function:ChannelMix]]'''&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Function:enhance renamed to '''[[Function:underwaterFilter]]''' and improved&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Latest CUDA GPUs &amp;amp; architectures support.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.2==&lt;br /&gt;
*Major Release Date: June 12, 2015&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Bug fix '''demosiacDFPD'''.&lt;br /&gt;
**Speed up '''demosiacDFPD'''.&lt;br /&gt;
*Removed ''Video Stabilization'' module&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Support for latest GPUs.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.1==&lt;br /&gt;
*Release Date: June 12, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''demosiacDFPD''' that restores an RGB image from a CFA Bayer image using DFPD algorithm.&lt;br /&gt;
*Added ''Video Stabilization'' module&lt;br /&gt;
**Added '''CuviVideoStabilizer''' class for transparent video stabilization.&lt;br /&gt;
**Added '''CuviMotionEstimator''' class to determine the global motion vector between 2 frames.&lt;br /&gt;
*Core&lt;br /&gt;
**Added ''cuvi::showImage'' function to display the image.&lt;br /&gt;
**Added ''cuvi::waitKeyPress'' function to keep displaying the window opened by ''cuvi::showImage''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.0==&lt;br /&gt;
*Major Release Date: May 05, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Core:&lt;br /&gt;
**Added arithmtic and logic operators for CuviImage.&lt;br /&gt;
**Added channel extraction operator [] for CuviImage.&lt;br /&gt;
**Added CuviPyramid class&lt;br /&gt;
**Added CuviHistogram class&lt;br /&gt;
**Added CuviSpecialFilters class for creating standard predefined filters.&lt;br /&gt;
&lt;br /&gt;
*Data Exchange:&lt;br /&gt;
**Added getChannel function for channel extraction.&lt;br /&gt;
&lt;br /&gt;
*Arithmetic and Logical:&lt;br /&gt;
**Added different point scalar functions&lt;br /&gt;
**abs -&amp;gt; Image absolute value&lt;br /&gt;
**exp -&amp;gt; e raised to power image&lt;br /&gt;
**absDiff -&amp;gt; Absolute difference between 2 images&lt;br /&gt;
**sqrt -&amp;gt; Square root&lt;br /&gt;
**cbrt -&amp;gt; Cube root&lt;br /&gt;
**floor&lt;br /&gt;
**ceil&lt;br /&gt;
**round&lt;br /&gt;
**Added bit shifting functions (SHL and SHR)&lt;br /&gt;
**Added matrix multiplication (matMul)&lt;br /&gt;
**Added matrix multiplication with transpose -&amp;gt; A*A' or A'*A&lt;br /&gt;
**Added matrix inversion for square images.&lt;br /&gt;
&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added lookup table transformation function (LUT)&lt;br /&gt;
**Merged rgba2gray into rgb2gray&lt;br /&gt;
**Added color space conversions:&lt;br /&gt;
***Grayscale --&amp;gt; RGB 	(gray2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; YCbCr (rgb2ycbcr and ycbcr2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; HSV (rgb2hsv and hsv2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; Lab (rgb2Lab and Lab2rgb)&lt;br /&gt;
&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Added median filtering (medianFilter)&lt;br /&gt;
**Added image enhancement algorithm (fusion)&lt;br /&gt;
&lt;br /&gt;
*Image Statistics:&lt;br /&gt;
**Added histogram calculation function (calcHist)&lt;br /&gt;
&lt;br /&gt;
*Misc:&lt;br /&gt;
**Replaced raw pointer/array arguments with CuviScalar class for the following functions:&lt;br /&gt;
***rgb2gray&lt;br /&gt;
***sum, mean, min, max, minMax, countInRange&lt;br /&gt;
&lt;br /&gt;
==Version 1.2.1==&lt;br /&gt;
*Major Release Date: April 17, 2013&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*New Features/Enchancements&lt;br /&gt;
**[[Function:pow|pow]] - Raises each pixel to the specified power.&lt;br /&gt;
**[[Function:rectangle |rectangle ]] - draws a rectangle on the image.&lt;br /&gt;
**[[Function:adjust |adjust ]] function can now take adjust parameters separately for each channel&lt;br /&gt;
**[[Function:haarFwd|haarFwd]] and [[Function:haarInv|haarInv]] now also support 3 channel images.&lt;br /&gt;
&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**C Interface has been discontinued.&lt;br /&gt;
**All functions in C++ interface now take CuviImage references instead of pointers.&lt;br /&gt;
**Added image I/O. CuviImage can now be loaded and saved directly on the disk without the requirement of a host.&lt;br /&gt;
**Added namespace &amp;quot;device&amp;quot; which contains device management functions:&lt;br /&gt;
***getDeviceCount&lt;br /&gt;
***getCurrentDevice&lt;br /&gt;
***setCurrentDevice(const Cuvi32s id);&lt;br /&gt;
***syncCurrentDevice()&lt;br /&gt;
***resetCurrentDevice()&lt;br /&gt;
***getDeviceProperties(const int deviceID, CuviDeviceProperties&amp;amp; props);&lt;br /&gt;
&lt;br /&gt;
*Features removal:&lt;br /&gt;
**eigenVals&lt;br /&gt;
**eigenValsVecs&lt;br /&gt;
**meanStdDev&lt;br /&gt;
**Color2Gray (added as an overload of rgb2gray)&lt;br /&gt;
&lt;br /&gt;
==Version 1.2==&lt;br /&gt;
*Major Release Date: May 11, 2012&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7, Linux or Mac OSX&lt;br /&gt;
*New Features&lt;br /&gt;
**[[Function:CountInRange|CountInRange]] - Counts the number of pixels within the given intensity range&lt;br /&gt;
**[[Function:Sum|Sum]] - Computes the sum of pixel values of each channel in an image&lt;br /&gt;
**[[Function:Max|Max]] - Computes the maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Min|Min]] - Computes the minimum pixel value of each channel in an image&lt;br /&gt;
**[[Function:MinMax|MinMax]] - Computes the minimum and maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Mean|Mean]] - Computes the mean of each channel of the input image&lt;br /&gt;
**[[Function:MeanStdDev|MeanStdDev]] - Computes the mean and standard deviation of each channel in an image&lt;br /&gt;
**[[Function:EigenValsVecs|EigenValsVecs]] - Calculates eigen values and eigen vectors at each pixel in an image&lt;br /&gt;
**[[Function:Flip|Flip]] - Mirrors an image about a horizontal or vertical axis, or both&lt;br /&gt;
**[[Function:ImageGradients|ImageGradients]] - Calculates X and Y gradients of image&lt;br /&gt;
**[[Function:MinEigenVal|MinEigenVal]] - Calculates the minimum eigen value at each pixel in an image&lt;br /&gt;
**[[Function:Rotate|Rotate]] - Rotates an image with the origin (0,0) or center&lt;br /&gt;
**[[Function:Transpose|Transpose]] - Takes Transpose of the image&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**Instead of a single function for all color operations and one for arithmetic operations, the new build contains individual functions like [[Function:RGB2YUV|RGB2YUV]] and [[Function:Add|Add]] to improve usability&lt;br /&gt;
**The functions 'split' and 'merge' are renamed to [[Function:ChannelSplit|ChannelSplit]] and [[Function:ChannelMerge|ChannelMerge]]&lt;br /&gt;
**The function 'bayerToRGB' is renamed to [[Function:Demosaic|Demosaic]]&lt;br /&gt;
**The function 'imFilter' is renamed to [[Function:ImageFilter|ImageFilter]] and its input argument have been simplified&lt;br /&gt;
**The function 'dwt' and 'idwt' have been renamed to [[Function:HaarFwd|haarFwd]] and [[Function:HaarInv|haarInv]] respectively&lt;br /&gt;
**CUVI now includes a C++ Timer class that accurately profiles your application timing&lt;br /&gt;
**CuviMat is introduced which is C counterpart of the class CuviImage&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
**[[Function:ImageFilter|ImageFilter]] bug fixed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Release notes for previous versions is not available''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1774</id>
		<title>CUVI Release Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1774"/>
		<updated>2024-06-23T12:51:04Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Version 1.8.0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==Version 2.0.2 (Latest Stable)==&lt;br /&gt;
*Major Release Date: June 15, 2024&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
**Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
**Toolkit version 12.5.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack]]''' (for additional debug output)&lt;br /&gt;
**Changed '''[[Function:lowlight]]''' (added monochrome support)&lt;br /&gt;
**Changed '''[[Function:demosaic]]''' (large window support added)&lt;br /&gt;
**Added '''[[Function:demosaicHQLI]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.8.0==&lt;br /&gt;
*Major Release Date: Oct 16, 2022&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:underwaterFilter]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:autoColor]]''' (for results)&lt;br /&gt;
**Added '''[[Function:findTransformECC]]'''&lt;br /&gt;
**Added '''[[Function:warpAffine]]'''&lt;br /&gt;
**Added '''[[Function:dot]]'''&lt;br /&gt;
**Added '''[[Function:inRange]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.7.0==&lt;br /&gt;
*Major Release Date: Apr 27, 2021&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:focusStack]]'''&lt;br /&gt;
**Added new '''[[Function:encode]]'''&lt;br /&gt;
**Added new '''[[Function:decode]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.5==&lt;br /&gt;
*Major Release Date: Nov 05, 2020&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Removed '''[[Function:Invert]]'''&lt;br /&gt;
*10x Speed up '''[[Function:underwaterFilter]]'''&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
*Added Support for Linux (x64 and aarch64) for trial version&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.1==&lt;br /&gt;
*Minor Release Date: Nov 17, 2019&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:rotateNoCrop]]'''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.0==&lt;br /&gt;
*Major Release Date: June 30, 2019&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Trial limit exceeded to 1000x1000 image size&lt;br /&gt;
**Bug fixes in '''[[Function:trackFeatures]]''', '''[[Function:colorPick]]''', '''[[Function:haarFwd]]'''&lt;br /&gt;
**Added '''copyTo''' function to CuviImage which copies image data (or an ROI of it) from one image to another.&lt;br /&gt;
**Added ROI support for '''upload''' and '''download''' functions of CuviImage.&lt;br /&gt;
**Added new '''[[Function:taper]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspective]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspectiveBack]]'''&lt;br /&gt;
**Changed '''[[Function:rotate]]''' (ROI, anti-alaising at boundary added. Performance 5x improved)&lt;br /&gt;
**Removed Video Stabilization module.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.5==&lt;br /&gt;
*Major Release Date: June 12, 2017&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
**Latest Visual C++ redistributable package [[https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads download]]&lt;br /&gt;
** Build for Compute Capability 3.0, 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2 and 7.0&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''[[Function:lowlight]]'''&lt;br /&gt;
**Added '''[[Function:autoColor]]'''&lt;br /&gt;
**Added '''[[Function:dehaze]]'''&lt;br /&gt;
**2x Speed up '''[[Function:DemosaicDFPD]]'''&lt;br /&gt;
**Function:colorTwist renamed to '''[[Function:ChannelMix]]'''&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Function:enhance renamed to '''[[Function:underwaterFilter]]''' and improved&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Latest CUDA GPUs &amp;amp; architectures support.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.2==&lt;br /&gt;
*Major Release Date: June 12, 2015&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Bug fix '''demosiacDFPD'''.&lt;br /&gt;
**Speed up '''demosiacDFPD'''.&lt;br /&gt;
*Removed ''Video Stabilization'' module&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Support for latest GPUs.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.1==&lt;br /&gt;
*Release Date: June 12, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''demosiacDFPD''' that restores an RGB image from a CFA Bayer image using DFPD algorithm.&lt;br /&gt;
*Added ''Video Stabilization'' module&lt;br /&gt;
**Added '''CuviVideoStabilizer''' class for transparent video stabilization.&lt;br /&gt;
**Added '''CuviMotionEstimator''' class to determine the global motion vector between 2 frames.&lt;br /&gt;
*Core&lt;br /&gt;
**Added ''cuvi::showImage'' function to display the image.&lt;br /&gt;
**Added ''cuvi::waitKeyPress'' function to keep displaying the window opened by ''cuvi::showImage''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.0==&lt;br /&gt;
*Major Release Date: May 05, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Core:&lt;br /&gt;
**Added arithmtic and logic operators for CuviImage.&lt;br /&gt;
**Added channel extraction operator [] for CuviImage.&lt;br /&gt;
**Added CuviPyramid class&lt;br /&gt;
**Added CuviHistogram class&lt;br /&gt;
**Added CuviSpecialFilters class for creating standard predefined filters.&lt;br /&gt;
&lt;br /&gt;
*Data Exchange:&lt;br /&gt;
**Added getChannel function for channel extraction.&lt;br /&gt;
&lt;br /&gt;
*Arithmetic and Logical:&lt;br /&gt;
**Added different point scalar functions&lt;br /&gt;
**abs -&amp;gt; Image absolute value&lt;br /&gt;
**exp -&amp;gt; e raised to power image&lt;br /&gt;
**absDiff -&amp;gt; Absolute difference between 2 images&lt;br /&gt;
**sqrt -&amp;gt; Square root&lt;br /&gt;
**cbrt -&amp;gt; Cube root&lt;br /&gt;
**floor&lt;br /&gt;
**ceil&lt;br /&gt;
**round&lt;br /&gt;
**Added bit shifting functions (SHL and SHR)&lt;br /&gt;
**Added matrix multiplication (matMul)&lt;br /&gt;
**Added matrix multiplication with transpose -&amp;gt; A*A' or A'*A&lt;br /&gt;
**Added matrix inversion for square images.&lt;br /&gt;
&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added lookup table transformation function (LUT)&lt;br /&gt;
**Merged rgba2gray into rgb2gray&lt;br /&gt;
**Added color space conversions:&lt;br /&gt;
***Grayscale --&amp;gt; RGB 	(gray2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; YCbCr (rgb2ycbcr and ycbcr2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; HSV (rgb2hsv and hsv2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; Lab (rgb2Lab and Lab2rgb)&lt;br /&gt;
&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Added median filtering (medianFilter)&lt;br /&gt;
**Added image enhancement algorithm (fusion)&lt;br /&gt;
&lt;br /&gt;
*Image Statistics:&lt;br /&gt;
**Added histogram calculation function (calcHist)&lt;br /&gt;
&lt;br /&gt;
*Misc:&lt;br /&gt;
**Replaced raw pointer/array arguments with CuviScalar class for the following functions:&lt;br /&gt;
***rgb2gray&lt;br /&gt;
***sum, mean, min, max, minMax, countInRange&lt;br /&gt;
&lt;br /&gt;
==Version 1.2.1==&lt;br /&gt;
*Major Release Date: April 17, 2013&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*New Features/Enchancements&lt;br /&gt;
**[[Function:pow|pow]] - Raises each pixel to the specified power.&lt;br /&gt;
**[[Function:rectangle |rectangle ]] - draws a rectangle on the image.&lt;br /&gt;
**[[Function:adjust |adjust ]] function can now take adjust parameters separately for each channel&lt;br /&gt;
**[[Function:haarFwd|haarFwd]] and [[Function:haarInv|haarInv]] now also support 3 channel images.&lt;br /&gt;
&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**C Interface has been discontinued.&lt;br /&gt;
**All functions in C++ interface now take CuviImage references instead of pointers.&lt;br /&gt;
**Added image I/O. CuviImage can now be loaded and saved directly on the disk without the requirement of a host.&lt;br /&gt;
**Added namespace &amp;quot;device&amp;quot; which contains device management functions:&lt;br /&gt;
***getDeviceCount&lt;br /&gt;
***getCurrentDevice&lt;br /&gt;
***setCurrentDevice(const Cuvi32s id);&lt;br /&gt;
***syncCurrentDevice()&lt;br /&gt;
***resetCurrentDevice()&lt;br /&gt;
***getDeviceProperties(const int deviceID, CuviDeviceProperties&amp;amp; props);&lt;br /&gt;
&lt;br /&gt;
*Features removal:&lt;br /&gt;
**eigenVals&lt;br /&gt;
**eigenValsVecs&lt;br /&gt;
**meanStdDev&lt;br /&gt;
**Color2Gray (added as an overload of rgb2gray)&lt;br /&gt;
&lt;br /&gt;
==Version 1.2==&lt;br /&gt;
*Major Release Date: May 11, 2012&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7, Linux or Mac OSX&lt;br /&gt;
*New Features&lt;br /&gt;
**[[Function:CountInRange|CountInRange]] - Counts the number of pixels within the given intensity range&lt;br /&gt;
**[[Function:Sum|Sum]] - Computes the sum of pixel values of each channel in an image&lt;br /&gt;
**[[Function:Max|Max]] - Computes the maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Min|Min]] - Computes the minimum pixel value of each channel in an image&lt;br /&gt;
**[[Function:MinMax|MinMax]] - Computes the minimum and maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Mean|Mean]] - Computes the mean of each channel of the input image&lt;br /&gt;
**[[Function:MeanStdDev|MeanStdDev]] - Computes the mean and standard deviation of each channel in an image&lt;br /&gt;
**[[Function:EigenValsVecs|EigenValsVecs]] - Calculates eigen values and eigen vectors at each pixel in an image&lt;br /&gt;
**[[Function:Flip|Flip]] - Mirrors an image about a horizontal or vertical axis, or both&lt;br /&gt;
**[[Function:ImageGradients|ImageGradients]] - Calculates X and Y gradients of image&lt;br /&gt;
**[[Function:MinEigenVal|MinEigenVal]] - Calculates the minimum eigen value at each pixel in an image&lt;br /&gt;
**[[Function:Rotate|Rotate]] - Rotates an image with the origin (0,0) or center&lt;br /&gt;
**[[Function:Transpose|Transpose]] - Takes Transpose of the image&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**Instead of a single function for all color operations and one for arithmetic operations, the new build contains individual functions like [[Function:RGB2YUV|RGB2YUV]] and [[Function:Add|Add]] to improve usability&lt;br /&gt;
**The functions 'split' and 'merge' are renamed to [[Function:ChannelSplit|ChannelSplit]] and [[Function:ChannelMerge|ChannelMerge]]&lt;br /&gt;
**The function 'bayerToRGB' is renamed to [[Function:Demosaic|Demosaic]]&lt;br /&gt;
**The function 'imFilter' is renamed to [[Function:ImageFilter|ImageFilter]] and its input argument have been simplified&lt;br /&gt;
**The function 'dwt' and 'idwt' have been renamed to [[Function:HaarFwd|haarFwd]] and [[Function:HaarInv|haarInv]] respectively&lt;br /&gt;
**CUVI now includes a C++ Timer class that accurately profiles your application timing&lt;br /&gt;
**CuviMat is introduced which is C counterpart of the class CuviImage&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
**[[Function:ImageFilter|ImageFilter]] bug fixed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Release notes for previous versions is not available''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1773</id>
		<title>CUVI Release Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1773"/>
		<updated>2024-06-23T12:44:01Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==Version 2.0.2 (Latest Stable)==&lt;br /&gt;
*Major Release Date: June 15, 2024&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
**Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
**Toolkit version 12.5.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack]]''' (for additional debug output)&lt;br /&gt;
**Changed '''[[Function:lowlight]]''' (added monochrome support)&lt;br /&gt;
**Changed '''[[Function:demosaic]]''' (large window support added)&lt;br /&gt;
**Added '''[[Function:demosaicHQLI]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.8.0==&lt;br /&gt;
*Major Release Date: Oct 16, 2022&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:underwaterFilter]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:autoColor]]''' (for results)&lt;br /&gt;
**Added '''[[Function:findTransformECC]]'''&lt;br /&gt;
**Added '''[[Function:dot]]'''&lt;br /&gt;
**Added '''[[Function:inRange]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.7.0==&lt;br /&gt;
*Major Release Date: Apr 27, 2021&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:focusStack]]'''&lt;br /&gt;
**Added new '''[[Function:encode]]'''&lt;br /&gt;
**Added new '''[[Function:decode]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.5==&lt;br /&gt;
*Major Release Date: Nov 05, 2020&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Removed '''[[Function:Invert]]'''&lt;br /&gt;
*10x Speed up '''[[Function:underwaterFilter]]'''&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
*Added Support for Linux (x64 and aarch64) for trial version&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.1==&lt;br /&gt;
*Minor Release Date: Nov 17, 2019&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:rotateNoCrop]]'''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.0==&lt;br /&gt;
*Major Release Date: June 30, 2019&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Trial limit exceeded to 1000x1000 image size&lt;br /&gt;
**Bug fixes in '''[[Function:trackFeatures]]''', '''[[Function:colorPick]]''', '''[[Function:haarFwd]]'''&lt;br /&gt;
**Added '''copyTo''' function to CuviImage which copies image data (or an ROI of it) from one image to another.&lt;br /&gt;
**Added ROI support for '''upload''' and '''download''' functions of CuviImage.&lt;br /&gt;
**Added new '''[[Function:taper]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspective]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspectiveBack]]'''&lt;br /&gt;
**Changed '''[[Function:rotate]]''' (ROI, anti-alaising at boundary added. Performance 5x improved)&lt;br /&gt;
**Removed Video Stabilization module.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.5==&lt;br /&gt;
*Major Release Date: June 12, 2017&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
**Latest Visual C++ redistributable package [[https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads download]]&lt;br /&gt;
** Build for Compute Capability 3.0, 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2 and 7.0&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''[[Function:lowlight]]'''&lt;br /&gt;
**Added '''[[Function:autoColor]]'''&lt;br /&gt;
**Added '''[[Function:dehaze]]'''&lt;br /&gt;
**2x Speed up '''[[Function:DemosaicDFPD]]'''&lt;br /&gt;
**Function:colorTwist renamed to '''[[Function:ChannelMix]]'''&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Function:enhance renamed to '''[[Function:underwaterFilter]]''' and improved&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Latest CUDA GPUs &amp;amp; architectures support.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.2==&lt;br /&gt;
*Major Release Date: June 12, 2015&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Bug fix '''demosiacDFPD'''.&lt;br /&gt;
**Speed up '''demosiacDFPD'''.&lt;br /&gt;
*Removed ''Video Stabilization'' module&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Support for latest GPUs.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.1==&lt;br /&gt;
*Release Date: June 12, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''demosiacDFPD''' that restores an RGB image from a CFA Bayer image using DFPD algorithm.&lt;br /&gt;
*Added ''Video Stabilization'' module&lt;br /&gt;
**Added '''CuviVideoStabilizer''' class for transparent video stabilization.&lt;br /&gt;
**Added '''CuviMotionEstimator''' class to determine the global motion vector between 2 frames.&lt;br /&gt;
*Core&lt;br /&gt;
**Added ''cuvi::showImage'' function to display the image.&lt;br /&gt;
**Added ''cuvi::waitKeyPress'' function to keep displaying the window opened by ''cuvi::showImage''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.0==&lt;br /&gt;
*Major Release Date: May 05, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Core:&lt;br /&gt;
**Added arithmtic and logic operators for CuviImage.&lt;br /&gt;
**Added channel extraction operator [] for CuviImage.&lt;br /&gt;
**Added CuviPyramid class&lt;br /&gt;
**Added CuviHistogram class&lt;br /&gt;
**Added CuviSpecialFilters class for creating standard predefined filters.&lt;br /&gt;
&lt;br /&gt;
*Data Exchange:&lt;br /&gt;
**Added getChannel function for channel extraction.&lt;br /&gt;
&lt;br /&gt;
*Arithmetic and Logical:&lt;br /&gt;
**Added different point scalar functions&lt;br /&gt;
**abs -&amp;gt; Image absolute value&lt;br /&gt;
**exp -&amp;gt; e raised to power image&lt;br /&gt;
**absDiff -&amp;gt; Absolute difference between 2 images&lt;br /&gt;
**sqrt -&amp;gt; Square root&lt;br /&gt;
**cbrt -&amp;gt; Cube root&lt;br /&gt;
**floor&lt;br /&gt;
**ceil&lt;br /&gt;
**round&lt;br /&gt;
**Added bit shifting functions (SHL and SHR)&lt;br /&gt;
**Added matrix multiplication (matMul)&lt;br /&gt;
**Added matrix multiplication with transpose -&amp;gt; A*A' or A'*A&lt;br /&gt;
**Added matrix inversion for square images.&lt;br /&gt;
&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added lookup table transformation function (LUT)&lt;br /&gt;
**Merged rgba2gray into rgb2gray&lt;br /&gt;
**Added color space conversions:&lt;br /&gt;
***Grayscale --&amp;gt; RGB 	(gray2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; YCbCr (rgb2ycbcr and ycbcr2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; HSV (rgb2hsv and hsv2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; Lab (rgb2Lab and Lab2rgb)&lt;br /&gt;
&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Added median filtering (medianFilter)&lt;br /&gt;
**Added image enhancement algorithm (fusion)&lt;br /&gt;
&lt;br /&gt;
*Image Statistics:&lt;br /&gt;
**Added histogram calculation function (calcHist)&lt;br /&gt;
&lt;br /&gt;
*Misc:&lt;br /&gt;
**Replaced raw pointer/array arguments with CuviScalar class for the following functions:&lt;br /&gt;
***rgb2gray&lt;br /&gt;
***sum, mean, min, max, minMax, countInRange&lt;br /&gt;
&lt;br /&gt;
==Version 1.2.1==&lt;br /&gt;
*Major Release Date: April 17, 2013&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*New Features/Enchancements&lt;br /&gt;
**[[Function:pow|pow]] - Raises each pixel to the specified power.&lt;br /&gt;
**[[Function:rectangle |rectangle ]] - draws a rectangle on the image.&lt;br /&gt;
**[[Function:adjust |adjust ]] function can now take adjust parameters separately for each channel&lt;br /&gt;
**[[Function:haarFwd|haarFwd]] and [[Function:haarInv|haarInv]] now also support 3 channel images.&lt;br /&gt;
&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**C Interface has been discontinued.&lt;br /&gt;
**All functions in C++ interface now take CuviImage references instead of pointers.&lt;br /&gt;
**Added image I/O. CuviImage can now be loaded and saved directly on the disk without the requirement of a host.&lt;br /&gt;
**Added namespace &amp;quot;device&amp;quot; which contains device management functions:&lt;br /&gt;
***getDeviceCount&lt;br /&gt;
***getCurrentDevice&lt;br /&gt;
***setCurrentDevice(const Cuvi32s id);&lt;br /&gt;
***syncCurrentDevice()&lt;br /&gt;
***resetCurrentDevice()&lt;br /&gt;
***getDeviceProperties(const int deviceID, CuviDeviceProperties&amp;amp; props);&lt;br /&gt;
&lt;br /&gt;
*Features removal:&lt;br /&gt;
**eigenVals&lt;br /&gt;
**eigenValsVecs&lt;br /&gt;
**meanStdDev&lt;br /&gt;
**Color2Gray (added as an overload of rgb2gray)&lt;br /&gt;
&lt;br /&gt;
==Version 1.2==&lt;br /&gt;
*Major Release Date: May 11, 2012&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7, Linux or Mac OSX&lt;br /&gt;
*New Features&lt;br /&gt;
**[[Function:CountInRange|CountInRange]] - Counts the number of pixels within the given intensity range&lt;br /&gt;
**[[Function:Sum|Sum]] - Computes the sum of pixel values of each channel in an image&lt;br /&gt;
**[[Function:Max|Max]] - Computes the maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Min|Min]] - Computes the minimum pixel value of each channel in an image&lt;br /&gt;
**[[Function:MinMax|MinMax]] - Computes the minimum and maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Mean|Mean]] - Computes the mean of each channel of the input image&lt;br /&gt;
**[[Function:MeanStdDev|MeanStdDev]] - Computes the mean and standard deviation of each channel in an image&lt;br /&gt;
**[[Function:EigenValsVecs|EigenValsVecs]] - Calculates eigen values and eigen vectors at each pixel in an image&lt;br /&gt;
**[[Function:Flip|Flip]] - Mirrors an image about a horizontal or vertical axis, or both&lt;br /&gt;
**[[Function:ImageGradients|ImageGradients]] - Calculates X and Y gradients of image&lt;br /&gt;
**[[Function:MinEigenVal|MinEigenVal]] - Calculates the minimum eigen value at each pixel in an image&lt;br /&gt;
**[[Function:Rotate|Rotate]] - Rotates an image with the origin (0,0) or center&lt;br /&gt;
**[[Function:Transpose|Transpose]] - Takes Transpose of the image&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**Instead of a single function for all color operations and one for arithmetic operations, the new build contains individual functions like [[Function:RGB2YUV|RGB2YUV]] and [[Function:Add|Add]] to improve usability&lt;br /&gt;
**The functions 'split' and 'merge' are renamed to [[Function:ChannelSplit|ChannelSplit]] and [[Function:ChannelMerge|ChannelMerge]]&lt;br /&gt;
**The function 'bayerToRGB' is renamed to [[Function:Demosaic|Demosaic]]&lt;br /&gt;
**The function 'imFilter' is renamed to [[Function:ImageFilter|ImageFilter]] and its input argument have been simplified&lt;br /&gt;
**The function 'dwt' and 'idwt' have been renamed to [[Function:HaarFwd|haarFwd]] and [[Function:HaarInv|haarInv]] respectively&lt;br /&gt;
**CUVI now includes a C++ Timer class that accurately profiles your application timing&lt;br /&gt;
**CuviMat is introduced which is C counterpart of the class CuviImage&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
**[[Function:ImageFilter|ImageFilter]] bug fixed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Release notes for previous versions is not available''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:DemosaicHQLI&amp;diff=1772</id>
		<title>Function:DemosaicHQLI</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:DemosaicHQLI&amp;diff=1772"/>
		<updated>2024-06-23T12:41:48Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Performs high quality demosaic using linear interpolation inspired by the following paper:&lt;br /&gt;
 *  HIGH - QUALITY LINEAR INTERPOLATION FOR DEMOSAICING OF BAYER - PATTERNED COLOR IMAGES&lt;br /&gt;
 *	Henrique S.Malvar, Li-wei He, and Ross Cutler&lt;br /&gt;
 *	Microsoft Research&lt;br /&gt;
 *	One Microsoft Way, Redmond, WA 98052, USA&lt;br /&gt;
Supports neighborhood/filtersize of 5,7 &amp;amp; 9.&lt;br /&gt;
&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus demosaicHQLI(const CuviImage&amp;amp; src,&lt;br /&gt;
                       CuviImage&amp;amp; dst,&lt;br /&gt;
                       const CuviBayerSeq sensorAlignment,&lt;br /&gt;
                       int filterSize,&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| filterSize&lt;br /&gt;
| int&lt;br /&gt;
| Neighborhood for high quality linear interpolation&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
&lt;br /&gt;
====Sample====&lt;br /&gt;
[[File:BayerHolidayIn.png|none|frame|Input]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:BayerHolidayOut.png|none|frame|Output]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
====Sample====&lt;br /&gt;
[[File:BayerHouseIn.png|none|frame|Input]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:BayerHouseOut.png|none|frame|Output]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&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::demosaicHQLI(gimg,gout,CUVI_BAYER_BGGR,9);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:DemosaicHQLI&amp;diff=1771</id>
		<title>Function:DemosaicHQLI</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:DemosaicHQLI&amp;diff=1771"/>
		<updated>2024-06-23T12:41:24Z</updated>

		<summary type="html">&lt;p&gt;Jawad: Created page with &amp;quot;__NOTOC__ Performs high quality demosaic using linear interpolation inspired by the following paper:  *  HIGH - QUALITY LINEAR INTERPOLATION FOR DEMOSAICING OF BAYER - PATTERNED COLOR IMAGES  *	Henrique S.Malvar, Li-wei He, and Ross Cutler  *	Microsoft Research  *	One Microsoft Way, Redmond, WA 98052, USA Supports neighborhood/filtersize of 5,7 &amp;amp; 9.  ====Function==== {| |style=&amp;quot;font-size:100%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus demosaicHQLI(const CuviImage&amp;amp; src,...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Performs high quality demosaic using linear interpolation inspired by the following paper:&lt;br /&gt;
 *  HIGH - QUALITY LINEAR INTERPOLATION FOR DEMOSAICING OF BAYER - PATTERNED COLOR IMAGES&lt;br /&gt;
 *	Henrique S.Malvar, Li-wei He, and Ross Cutler&lt;br /&gt;
 *	Microsoft Research&lt;br /&gt;
 *	One Microsoft Way, Redmond, WA 98052, USA&lt;br /&gt;
Supports neighborhood/filtersize of 5,7 &amp;amp; 9.&lt;br /&gt;
&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus demosaicHQLI(const CuviImage&amp;amp; src,&lt;br /&gt;
                       CuviImage&amp;amp; dst,&lt;br /&gt;
                       const CuviBayerSeq sensorAlignment,&lt;br /&gt;
                       int filterSize,&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| filterSize&lt;br /&gt;
| int&lt;br /&gt;
| Neighborhood for high quality linear interpolation&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
&lt;br /&gt;
====Sample====&lt;br /&gt;
[[File:BayerHolidayIn.png|none|frame|Input]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:BayerHolidayOut.png|none|frame|Output]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
====Sample====&lt;br /&gt;
[[File:BayerHouseIn.png|none|frame|Input]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:BayerHouseOut.png|none|frame|Output]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&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,9);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Demosaic&amp;diff=1770</id>
		<title>Function:Demosaic</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Demosaic&amp;diff=1770"/>
		<updated>2024-06-23T12:35:48Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Restores an RGB image from a gray-scale CFA image using linear interpolation method.&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&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;
====Parameters====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
&lt;br /&gt;
====Sample====&lt;br /&gt;
[[File:BayerHolidayIn.png|none|frame|Input]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:BayerHolidayOut.png|none|frame|Output]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
====Sample====&lt;br /&gt;
[[File:BayerHouseIn.png|none|frame|Input]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:BayerHouseOut.png|none|frame|Output]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&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>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Lowlight&amp;diff=1769</id>
		<title>Function:Lowlight</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Lowlight&amp;diff=1769"/>
		<updated>2024-06-23T12:34:55Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Image Type Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Enhances the low intensity colors in a dark photo taken from a general purpose mobile, CCTV or DSLR camera. Our technique restores most of the hidden features in a low light image making it suitable for enhancing security footage in real-time at dawn, dusk and other low light conditions.&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus cuvi::colorOperations::lowlight(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;
====Parameters====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| 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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
&lt;br /&gt;
====Sample====&lt;br /&gt;
[[File:Dark.jpg|none|frame|Input]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Light.jpg|none|frame|Output]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviImage input(&amp;quot;D:/lowlight.jpg&amp;quot;, CUVI_LOAD_IMAGE_COLOR_KEEP_DEPTH), output;&lt;br /&gt;
 &lt;br /&gt;
//Perform low-light enhancement&lt;br /&gt;
cuvi::colorOperations::lowlight(input, output);&lt;br /&gt;
&lt;br /&gt;
//Save Output to file&lt;br /&gt;
cuvi::io::saveImage(output, &amp;quot;D:/enhanced.jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Lowlight&amp;diff=1768</id>
		<title>Function:Lowlight</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Lowlight&amp;diff=1768"/>
		<updated>2024-06-23T12:34:37Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Image Type Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Enhances the low intensity colors in a dark photo taken from a general purpose mobile, CCTV or DSLR camera. Our technique restores most of the hidden features in a low light image making it suitable for enhancing security footage in real-time at dawn, dusk and other low light conditions.&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus cuvi::colorOperations::lowlight(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;
====Parameters====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| 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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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 C1/C3&lt;br /&gt;
| 8u C1/C3&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;
&lt;br /&gt;
====Sample====&lt;br /&gt;
[[File:Dark.jpg|none|frame|Input]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Light.jpg|none|frame|Output]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviImage input(&amp;quot;D:/lowlight.jpg&amp;quot;, CUVI_LOAD_IMAGE_COLOR_KEEP_DEPTH), output;&lt;br /&gt;
 &lt;br /&gt;
//Perform low-light enhancement&lt;br /&gt;
cuvi::colorOperations::lowlight(input, output);&lt;br /&gt;
&lt;br /&gt;
//Save Output to file&lt;br /&gt;
cuvi::io::saveImage(output, &amp;quot;D:/enhanced.jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Lowlight&amp;diff=1767</id>
		<title>Function:Lowlight</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Lowlight&amp;diff=1767"/>
		<updated>2024-06-23T08:53:26Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Image Type Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Enhances the low intensity colors in a dark photo taken from a general purpose mobile, CCTV or DSLR camera. Our technique restores most of the hidden features in a low light image making it suitable for enhancing security footage in real-time at dawn, dusk and other low light conditions.&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus cuvi::colorOperations::lowlight(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;
====Parameters====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| 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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
&lt;br /&gt;
====Sample====&lt;br /&gt;
[[File:Dark.jpg|none|frame|Input]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Light.jpg|none|frame|Output]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviImage input(&amp;quot;D:/lowlight.jpg&amp;quot;, CUVI_LOAD_IMAGE_COLOR_KEEP_DEPTH), output;&lt;br /&gt;
 &lt;br /&gt;
//Perform low-light enhancement&lt;br /&gt;
cuvi::colorOperations::lowlight(input, output);&lt;br /&gt;
&lt;br /&gt;
//Save Output to file&lt;br /&gt;
cuvi::io::saveImage(output, &amp;quot;D:/enhanced.jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1766</id>
		<title>CUVI Release Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Release_Notes&amp;diff=1766"/>
		<updated>2024-06-23T08:52:14Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==Version 2.0.2 (Latest Stable)==&lt;br /&gt;
*Major Release Date: June 15, 2024&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack]]''' (for additional debug output)&lt;br /&gt;
**Changed '''[[Function:lowlight]]''' (added monochrome support)&lt;br /&gt;
**Changed '''[[Function:demosaic]]''' (large window support added)&lt;br /&gt;
**Added '''[[Function:demosaicHQLI]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.8.0==&lt;br /&gt;
*Major Release Date: Oct 16, 2022&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6, 8.7, 8.9, 9.0&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Changed '''[[Function:focusStack]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:underwaterFilter]]''' (for results and performance)&lt;br /&gt;
**Changed '''[[Function:autoColor]]''' (for results)&lt;br /&gt;
**Added '''[[Function:findTransformECC]]'''&lt;br /&gt;
**Added '''[[Function:dot]]'''&lt;br /&gt;
**Added '''[[Function:inRange]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.7.0==&lt;br /&gt;
*Major Release Date: Apr 27, 2021&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5, 8.0, 8.6&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:focusStack]]'''&lt;br /&gt;
**Added new '''[[Function:encode]]'''&lt;br /&gt;
**Added new '''[[Function:decode]]'''&lt;br /&gt;
**Bug Fixes&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.5==&lt;br /&gt;
*Major Release Date: Nov 05, 2020&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows (64 bit) or Linux (64 bit) or Linux (aarch64)&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Removed '''[[Function:Invert]]'''&lt;br /&gt;
*10x Speed up '''[[Function:underwaterFilter]]'''&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
*Added Support for Linux (x64 and aarch64) for trial version&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.1==&lt;br /&gt;
*Minor Release Date: Nov 17, 2019&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Added new '''[[Function:rotateNoCrop]]'''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.6.0==&lt;br /&gt;
*Major Release Date: June 30, 2019&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
** Build for Compute Capability 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2, 7.0, 7.2, 7.5&lt;br /&gt;
*Changelog:&lt;br /&gt;
**Trial limit exceeded to 1000x1000 image size&lt;br /&gt;
**Bug fixes in '''[[Function:trackFeatures]]''', '''[[Function:colorPick]]''', '''[[Function:haarFwd]]'''&lt;br /&gt;
**Added '''copyTo''' function to CuviImage which copies image data (or an ROI of it) from one image to another.&lt;br /&gt;
**Added ROI support for '''upload''' and '''download''' functions of CuviImage.&lt;br /&gt;
**Added new '''[[Function:taper]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspective]]'''&lt;br /&gt;
**Added new '''[[Function:warpPerspectiveBack]]'''&lt;br /&gt;
**Changed '''[[Function:rotate]]''' (ROI, anti-alaising at boundary added. Performance 5x improved)&lt;br /&gt;
**Removed Video Stabilization module.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.5==&lt;br /&gt;
*Major Release Date: June 12, 2017&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7 or above&lt;br /&gt;
**Latest Visual C++ redistributable package [[https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads download]]&lt;br /&gt;
** Build for Compute Capability 3.0, 3.2, 3.5, 3.7, 5.0, 5.2, 5.3, 6.0, 6.1, 6.2 and 7.0&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''[[Function:lowlight]]'''&lt;br /&gt;
**Added '''[[Function:autoColor]]'''&lt;br /&gt;
**Added '''[[Function:dehaze]]'''&lt;br /&gt;
**2x Speed up '''[[Function:DemosaicDFPD]]'''&lt;br /&gt;
**Function:colorTwist renamed to '''[[Function:ChannelMix]]'''&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Function:enhance renamed to '''[[Function:underwaterFilter]]''' and improved&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Latest CUDA GPUs &amp;amp; architectures support.&lt;br /&gt;
&lt;br /&gt;
==Version 1.5.2==&lt;br /&gt;
*Major Release Date: June 12, 2015&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Bug fix '''demosiacDFPD'''.&lt;br /&gt;
**Speed up '''demosiacDFPD'''.&lt;br /&gt;
*Removed ''Video Stabilization'' module&lt;br /&gt;
*Several bug fixes across the board.&lt;br /&gt;
*Support for latest GPUs.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.1==&lt;br /&gt;
*Release Date: June 12, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added '''demosiacDFPD''' that restores an RGB image from a CFA Bayer image using DFPD algorithm.&lt;br /&gt;
*Added ''Video Stabilization'' module&lt;br /&gt;
**Added '''CuviVideoStabilizer''' class for transparent video stabilization.&lt;br /&gt;
**Added '''CuviMotionEstimator''' class to determine the global motion vector between 2 frames.&lt;br /&gt;
*Core&lt;br /&gt;
**Added ''cuvi::showImage'' function to display the image.&lt;br /&gt;
**Added ''cuvi::waitKeyPress'' function to keep displaying the window opened by ''cuvi::showImage''.&lt;br /&gt;
&lt;br /&gt;
==Version 1.3.0==&lt;br /&gt;
*Major Release Date: May 05, 2014&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*Core:&lt;br /&gt;
**Added arithmtic and logic operators for CuviImage.&lt;br /&gt;
**Added channel extraction operator [] for CuviImage.&lt;br /&gt;
**Added CuviPyramid class&lt;br /&gt;
**Added CuviHistogram class&lt;br /&gt;
**Added CuviSpecialFilters class for creating standard predefined filters.&lt;br /&gt;
&lt;br /&gt;
*Data Exchange:&lt;br /&gt;
**Added getChannel function for channel extraction.&lt;br /&gt;
&lt;br /&gt;
*Arithmetic and Logical:&lt;br /&gt;
**Added different point scalar functions&lt;br /&gt;
**abs -&amp;gt; Image absolute value&lt;br /&gt;
**exp -&amp;gt; e raised to power image&lt;br /&gt;
**absDiff -&amp;gt; Absolute difference between 2 images&lt;br /&gt;
**sqrt -&amp;gt; Square root&lt;br /&gt;
**cbrt -&amp;gt; Cube root&lt;br /&gt;
**floor&lt;br /&gt;
**ceil&lt;br /&gt;
**round&lt;br /&gt;
**Added bit shifting functions (SHL and SHR)&lt;br /&gt;
**Added matrix multiplication (matMul)&lt;br /&gt;
**Added matrix multiplication with transpose -&amp;gt; A*A' or A'*A&lt;br /&gt;
**Added matrix inversion for square images.&lt;br /&gt;
&lt;br /&gt;
*Color Operations:&lt;br /&gt;
**Added lookup table transformation function (LUT)&lt;br /&gt;
**Merged rgba2gray into rgb2gray&lt;br /&gt;
**Added color space conversions:&lt;br /&gt;
***Grayscale --&amp;gt; RGB 	(gray2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; YCbCr (rgb2ycbcr and ycbcr2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; HSV (rgb2hsv and hsv2rgb)&lt;br /&gt;
***RGB &amp;lt;--&amp;gt; Lab (rgb2Lab and Lab2rgb)&lt;br /&gt;
&lt;br /&gt;
*Image Filtering:&lt;br /&gt;
**Added median filtering (medianFilter)&lt;br /&gt;
**Added image enhancement algorithm (fusion)&lt;br /&gt;
&lt;br /&gt;
*Image Statistics:&lt;br /&gt;
**Added histogram calculation function (calcHist)&lt;br /&gt;
&lt;br /&gt;
*Misc:&lt;br /&gt;
**Replaced raw pointer/array arguments with CuviScalar class for the following functions:&lt;br /&gt;
***rgb2gray&lt;br /&gt;
***sum, mean, min, max, minMax, countInRange&lt;br /&gt;
&lt;br /&gt;
==Version 1.2.1==&lt;br /&gt;
*Major Release Date: April 17, 2013&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows, Linux or Mac OSX&lt;br /&gt;
*New Features/Enchancements&lt;br /&gt;
**[[Function:pow|pow]] - Raises each pixel to the specified power.&lt;br /&gt;
**[[Function:rectangle |rectangle ]] - draws a rectangle on the image.&lt;br /&gt;
**[[Function:adjust |adjust ]] function can now take adjust parameters separately for each channel&lt;br /&gt;
**[[Function:haarFwd|haarFwd]] and [[Function:haarInv|haarInv]] now also support 3 channel images.&lt;br /&gt;
&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**C Interface has been discontinued.&lt;br /&gt;
**All functions in C++ interface now take CuviImage references instead of pointers.&lt;br /&gt;
**Added image I/O. CuviImage can now be loaded and saved directly on the disk without the requirement of a host.&lt;br /&gt;
**Added namespace &amp;quot;device&amp;quot; which contains device management functions:&lt;br /&gt;
***getDeviceCount&lt;br /&gt;
***getCurrentDevice&lt;br /&gt;
***setCurrentDevice(const Cuvi32s id);&lt;br /&gt;
***syncCurrentDevice()&lt;br /&gt;
***resetCurrentDevice()&lt;br /&gt;
***getDeviceProperties(const int deviceID, CuviDeviceProperties&amp;amp; props);&lt;br /&gt;
&lt;br /&gt;
*Features removal:&lt;br /&gt;
**eigenVals&lt;br /&gt;
**eigenValsVecs&lt;br /&gt;
**meanStdDev&lt;br /&gt;
**Color2Gray (added as an overload of rgb2gray)&lt;br /&gt;
&lt;br /&gt;
==Version 1.2==&lt;br /&gt;
*Major Release Date: May 11, 2012&lt;br /&gt;
*Requirements:&lt;br /&gt;
**Latest CUDA drivers from NVIDIA [[http://www.nvidia.com/Download/index.aspx download]]&lt;br /&gt;
**CUDA capable Graphics Card [[http://developer.nvidia.com/cuda-gpus see list]]&lt;br /&gt;
**Windows 7, Linux or Mac OSX&lt;br /&gt;
*New Features&lt;br /&gt;
**[[Function:CountInRange|CountInRange]] - Counts the number of pixels within the given intensity range&lt;br /&gt;
**[[Function:Sum|Sum]] - Computes the sum of pixel values of each channel in an image&lt;br /&gt;
**[[Function:Max|Max]] - Computes the maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Min|Min]] - Computes the minimum pixel value of each channel in an image&lt;br /&gt;
**[[Function:MinMax|MinMax]] - Computes the minimum and maximum pixel value of each channel in an image&lt;br /&gt;
**[[Function:Mean|Mean]] - Computes the mean of each channel of the input image&lt;br /&gt;
**[[Function:MeanStdDev|MeanStdDev]] - Computes the mean and standard deviation of each channel in an image&lt;br /&gt;
**[[Function:EigenValsVecs|EigenValsVecs]] - Calculates eigen values and eigen vectors at each pixel in an image&lt;br /&gt;
**[[Function:Flip|Flip]] - Mirrors an image about a horizontal or vertical axis, or both&lt;br /&gt;
**[[Function:ImageGradients|ImageGradients]] - Calculates X and Y gradients of image&lt;br /&gt;
**[[Function:MinEigenVal|MinEigenVal]] - Calculates the minimum eigen value at each pixel in an image&lt;br /&gt;
**[[Function:Rotate|Rotate]] - Rotates an image with the origin (0,0) or center&lt;br /&gt;
**[[Function:Transpose|Transpose]] - Takes Transpose of the image&lt;br /&gt;
*Framework Enhancements&lt;br /&gt;
**Instead of a single function for all color operations and one for arithmetic operations, the new build contains individual functions like [[Function:RGB2YUV|RGB2YUV]] and [[Function:Add|Add]] to improve usability&lt;br /&gt;
**The functions 'split' and 'merge' are renamed to [[Function:ChannelSplit|ChannelSplit]] and [[Function:ChannelMerge|ChannelMerge]]&lt;br /&gt;
**The function 'bayerToRGB' is renamed to [[Function:Demosaic|Demosaic]]&lt;br /&gt;
**The function 'imFilter' is renamed to [[Function:ImageFilter|ImageFilter]] and its input argument have been simplified&lt;br /&gt;
**The function 'dwt' and 'idwt' have been renamed to [[Function:HaarFwd|haarFwd]] and [[Function:HaarInv|haarInv]] respectively&lt;br /&gt;
**CUVI now includes a C++ Timer class that accurately profiles your application timing&lt;br /&gt;
**CuviMat is introduced which is C counterpart of the class CuviImage&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
**[[Function:ImageFilter|ImageFilter]] bug fixed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Release notes for previous versions is not available''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Features&amp;diff=1765</id>
		<title>CUVI Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Features&amp;diff=1765"/>
		<updated>2022-11-07T07:11:26Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Color Operations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
CUVI SDK is an image processing kit written and developed on C-CUDA and C++ for over a period of ten years. The SDK includes 100+ image processing and computer vision functions that are plug-n-play for imaging applications in a plethora of verticals. Each function is hand crafted and highly optimized to run on CUDA supported GPUs. Many functions use our own proprietary approach to algorithms and processing to make the best out of hardware and input data.&lt;br /&gt;
&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;
# Image Codecs&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:dot|dot]]&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:InRange|inRange]] - Checks if image pixels lie between a range of values&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:AutoColor|autoColor]] - Fixes false colors at pixel level using a propriety approach&lt;br /&gt;
# [[Function:BorderMask|borderMask]] - Masks image borders with custom intensity&lt;br /&gt;
# [[Function:blackGammaLUT|blackGammaLUT]] - Remaps image values according to 3 look up tables&lt;br /&gt;
# [[Function:ChannelMix|channelMix]] - Applies a color twist matrix to an image&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:Dehaze|dehaze]] - Makes sense of images taken in a blizzard&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:fpn|fpn]] - fixed point noise remove via camera black image&lt;br /&gt;
# [[Function:FPNCorrection|FPNCorrection]] - fixed point noise removal via black and white images and gain&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:Lowlight|lowlight]] -  enhances the low intensity colors in a dark photo&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;
# [[Function:YUV422TOV210|YUV422TOV210]] - Converts YUV422 image to an V210 image.&lt;br /&gt;
# [[Function:YUV444TOV210|YUV444TOV210]] - Converts YUV444 image to an V210 image.&lt;br /&gt;
# [[Function:V210TOYUV444|V210TOYUV444]] - Converts V210 image to an YUV444 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:findTransformECC|findTransformECC]] - Calculates geometric transform between two images in terms of the ECC criterion&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;
# [[Function:FocusStack|focusStack]] - Stacks multiples photos with various focus into a single all focused image&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 specified anchor&lt;br /&gt;
# [[Function:RotateNoCrop|RotateNoCrop]] - Rotates an image about specified anchor&lt;br /&gt;
# [[Function:Taper|taper]] - Smartly extends image border&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;
# [[Function:WarpPerspective|warpPerspective]] - Applies an affine transformation to an image.&lt;br /&gt;
# [[Function:WarpPerspectiveBack|warpPerspectiveBack]] - Applies an inverse affine transformation to an image.&lt;br /&gt;
&lt;br /&gt;
===Image Filtering===&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;
# [[Function:UnderwaterFilter|underwaterFilter]] - Brings out original colors of underwater photography.&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;
===Image Codecs===&lt;br /&gt;
# [[Function:Encode|encode]] - Encodes image pixel array into JPEG.&lt;br /&gt;
# [[Function:Decode|decode]] - Decodes a JPEG into an image pixel array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--===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.--&amp;gt;&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;
* upload(const void* pSrcHost, CuviRect srcROI, const Cuvi32s srcPitch, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin) - Copy a chunk of image data from host to device. &lt;br /&gt;
* upload(const void* pSrcHost, CuviRect srcROI, const Cuvi32s srcPitch, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const CuviStream&amp;amp; stream) - Asynchronously copy a chunk of 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;
* download(void* pDstHost, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const Cuvi32s dstPitch, CuviRect srcROI) - Copy a chunk of image data from device to host&lt;br /&gt;
* download(void* pDstHost, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const Cuvi32s dstPitch, CuviRect srcROI, const CuviStream&amp;amp; stream) - Asynchronously copy a chunk of image data from device to host&lt;br /&gt;
* copyTo(CuviImage&amp;amp; dst, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, CuviRect srcROI, const CuviStream&amp;amp; stream = CuviStream()) - Copy image data (or an ROI of it) from one Cuvi Image to another.&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>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:V210TOYUV444&amp;diff=1764</id>
		<title>Function:V210TOYUV444</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:V210TOYUV444&amp;diff=1764"/>
		<updated>2022-11-07T07:10:26Z</updated>

		<summary type="html">&lt;p&gt;Jawad: Created page with &amp;quot;__NOTOC__ V210 to YUV444 converter&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
V210 to YUV444 converter&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:YUV444TOV210&amp;diff=1763</id>
		<title>Function:YUV444TOV210</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:YUV444TOV210&amp;diff=1763"/>
		<updated>2022-11-07T07:10:06Z</updated>

		<summary type="html">&lt;p&gt;Jawad: Created page with &amp;quot;__NOTOC__ YUV444 to V210 converter&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
YUV444 to V210 converter&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:YUV422TOV210&amp;diff=1762</id>
		<title>Function:YUV422TOV210</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:YUV422TOV210&amp;diff=1762"/>
		<updated>2022-11-07T07:09:50Z</updated>

		<summary type="html">&lt;p&gt;Jawad: Created page with &amp;quot;__NOTOC__ YUV422 to V210 converter&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
YUV422 to V210 converter&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Add&amp;diff=1761</id>
		<title>Function:Add</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Add&amp;diff=1761"/>
		<updated>2022-11-07T07:09:25Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Adds two images or adds a constant to each pixel of the image.&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus add(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 add(const CuviImage&amp;amp; src,&lt;br /&gt;
               const CuviScalar&amp;amp; values,&lt;br /&gt;
               CuviImage&amp;amp; dst,&lt;br /&gt;
               const CuviStream&amp;amp; stream = CuviStream());&lt;br /&gt;
&lt;br /&gt;
CuviStatus add(const CuviImage&amp;amp; src,&lt;br /&gt;
               const Cuvi64f 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;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
====Parameters====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| CuviImage&amp;amp;&lt;br /&gt;
| First Input Image&lt;br /&gt;
|-&lt;br /&gt;
| src2&lt;br /&gt;
| 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;
| 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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| 16u&lt;br /&gt;
| 16u&lt;br /&gt;
| 16u&lt;br /&gt;
|-&lt;br /&gt;
| 32f&lt;br /&gt;
| 32f&lt;br /&gt;
| 32f&lt;br /&gt;
|-&lt;br /&gt;
| 8u&lt;br /&gt;
| 8u&lt;br /&gt;
| 16u&lt;br /&gt;
|-&lt;br /&gt;
| 8u&lt;br /&gt;
| 8u&lt;br /&gt;
| 32f&lt;br /&gt;
|-&lt;br /&gt;
| 16u&lt;br /&gt;
| 16u&lt;br /&gt;
| 32f&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sample====&lt;br /&gt;
[[File:Addin1.jpg|none|frame|First Input Image]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Addin2.jpg|none|frame|Second Input Image]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:AddOut.jpg|none|frame|Resultant Image]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviImage gimg1 = cuvi::io::loadImage(path);&lt;br /&gt;
CuviImage gimg2 = cuvi::io::loadImage(path);&lt;br /&gt;
CuviImage gout;&lt;br /&gt;
&lt;br /&gt;
//Add	&lt;br /&gt;
cuvi::arithmeticLogical::add(gimg1,gimg2,gout);&lt;br /&gt;
&lt;br /&gt;
//The same can be achieved by using arithmetic operators&lt;br /&gt;
gout = gimg1 + gimg2;&lt;br /&gt;
&lt;br /&gt;
//Add a constant value to each pixel of the image&lt;br /&gt;
gimg1 += 10;&lt;br /&gt;
&lt;br /&gt;
//Add a different value to each channel&lt;br /&gt;
gimg2 += CuviScalar(5,10,3);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:FPNCorrection&amp;diff=1760</id>
		<title>Function:FPNCorrection</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:FPNCorrection&amp;diff=1760"/>
		<updated>2022-11-07T07:08:01Z</updated>

		<summary type="html">&lt;p&gt;Jawad: Created page with &amp;quot;__NOTOC__ Removes fixed point camera noise from the image using a more robust method than Function:fpn. In addition to black image, the function also takes a white image and gain value to remove noise from the input image using the internal formula: ''dst[i] = Saturate(gain * (src[i]- black[i])/(white[i] - black[i]),0,maxValue)''; ====Function==== {| |style=&amp;quot;font-size:100%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus FPNCorrection(const CuviImage&amp;amp; src,...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Removes fixed point camera noise from the image using a more robust method than [[Function:fpn]]. In addition to black image, the function also takes a white image and gain value to remove noise from the input image using the internal formula: ''dst[i] = Saturate(gain * (src[i]- black[i])/(white[i] - black[i]),0,maxValue)'';&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus FPNCorrection(const CuviImage&amp;amp; src,&lt;br /&gt;
                         CuviImage&amp;amp; dst,&lt;br /&gt;
                         const CuviImage&amp;amp; white, &lt;br /&gt;
                         const CuviImage&amp;amp; black, &lt;br /&gt;
                         Cuvi32f gain,&lt;br /&gt;
                         const CuviStream&amp;amp; stream)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Parameters====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| Source Image with noise&lt;br /&gt;
|-&lt;br /&gt;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant Image with no noise&lt;br /&gt;
|-&lt;br /&gt;
| white&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| White image from camera&lt;br /&gt;
|-&lt;br /&gt;
| black&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Black image from camera with closed shutter&lt;br /&gt;
|-&lt;br /&gt;
| gain&lt;br /&gt;
| Cuvi32f&lt;br /&gt;
| Gain value for white correction&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! output&lt;br /&gt;
! input&lt;br /&gt;
! blackImage&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&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:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviImage src= cuvi::io::loadImage(path);&lt;br /&gt;
CuviImage black= cuvi::io::loadImage(path);&lt;br /&gt;
CuviImage white= cuvi::io::loadImage(path);&lt;br /&gt;
CuviImage src;&lt;br /&gt;
Cuvi32f gain = 1.15f;&lt;br /&gt;
&lt;br /&gt;
//fpn&lt;br /&gt;
cuvi::colorOperations::FPNCorrection(const CuviImage&amp;amp; src,&lt;br /&gt;
                                     CuviImage&amp;amp; dst,&lt;br /&gt;
                                     const CuviImage&amp;amp; white,&lt;br /&gt;
                                     const CuviImage&amp;amp; black, &lt;br /&gt;
                                     Cuvi32f gain)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Features&amp;diff=1759</id>
		<title>CUVI Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Features&amp;diff=1759"/>
		<updated>2022-11-07T06:59:50Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Color Operations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
CUVI SDK is an image processing kit written and developed on C-CUDA and C++ for over a period of ten years. The SDK includes 100+ image processing and computer vision functions that are plug-n-play for imaging applications in a plethora of verticals. Each function is hand crafted and highly optimized to run on CUDA supported GPUs. Many functions use our own proprietary approach to algorithms and processing to make the best out of hardware and input data.&lt;br /&gt;
&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;
# Image Codecs&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:dot|dot]]&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:InRange|inRange]] - Checks if image pixels lie between a range of values&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:AutoColor|autoColor]] - Fixes false colors at pixel level using a propriety approach&lt;br /&gt;
# [[Function:BorderMask|borderMask]] - Masks image borders with custom intensity&lt;br /&gt;
# [[Function:blackGammaLUT|blackGammaLUT]] - Remaps image values according to 3 look up tables&lt;br /&gt;
# [[Function:ChannelMix|channelMix]] - Applies a color twist matrix to an image&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:Dehaze|dehaze]] - Makes sense of images taken in a blizzard&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:fpn|fpn]] - fixed point noise remove via camera black image&lt;br /&gt;
# [[Function:FPNCorrection|FPNCorrection]] - fixed point noise removal via black and white images and gain&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:Lowlight|lowlight]] -  enhances the low intensity colors in a dark photo&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;
# [[Function:YUV422TOV210|YUV422TOV210]]&lt;br /&gt;
# [[Function:YUV444TOV210|YUV444TOV210]]&lt;br /&gt;
# [[Function:V210TOYUV444|V210TOYUV444]]&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:findTransformECC|findTransformECC]] - Calculates geometric transform between two images in terms of the ECC criterion&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;
# [[Function:FocusStack|focusStack]] - Stacks multiples photos with various focus into a single all focused image&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 specified anchor&lt;br /&gt;
# [[Function:RotateNoCrop|RotateNoCrop]] - Rotates an image about specified anchor&lt;br /&gt;
# [[Function:Taper|taper]] - Smartly extends image border&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;
# [[Function:WarpPerspective|warpPerspective]] - Applies an affine transformation to an image.&lt;br /&gt;
# [[Function:WarpPerspectiveBack|warpPerspectiveBack]] - Applies an inverse affine transformation to an image.&lt;br /&gt;
&lt;br /&gt;
===Image Filtering===&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;
# [[Function:UnderwaterFilter|underwaterFilter]] - Brings out original colors of underwater photography.&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;
===Image Codecs===&lt;br /&gt;
# [[Function:Encode|encode]] - Encodes image pixel array into JPEG.&lt;br /&gt;
# [[Function:Decode|decode]] - Decodes a JPEG into an image pixel array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--===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.--&amp;gt;&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;
* upload(const void* pSrcHost, CuviRect srcROI, const Cuvi32s srcPitch, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin) - Copy a chunk of image data from host to device. &lt;br /&gt;
* upload(const void* pSrcHost, CuviRect srcROI, const Cuvi32s srcPitch, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const CuviStream&amp;amp; stream) - Asynchronously copy a chunk of 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;
* download(void* pDstHost, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const Cuvi32s dstPitch, CuviRect srcROI) - Copy a chunk of image data from device to host&lt;br /&gt;
* download(void* pDstHost, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const Cuvi32s dstPitch, CuviRect srcROI, const CuviStream&amp;amp; stream) - Asynchronously copy a chunk of image data from device to host&lt;br /&gt;
* copyTo(CuviImage&amp;amp; dst, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, CuviRect srcROI, const CuviStream&amp;amp; stream = CuviStream()) - Copy image data (or an ROI of it) from one Cuvi Image to another.&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>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Fpn&amp;diff=1758</id>
		<title>Function:Fpn</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Fpn&amp;diff=1758"/>
		<updated>2022-11-07T06:58:35Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Removes fixed point camera noise from the image using black image. Ideally the black image taken from camera with closed shutter should be all 0s. Any value above that is considered a black noise and can be removed via the formula: ''outputImage[i] = max(0, inputImage[i] - blackImage[i])'';&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus fpn(CuviImage &amp;amp;output,&lt;br /&gt;
               const CuviImage &amp;amp;input,&lt;br /&gt;
               const CuviImage &amp;amp;blackImage)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Parameters====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| output&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant Image&lt;br /&gt;
|-&lt;br /&gt;
| input&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Source Image&lt;br /&gt;
|-&lt;br /&gt;
| blackImage&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Black image from camera with closed shutter&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! output&lt;br /&gt;
! input&lt;br /&gt;
! blackImage&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&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:100%;&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);&lt;br /&gt;
CuviImage blackImage= cuvi::io::loadImage(path);&lt;br /&gt;
CuviImage output;&lt;br /&gt;
&lt;br /&gt;
//fpn&lt;br /&gt;
cuvi::colorOperations::fpn(output, input, blackImage);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Fpn&amp;diff=1757</id>
		<title>Function:Fpn</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Fpn&amp;diff=1757"/>
		<updated>2022-11-07T06:58:10Z</updated>

		<summary type="html">&lt;p&gt;Jawad: Created page with &amp;quot;__NOTOC__ Removes fixed point camera noise from the image using black image. Ideally the black image taken from camera with closed shutter should be all 0s. Any value above that is considered a black noise and can be removed via the formula: outputImage[i] = max(0, inputImage[i] - blackImage[i]); ====Function==== {| |style=&amp;quot;font-size:100%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus fpn(CuviImage &amp;amp;output,                const CuviImage &amp;amp;input,                const CuviImag...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Removes fixed point camera noise from the image using black image. Ideally the black image taken from camera with closed shutter should be all 0s. Any value above that is considered a black noise and can be removed via the formula: outputImage[i] = max(0, inputImage[i] - blackImage[i]);&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus fpn(CuviImage &amp;amp;output,&lt;br /&gt;
               const CuviImage &amp;amp;input,&lt;br /&gt;
               const CuviImage &amp;amp;blackImage)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Parameters====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| output&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant Image&lt;br /&gt;
|-&lt;br /&gt;
| input&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Source Image&lt;br /&gt;
|-&lt;br /&gt;
| blackImage&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Black image from camera with closed shutter&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Image Type Support===&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! output&lt;br /&gt;
! input&lt;br /&gt;
! blackImage&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&lt;br /&gt;
| 16uC3&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:100%;&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);&lt;br /&gt;
CuviImage blackImage= cuvi::io::loadImage(path);&lt;br /&gt;
CuviImage output;&lt;br /&gt;
&lt;br /&gt;
//fpn&lt;br /&gt;
cuvi::colorOperations::fpn(output, input, blackImage);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:Dot&amp;diff=1756</id>
		<title>Function:Dot</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:Dot&amp;diff=1756"/>
		<updated>2022-10-31T11:26:45Z</updated>

		<summary type="html">&lt;p&gt;Jawad: Created page with &amp;quot;__NOTOC__ Computes the dot product of two 2D images and stores into a 1D scalar. ====Function==== {| |style=&amp;quot;font-size:100%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt; CuviStatus cuvi::arithmeticLogical::dot(CuviImage&amp;amp; src1,                                          CuviImage&amp;amp; src2,                                         CuviScalar&amp;amp; result,                                         const CuviStream&amp;amp; stream = CuviStream()); &amp;lt;/syntaxhighlight&amp;gt; |}  ====Parameters==== {| |style=&amp;quot;font-size...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Computes the dot product of two 2D images and stores into a 1D scalar.&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CuviStatus cuvi::arithmeticLogical::dot(CuviImage&amp;amp; src1, &lt;br /&gt;
                                        CuviImage&amp;amp; src2,&lt;br /&gt;
                                        CuviScalar&amp;amp; result,&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| CuviImage&amp;amp;&lt;br /&gt;
| image 1&lt;br /&gt;
|-&lt;br /&gt;
| src2&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| image 2&lt;br /&gt;
|-&lt;br /&gt;
| result&lt;br /&gt;
| CuviScalar&amp;amp;&lt;br /&gt;
| result of dot product&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
|-&lt;br /&gt;
| 32FC1&lt;br /&gt;
|-&lt;br /&gt;
| 32FC3&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Features&amp;diff=1755</id>
		<title>CUVI Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Features&amp;diff=1755"/>
		<updated>2022-10-31T08:48:25Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Arithmetic &amp;amp; Logical */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
CUVI SDK is an image processing kit written and developed on C-CUDA and C++ for over a period of ten years. The SDK includes 100+ image processing and computer vision functions that are plug-n-play for imaging applications in a plethora of verticals. Each function is hand crafted and highly optimized to run on CUDA supported GPUs. Many functions use our own proprietary approach to algorithms and processing to make the best out of hardware and input data.&lt;br /&gt;
&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;
# Image Codecs&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:dot|dot]]&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:InRange|inRange]] - Checks if image pixels lie between a range of values&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:AutoColor|autoColor]] - Fixes false colors at pixel level using a propriety approach&lt;br /&gt;
# [[Function:BorderMask|borderMask]] - Masks image borders with custom intensity&lt;br /&gt;
# [[Function:blackGammaLUT|blackGammaLUT]] - Remaps image values according to 3 look up tables&lt;br /&gt;
# [[Function:ChannelMix|channelMix]] - Applies a color twist matrix to an image&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:Dehaze|dehaze]] - Makes sense of images taken in a blizzard&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:fpn|fpn]]&lt;br /&gt;
# [[Function:FPNCorrection|FPNCorrection]]&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:Lowlight|lowlight]] -  enhances the low intensity colors in a dark photo&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;
# [[Function:YUV422TOV210|YUV422TOV210]]&lt;br /&gt;
# [[Function:YUV444TOV210|YUV444TOV210]]&lt;br /&gt;
# [[Function:V210TOYUV444|V210TOYUV444]]&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:findTransformECC|findTransformECC]] - Calculates geometric transform between two images in terms of the ECC criterion&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;
# [[Function:FocusStack|focusStack]] - Stacks multiples photos with various focus into a single all focused image&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 specified anchor&lt;br /&gt;
# [[Function:RotateNoCrop|RotateNoCrop]] - Rotates an image about specified anchor&lt;br /&gt;
# [[Function:Taper|taper]] - Smartly extends image border&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;
# [[Function:WarpPerspective|warpPerspective]] - Applies an affine transformation to an image.&lt;br /&gt;
# [[Function:WarpPerspectiveBack|warpPerspectiveBack]] - Applies an inverse affine transformation to an image.&lt;br /&gt;
&lt;br /&gt;
===Image Filtering===&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;
# [[Function:UnderwaterFilter|underwaterFilter]] - Brings out original colors of underwater photography.&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;
===Image Codecs===&lt;br /&gt;
# [[Function:Encode|encode]] - Encodes image pixel array into JPEG.&lt;br /&gt;
# [[Function:Decode|decode]] - Decodes a JPEG into an image pixel array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--===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.--&amp;gt;&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;
* upload(const void* pSrcHost, CuviRect srcROI, const Cuvi32s srcPitch, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin) - Copy a chunk of image data from host to device. &lt;br /&gt;
* upload(const void* pSrcHost, CuviRect srcROI, const Cuvi32s srcPitch, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const CuviStream&amp;amp; stream) - Asynchronously copy a chunk of 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;
* download(void* pDstHost, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const Cuvi32s dstPitch, CuviRect srcROI) - Copy a chunk of image data from device to host&lt;br /&gt;
* download(void* pDstHost, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const Cuvi32s dstPitch, CuviRect srcROI, const CuviStream&amp;amp; stream) - Asynchronously copy a chunk of image data from device to host&lt;br /&gt;
* copyTo(CuviImage&amp;amp; dst, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, CuviRect srcROI, const CuviStream&amp;amp; stream = CuviStream()) - Copy image data (or an ROI of it) from one Cuvi Image to another.&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>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:InRange&amp;diff=1754</id>
		<title>Function:InRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:InRange&amp;diff=1754"/>
		<updated>2022-10-31T08:46:46Z</updated>

		<summary type="html">&lt;p&gt;Jawad: Created page with &amp;quot;__NOTOC__ Checks if image values lie between the range defined by two values and returns a boolean image output. The output image is always 8-bit with either 0 or 255 as an pixel value.  ====Function==== {| |style=&amp;quot;font-size:100%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;  CuviStatus inRange(const CuviImage&amp;amp; src,                          const Cuvi32f rangeMin,                          const Cuvi32f rangeMax,                          const CuviStream&amp;amp; stream = CuviStream());  &amp;lt;/syn...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Checks if image values lie between the range defined by two values and returns a boolean image output. The output image is always 8-bit with either 0 or 255 as an pixel value.&lt;br /&gt;
&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviStatus inRange(const CuviImage&amp;amp; src,&lt;br /&gt;
                         const Cuvi32f rangeMin,&lt;br /&gt;
                         const Cuvi32f rangeMax,&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;
====Parameters====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| rangeMin&lt;br /&gt;
| Cuvi32f&lt;br /&gt;
| Starting value of range&lt;br /&gt;
|-&lt;br /&gt;
| rangeMax&lt;br /&gt;
| Cuvi32f&lt;br /&gt;
| Ending value of range&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
|-&lt;br /&gt;
| 32FC1&lt;br /&gt;
|-&lt;br /&gt;
| 32FC3&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&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;
&lt;br /&gt;
CuviStatus status = cuvi::arithmeticLogical::inRange(input,&lt;br /&gt;
                                                     67,&lt;br /&gt;
                                                     128,&lt;br /&gt;
                                                     output);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=CUVI_Features&amp;diff=1753</id>
		<title>CUVI Features</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=CUVI_Features&amp;diff=1753"/>
		<updated>2022-10-31T08:37:35Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Color Operations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
CUVI SDK is an image processing kit written and developed on C-CUDA and C++ for over a period of ten years. The SDK includes 100+ image processing and computer vision functions that are plug-n-play for imaging applications in a plethora of verticals. Each function is hand crafted and highly optimized to run on CUDA supported GPUs. Many functions use our own proprietary approach to algorithms and processing to make the best out of hardware and input data.&lt;br /&gt;
&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;
# Image Codecs&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:dot|dot]]&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:inRange|inRange]]&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:AutoColor|autoColor]] - Fixes false colors at pixel level using a propriety approach&lt;br /&gt;
# [[Function:BorderMask|borderMask]] - Masks image borders with custom intensity&lt;br /&gt;
# [[Function:blackGammaLUT|blackGammaLUT]] - Remaps image values according to 3 look up tables&lt;br /&gt;
# [[Function:ChannelMix|channelMix]] - Applies a color twist matrix to an image&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:Dehaze|dehaze]] - Makes sense of images taken in a blizzard&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:fpn|fpn]]&lt;br /&gt;
# [[Function:FPNCorrection|FPNCorrection]]&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:Lowlight|lowlight]] -  enhances the low intensity colors in a dark photo&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;
# [[Function:YUV422TOV210|YUV422TOV210]]&lt;br /&gt;
# [[Function:YUV444TOV210|YUV444TOV210]]&lt;br /&gt;
# [[Function:V210TOYUV444|V210TOYUV444]]&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:findTransformECC|findTransformECC]] - Calculates geometric transform between two images in terms of the ECC criterion&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;
# [[Function:FocusStack|focusStack]] - Stacks multiples photos with various focus into a single all focused image&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 specified anchor&lt;br /&gt;
# [[Function:RotateNoCrop|RotateNoCrop]] - Rotates an image about specified anchor&lt;br /&gt;
# [[Function:Taper|taper]] - Smartly extends image border&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;
# [[Function:WarpPerspective|warpPerspective]] - Applies an affine transformation to an image.&lt;br /&gt;
# [[Function:WarpPerspectiveBack|warpPerspectiveBack]] - Applies an inverse affine transformation to an image.&lt;br /&gt;
&lt;br /&gt;
===Image Filtering===&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;
# [[Function:UnderwaterFilter|underwaterFilter]] - Brings out original colors of underwater photography.&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;
===Image Codecs===&lt;br /&gt;
# [[Function:Encode|encode]] - Encodes image pixel array into JPEG.&lt;br /&gt;
# [[Function:Decode|decode]] - Decodes a JPEG into an image pixel array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--===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.--&amp;gt;&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;
* upload(const void* pSrcHost, CuviRect srcROI, const Cuvi32s srcPitch, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin) - Copy a chunk of image data from host to device. &lt;br /&gt;
* upload(const void* pSrcHost, CuviRect srcROI, const Cuvi32s srcPitch, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const CuviStream&amp;amp; stream) - Asynchronously copy a chunk of 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;
* download(void* pDstHost, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const Cuvi32s dstPitch, CuviRect srcROI) - Copy a chunk of image data from device to host&lt;br /&gt;
* download(void* pDstHost, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, const Cuvi32s dstPitch, CuviRect srcROI, const CuviStream&amp;amp; stream) - Asynchronously copy a chunk of image data from device to host&lt;br /&gt;
* copyTo(CuviImage&amp;amp; dst, CuviPoint2D&amp;lt;int&amp;gt; dstOrigin, CuviRect srcROI, const CuviStream&amp;amp; stream = CuviStream()) - Copy image data (or an ROI of it) from one Cuvi Image to another.&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>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:BlackGammaLUT&amp;diff=1752</id>
		<title>Function:BlackGammaLUT</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:BlackGammaLUT&amp;diff=1752"/>
		<updated>2022-10-31T08:31:15Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Remaps image values according to look up tables but instead of a single table like in [[Function:LUT|LUT]], the blackGammaLUT takes separate tables for each channel.&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviStatus blackGammaLUT(const CuviImage&amp;amp; src,&lt;br /&gt;
                         CuviImage&amp;amp; dst,&lt;br /&gt;
                         Cuvi16u* redLUT,&lt;br /&gt;
                         Cuvi16u* greenLUT,&lt;br /&gt;
                         Cuvi16u* blueLUT, &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;
====Parameters====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant Image&lt;br /&gt;
|-&lt;br /&gt;
| redLUT&lt;br /&gt;
| Cuvi16u*&lt;br /&gt;
| The look-up table for red channel&lt;br /&gt;
|-&lt;br /&gt;
| greenLUT&lt;br /&gt;
| Cuvi16u*&lt;br /&gt;
| The look-up table for green channel&lt;br /&gt;
|-&lt;br /&gt;
| blueLUT&lt;br /&gt;
| Cuvi16u*&lt;br /&gt;
| The look-up table for blue channel&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&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;
//blackGammaLUT Parameters&lt;br /&gt;
	const int mappingSize = 256;&lt;br /&gt;
	Cuvi16u redLUT[mappingSize], greenLUT[mappingSize], blueLUT[mappingSize];&lt;br /&gt;
	for (int i = 0; i &amp;lt; mappingSize; i++) {&lt;br /&gt;
		redLUT[i] = 255 - i;&lt;br /&gt;
		greenLUT[i] =  i;&lt;br /&gt;
		blueLUT[i] =  i;&lt;br /&gt;
	}&lt;br /&gt;
//blackGammaLUT&lt;br /&gt;
CuviStatus status = cuvi::colorOperations::blackGammaLUT(input,&lt;br /&gt;
                                                         output,&lt;br /&gt;
                                                         redLUT,&lt;br /&gt;
                                                         greenLUT,&lt;br /&gt;
                                                         blueLUT);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:BlackGammaLUT&amp;diff=1751</id>
		<title>Function:BlackGammaLUT</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:BlackGammaLUT&amp;diff=1751"/>
		<updated>2022-10-31T08:30:17Z</updated>

		<summary type="html">&lt;p&gt;Jawad: Created page with &amp;quot;__NOTOC__ Remaps image values according to look up tables but instead of a single table like in Function:LUT, the blackGammaLUT takes separate tables for each channel. ====Function==== {| |style=&amp;quot;font-size:100%;&amp;quot;| &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;  CuviStatus blackGammaLUT(const CuviImage&amp;amp; src,                          CuviImage&amp;amp; dst,                          Cuvi16u* redLUT,                          Cuvi16u* greenLUT,                          Cuvi16u* blueLUT,...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Remaps image values according to look up tables but instead of a single table like in [[LUT|Function:LUT]], the blackGammaLUT takes separate tables for each channel.&lt;br /&gt;
====Function====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&amp;quot;|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CuviStatus blackGammaLUT(const CuviImage&amp;amp; src,&lt;br /&gt;
                         CuviImage&amp;amp; dst,&lt;br /&gt;
                         Cuvi16u* redLUT,&lt;br /&gt;
                         Cuvi16u* greenLUT,&lt;br /&gt;
                         Cuvi16u* blueLUT, &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;
====Parameters====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
| dst&lt;br /&gt;
| CuviImage&amp;amp;&lt;br /&gt;
| Resultant Image&lt;br /&gt;
|-&lt;br /&gt;
| redLUT&lt;br /&gt;
| Cuvi16u*&lt;br /&gt;
| The look-up table for red channel&lt;br /&gt;
|-&lt;br /&gt;
| greenLUT&lt;br /&gt;
| Cuvi16u*&lt;br /&gt;
| The look-up table for green channel&lt;br /&gt;
|-&lt;br /&gt;
| blueLUT&lt;br /&gt;
| Cuvi16u*&lt;br /&gt;
| The look-up table for blue channel&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC3&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&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;
//blackGammaLUT Parameters&lt;br /&gt;
	const int mappingSize = 256;&lt;br /&gt;
	Cuvi16u redLUT[mappingSize], greenLUT[mappingSize], blueLUT[mappingSize];&lt;br /&gt;
	for (int i = 0; i &amp;lt; mappingSize; i++) {&lt;br /&gt;
		redLUT[i] = 255 - i;&lt;br /&gt;
		greenLUT[i] =  i;&lt;br /&gt;
		blueLUT[i] =  i;&lt;br /&gt;
	}&lt;br /&gt;
//blackGammaLUT&lt;br /&gt;
CuviStatus status = cuvi::colorOperations::blackGammaLUT(input,&lt;br /&gt;
                                                         output,&lt;br /&gt;
                                                         redLUT,&lt;br /&gt;
                                                         greenLUT,&lt;br /&gt;
                                                         blueLUT);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Function:LUT&amp;diff=1750</id>
		<title>Function:LUT</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Function:LUT&amp;diff=1750"/>
		<updated>2022-10-31T08:24:38Z</updated>

		<summary type="html">&lt;p&gt;Jawad: /* Image Type Support */&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:100%;&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;
&lt;br /&gt;
====Parameters====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:75%;&amp;quot;|&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;
|style=&amp;quot;font-size:75%;&amp;quot;|&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type&lt;br /&gt;
|-&lt;br /&gt;
| 8uC1&lt;br /&gt;
|-&lt;br /&gt;
| 8uC3&lt;br /&gt;
|-&lt;br /&gt;
| 16uC1&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:100%;&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>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1749</id>
		<title>Performance &amp; Benchmark</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1749"/>
		<updated>2022-10-31T07:04:39Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Measured with NVIDIA's Performance tools for Windows and Linux. Timing figure represents time of kernel/function in milliseconds (rounded) on a single GPU. The benchmarks are performed on color images with 8-bits per channel except where mentioned otherwise. The list below is a small subset of [[CUVI_Features|100+ features]] in CUVI.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:85%;&amp;quot;|&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Jetson Nano&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano having '''128''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|2.99&lt;br /&gt;
|8.38&lt;br /&gt;
|15.63&lt;br /&gt;
|50.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|4.09&lt;br /&gt;
|7.42&lt;br /&gt;
|15.70&lt;br /&gt;
|53.35&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|8.11&lt;br /&gt;
|11.77&lt;br /&gt;
|42.99&lt;br /&gt;
|172.40&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|12.6&lt;br /&gt;
|23.86&lt;br /&gt;
|88.87&lt;br /&gt;
|357.94&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|3.12&lt;br /&gt;
|5.69&lt;br /&gt;
|14.13&lt;br /&gt;
|45.80&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|5.29&lt;br /&gt;
|7.88&lt;br /&gt;
|20.53&lt;br /&gt;
|61.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|1.89&lt;br /&gt;
|2.77&lt;br /&gt;
|11.26&lt;br /&gt;
|25.42&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|4.08&lt;br /&gt;
|7.52&lt;br /&gt;
|18.36&lt;br /&gt;
|62.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|1.95&lt;br /&gt;
|2.67&lt;br /&gt;
|10.64&lt;br /&gt;
|20.89&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|252.52&lt;br /&gt;
|452.81&lt;br /&gt;
|1830.54&lt;br /&gt;
|7320.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|3.74&lt;br /&gt;
|8.46&lt;br /&gt;
|15.71&lt;br /&gt;
|63.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|1.67&lt;br /&gt;
|4.76&lt;br /&gt;
|9.04&lt;br /&gt;
|28.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|9.29&lt;br /&gt;
|18.43&lt;br /&gt;
|55.58&lt;br /&gt;
|222.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|2.33&lt;br /&gt;
|5.23&lt;br /&gt;
|7.01&lt;br /&gt;
|17.08&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|3.43&lt;br /&gt;
|7.73&lt;br /&gt;
|26.00&lt;br /&gt;
|58.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|5.09&lt;br /&gt;
|11.48&lt;br /&gt;
|19.86&lt;br /&gt;
|81.36&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|18.44&lt;br /&gt;
|26.80&lt;br /&gt;
|89.58&lt;br /&gt;
|358.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|29.55&lt;br /&gt;
|50.74&lt;br /&gt;
|79.09&lt;br /&gt;
|332.95&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|10.27&lt;br /&gt;
|18.60&lt;br /&gt;
|40.45&lt;br /&gt;
|130.86&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1080&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080 having '''2,560''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.42&lt;br /&gt;
|1.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.08&lt;br /&gt;
|0.34&lt;br /&gt;
|1.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.26&lt;br /&gt;
|1.01&lt;br /&gt;
|4.04&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.31&lt;br /&gt;
|0.69&lt;br /&gt;
|2.77&lt;br /&gt;
|10.98&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.10&lt;br /&gt;
|0.40&lt;br /&gt;
|1.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.18 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.35&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.99&lt;br /&gt;
|0.21&lt;br /&gt;
|0.74&lt;br /&gt;
|2.73&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.21&lt;br /&gt;
|0.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|8.66&lt;br /&gt;
|14.44&lt;br /&gt;
|65.14&lt;br /&gt;
|270.59&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.06&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|2.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.07&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.19&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|6.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.02&lt;br /&gt;
|0.04&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.08&lt;br /&gt;
|0.16&lt;br /&gt;
|0.66&lt;br /&gt;
|2.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.22&lt;br /&gt;
|0.79&lt;br /&gt;
|3.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.30&lt;br /&gt;
|0.66&lt;br /&gt;
|2.63&lt;br /&gt;
|9.18&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.45&lt;br /&gt;
|0.96&lt;br /&gt;
|3.39&lt;br /&gt;
|11.62&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.34&lt;br /&gt;
|1.35&lt;br /&gt;
|5.10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xavier NX&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX having '''384''' CUDA Cores.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.29 &lt;br /&gt;
|0.61&lt;br /&gt;
|2.04&lt;br /&gt;
|8.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.27&lt;br /&gt;
|0.61&lt;br /&gt;
|2.31&lt;br /&gt;
|9.02&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|1.87&lt;br /&gt;
|2.3&lt;br /&gt;
|9.17&lt;br /&gt;
|36.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|2.33&lt;br /&gt;
|4.96&lt;br /&gt;
|19.07&lt;br /&gt;
|77.75&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.22&lt;br /&gt;
|0.48&lt;br /&gt;
|1.89&lt;br /&gt;
|7.47&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.68&lt;br /&gt;
|0.92&lt;br /&gt;
|3.24&lt;br /&gt;
|9.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.10&lt;br /&gt;
|0.30&lt;br /&gt;
|0.86&lt;br /&gt;
|3.28&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.36&lt;br /&gt;
|0.68&lt;br /&gt;
|1.86&lt;br /&gt;
|7.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.25&lt;br /&gt;
|0.96&lt;br /&gt;
|3.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|142.56&lt;br /&gt;
|285.95&lt;br /&gt;
|1103.14&lt;br /&gt;
|4399.84&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.38&lt;br /&gt;
|0.77&lt;br /&gt;
|3.12&lt;br /&gt;
|12.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.13&lt;br /&gt;
|0.48&lt;br /&gt;
|2.05&lt;br /&gt;
|6.05&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.85&lt;br /&gt;
|1.90&lt;br /&gt;
|7.57&lt;br /&gt;
|30.32 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.08&lt;br /&gt;
|0.33&lt;br /&gt;
|0.82&lt;br /&gt;
|2.89&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.23&lt;br /&gt;
|0.49&lt;br /&gt;
|1.90&lt;br /&gt;
|7.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.68&lt;br /&gt;
|2.26&lt;br /&gt;
|9.38&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|2.97&lt;br /&gt;
|7.89&lt;br /&gt;
|23.76&lt;br /&gt;
|108.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|1.57&lt;br /&gt;
|3.49&lt;br /&gt;
|13.6&lt;br /&gt;
|47.39&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|1.07&lt;br /&gt;
|2.39&lt;br /&gt;
|6.47&lt;br /&gt;
|25.70&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1650 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1650&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1650--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1650 having '''896''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.72&lt;br /&gt;
|2.92&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.09&lt;br /&gt;
|0.21&lt;br /&gt;
|0.85&lt;br /&gt;
|3.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.35&lt;br /&gt;
|0.78&lt;br /&gt;
|3.53&lt;br /&gt;
|13.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.75&lt;br /&gt;
|1.69&lt;br /&gt;
|6.74&lt;br /&gt;
|27.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.18&lt;br /&gt;
|0.41&lt;br /&gt;
|1.60&lt;br /&gt;
|6.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.15&lt;br /&gt;
|0.32&lt;br /&gt;
|1.21&lt;br /&gt;
|9.44&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.11&lt;br /&gt;
|0.42&lt;br /&gt;
|1.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.09&lt;br /&gt;
|0.22&lt;br /&gt;
|0.90&lt;br /&gt;
|3.66&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.06&lt;br /&gt;
|0.12&lt;br /&gt;
|0.49&lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|46.10&lt;br /&gt;
|97.24&lt;br /&gt;
|257.62&lt;br /&gt;
|1180.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.15&lt;br /&gt;
|0.35&lt;br /&gt;
|1.40&lt;br /&gt;
|5.63&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.06&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.49&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.36&lt;br /&gt;
|0.80&lt;br /&gt;
|3.22&lt;br /&gt;
|12.88&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.03&lt;br /&gt;
|0.06&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.14&lt;br /&gt;
|0.33&lt;br /&gt;
|1.30&lt;br /&gt;
|5.16&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.29&lt;br /&gt;
|1.14&lt;br /&gt;
|4.68&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.97&lt;br /&gt;
|2.17&lt;br /&gt;
|8.66&lt;br /&gt;
|34.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.66&lt;br /&gt;
|1.22&lt;br /&gt;
|4.59&lt;br /&gt;
|18.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.19&lt;br /&gt;
|0.43&lt;br /&gt;
|1.77&lt;br /&gt;
|6.84&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1650 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;RTX 2060 (Mobile)&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 (Mobile)--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 Mobile having '''1,920''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.06 &lt;br /&gt;
|0.14 &lt;br /&gt;
|0.51 &lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.07&lt;br /&gt;
|0.14&lt;br /&gt;
|0.55&lt;br /&gt;
|2.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.53&lt;br /&gt;
|2.10&lt;br /&gt;
|8.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.52&lt;br /&gt;
|1.22&lt;br /&gt;
|4.53&lt;br /&gt;
|18.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.28&lt;br /&gt;
|1.02&lt;br /&gt;
|4.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.21&lt;br /&gt;
|0.24&lt;br /&gt;
|0.84&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.08&lt;br /&gt;
|0.29&lt;br /&gt;
|1.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.069&lt;br /&gt;
|0.16&lt;br /&gt;
|0.61&lt;br /&gt;
|2.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.34&lt;br /&gt;
|1.43&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|25.77&lt;br /&gt;
|55.86&lt;br /&gt;
|221.60&lt;br /&gt;
|605.53&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.01&lt;br /&gt;
|0.24&lt;br /&gt;
|0.95&lt;br /&gt;
|3.81&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.12&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.25&lt;br /&gt;
|0.55&lt;br /&gt;
|2.21&lt;br /&gt;
|8.70 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.16&lt;br /&gt;
|0.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.36&lt;br /&gt;
|1.11&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.20&lt;br /&gt;
|0.77&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.65&lt;br /&gt;
|1.56&lt;br /&gt;
|5.81&lt;br /&gt;
|13.7&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.53&lt;br /&gt;
|1.10&lt;br /&gt;
|4.00&lt;br /&gt;
|15.2&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.30&lt;br /&gt;
|1.21&lt;br /&gt;
|4.90&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Ends--&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Color Pipeline==&lt;br /&gt;
Let's take a typical color pipeline and measure its performance on one of the entry level GPUs. Any color pipeline almost always starts with the Raw image. Before converting to RGB, you might want to do some processing on the raw which may include applying LUTs (look up tables), FPN (fixed point noise) removal and fixing white balance. Next comes demosaic/debayer followed by several further enhancement functions and a color space conversion into the desired format. This pipeline can perform in real-time on a decent entry level GPU on an 8k images and at over 100 FPS on a 2k image:&lt;br /&gt;
[[File:color_pipeline.png|300px|thumb|left|Color pipeline where each box represents one or more functions.]]&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
*Image size: '''8k'''&lt;br /&gt;
*Debayer method: DFPD&lt;br /&gt;
*RAW Size: 59.9 MB&lt;br /&gt;
*Codec: JPEG2000&lt;br /&gt;
*Sharpening: 7x7&lt;br /&gt;
*GPU: GTX 1080&lt;br /&gt;
*FPS: '''26 FPS'''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1748</id>
		<title>Performance &amp; Benchmark</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1748"/>
		<updated>2022-10-31T06:50:31Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Measured with NVIDIA's Performance tools for Windows and Linux. Timing figure represents time of kernel/function in milliseconds (rounded) on a single GPU. The benchmarks are performed on color images with 8-bits per channel except where mentioned otherwise. The list below is a small subset of [[CUVI_Features|100+ features]] in CUVI.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:85%;&amp;quot;|&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Jetson Nano&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano having '''128''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|2.99&lt;br /&gt;
|8.38&lt;br /&gt;
|15.63&lt;br /&gt;
|50.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|4.09&lt;br /&gt;
|7.42&lt;br /&gt;
|15.70&lt;br /&gt;
|53.35&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|8.11&lt;br /&gt;
|11.77&lt;br /&gt;
|42.99&lt;br /&gt;
|172.40&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|12.6&lt;br /&gt;
|23.86&lt;br /&gt;
|88.87&lt;br /&gt;
|357.94&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|3.12&lt;br /&gt;
|5.69&lt;br /&gt;
|14.13&lt;br /&gt;
|45.80&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|5.29&lt;br /&gt;
|7.88&lt;br /&gt;
|20.53&lt;br /&gt;
|61.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|1.89&lt;br /&gt;
|2.77&lt;br /&gt;
|11.26&lt;br /&gt;
|25.42&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|4.08&lt;br /&gt;
|7.52&lt;br /&gt;
|18.36&lt;br /&gt;
|62.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|1.95&lt;br /&gt;
|2.67&lt;br /&gt;
|10.64&lt;br /&gt;
|20.89&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|252.52&lt;br /&gt;
|452.81&lt;br /&gt;
|1830.54&lt;br /&gt;
|7320.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|3.74&lt;br /&gt;
|8.46&lt;br /&gt;
|15.71&lt;br /&gt;
|63.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|1.67&lt;br /&gt;
|4.76&lt;br /&gt;
|9.04&lt;br /&gt;
|28.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|9.29&lt;br /&gt;
|18.43&lt;br /&gt;
|55.58&lt;br /&gt;
|222.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|2.33&lt;br /&gt;
|5.23&lt;br /&gt;
|7.01&lt;br /&gt;
|17.08&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|3.43&lt;br /&gt;
|7.73&lt;br /&gt;
|26.00&lt;br /&gt;
|58.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|5.09&lt;br /&gt;
|11.48&lt;br /&gt;
|19.86&lt;br /&gt;
|81.36&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|18.44&lt;br /&gt;
|26.80&lt;br /&gt;
|89.58&lt;br /&gt;
|358.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|29.55&lt;br /&gt;
|50.74&lt;br /&gt;
|79.09&lt;br /&gt;
|332.95&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|10.27&lt;br /&gt;
|18.60&lt;br /&gt;
|40.45&lt;br /&gt;
|130.86&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1080&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080 having '''2,560''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.42&lt;br /&gt;
|1.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.08&lt;br /&gt;
|0.34&lt;br /&gt;
|1.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.26&lt;br /&gt;
|1.01&lt;br /&gt;
|4.04&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.31&lt;br /&gt;
|0.69&lt;br /&gt;
|2.77&lt;br /&gt;
|10.98&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.10&lt;br /&gt;
|0.40&lt;br /&gt;
|1.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.18 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.35&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.99&lt;br /&gt;
|0.21&lt;br /&gt;
|0.74&lt;br /&gt;
|2.73&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.21&lt;br /&gt;
|0.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|8.66&lt;br /&gt;
|14.44&lt;br /&gt;
|65.14&lt;br /&gt;
|270.59&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.06&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|2.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.07&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.19&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|6.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.02&lt;br /&gt;
|0.04&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.08&lt;br /&gt;
|0.16&lt;br /&gt;
|0.66&lt;br /&gt;
|2.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.22&lt;br /&gt;
|0.79&lt;br /&gt;
|3.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.30&lt;br /&gt;
|0.66&lt;br /&gt;
|2.63&lt;br /&gt;
|9.18&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.45&lt;br /&gt;
|0.96&lt;br /&gt;
|3.39&lt;br /&gt;
|11.62&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.34&lt;br /&gt;
|1.35&lt;br /&gt;
|5.10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xavier NX&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX having '''384''' CUDA Cores.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.29 &lt;br /&gt;
|0.61&lt;br /&gt;
|2.04&lt;br /&gt;
|8.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.27&lt;br /&gt;
|0.61&lt;br /&gt;
|2.31&lt;br /&gt;
|9.02&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|1.87&lt;br /&gt;
|2.3&lt;br /&gt;
|9.17&lt;br /&gt;
|36.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|2.33&lt;br /&gt;
|4.96&lt;br /&gt;
|19.07&lt;br /&gt;
|77.75&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.22&lt;br /&gt;
|0.48&lt;br /&gt;
|1.89&lt;br /&gt;
|7.47&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.68&lt;br /&gt;
|0.92&lt;br /&gt;
|3.24&lt;br /&gt;
|9.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.10&lt;br /&gt;
|0.30&lt;br /&gt;
|0.86&lt;br /&gt;
|3.28&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.36&lt;br /&gt;
|0.68&lt;br /&gt;
|1.86&lt;br /&gt;
|7.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.25&lt;br /&gt;
|0.96&lt;br /&gt;
|3.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|142.56&lt;br /&gt;
|285.95&lt;br /&gt;
|1103.14&lt;br /&gt;
|4399.84&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.38&lt;br /&gt;
|0.77&lt;br /&gt;
|3.12&lt;br /&gt;
|12.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.13&lt;br /&gt;
|0.48&lt;br /&gt;
|2.05&lt;br /&gt;
|6.05&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.85&lt;br /&gt;
|1.90&lt;br /&gt;
|7.57&lt;br /&gt;
|30.32 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.23&lt;br /&gt;
|0.49&lt;br /&gt;
|1.90&lt;br /&gt;
|7.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.68&lt;br /&gt;
|2.26&lt;br /&gt;
|9.38&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|2.97&lt;br /&gt;
|7.89&lt;br /&gt;
|23.76&lt;br /&gt;
|108.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|1.57&lt;br /&gt;
|3.49&lt;br /&gt;
|13.6&lt;br /&gt;
|47.39&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|1.07&lt;br /&gt;
|2.39&lt;br /&gt;
|6.47&lt;br /&gt;
|25.70&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1650 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1650&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1650--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1650 having '''896''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.72&lt;br /&gt;
|2.92&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.09&lt;br /&gt;
|0.21&lt;br /&gt;
|0.85&lt;br /&gt;
|3.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.35&lt;br /&gt;
|0.78&lt;br /&gt;
|3.53&lt;br /&gt;
|13.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.75&lt;br /&gt;
|1.69&lt;br /&gt;
|6.74&lt;br /&gt;
|27.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.18&lt;br /&gt;
|0.41&lt;br /&gt;
|1.60&lt;br /&gt;
|6.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.15&lt;br /&gt;
|0.32&lt;br /&gt;
|1.21&lt;br /&gt;
|9.44&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.11&lt;br /&gt;
|0.42&lt;br /&gt;
|1.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.09&lt;br /&gt;
|0.22&lt;br /&gt;
|0.90&lt;br /&gt;
|3.66&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.06&lt;br /&gt;
|0.12&lt;br /&gt;
|0.49&lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|46.10&lt;br /&gt;
|97.24&lt;br /&gt;
|257.62&lt;br /&gt;
|1180.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.15&lt;br /&gt;
|0.35&lt;br /&gt;
|1.40&lt;br /&gt;
|5.63&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.06&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.49&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.36&lt;br /&gt;
|0.80&lt;br /&gt;
|3.22&lt;br /&gt;
|12.88&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.03&lt;br /&gt;
|0.06&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.14&lt;br /&gt;
|0.33&lt;br /&gt;
|1.30&lt;br /&gt;
|5.16&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.29&lt;br /&gt;
|1.14&lt;br /&gt;
|4.68&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.97&lt;br /&gt;
|2.17&lt;br /&gt;
|8.66&lt;br /&gt;
|34.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.66&lt;br /&gt;
|1.22&lt;br /&gt;
|4.59&lt;br /&gt;
|18.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.19&lt;br /&gt;
|0.43&lt;br /&gt;
|1.77&lt;br /&gt;
|6.84&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1650 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;RTX 2060 (Mobile)&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 (Mobile)--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 Mobile having '''1,920''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.06 &lt;br /&gt;
|0.14 &lt;br /&gt;
|0.51 &lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.07&lt;br /&gt;
|0.14&lt;br /&gt;
|0.55&lt;br /&gt;
|2.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.53&lt;br /&gt;
|2.10&lt;br /&gt;
|8.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.52&lt;br /&gt;
|1.22&lt;br /&gt;
|4.53&lt;br /&gt;
|18.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.28&lt;br /&gt;
|1.02&lt;br /&gt;
|4.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.21&lt;br /&gt;
|0.24&lt;br /&gt;
|0.84&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.08&lt;br /&gt;
|0.29&lt;br /&gt;
|1.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.069&lt;br /&gt;
|0.16&lt;br /&gt;
|0.61&lt;br /&gt;
|2.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.34&lt;br /&gt;
|1.43&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|25.77&lt;br /&gt;
|55.86&lt;br /&gt;
|221.60&lt;br /&gt;
|605.53&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.01&lt;br /&gt;
|0.24&lt;br /&gt;
|0.95&lt;br /&gt;
|3.81&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.12&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.25&lt;br /&gt;
|0.55&lt;br /&gt;
|2.21&lt;br /&gt;
|8.70 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.16&lt;br /&gt;
|0.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.36&lt;br /&gt;
|1.11&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.20&lt;br /&gt;
|0.77&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.65&lt;br /&gt;
|1.56&lt;br /&gt;
|5.81&lt;br /&gt;
|13.7&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.53&lt;br /&gt;
|1.10&lt;br /&gt;
|4.00&lt;br /&gt;
|15.2&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.30&lt;br /&gt;
|1.21&lt;br /&gt;
|4.90&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Ends--&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Color Pipeline==&lt;br /&gt;
Let's take a typical color pipeline and measure its performance on one of the entry level GPUs. Any color pipeline almost always starts with the Raw image. Before converting to RGB, you might want to do some processing on the raw which may include applying LUTs (look up tables), FPN (fixed point noise) removal and fixing white balance. Next comes demosaic/debayer followed by several further enhancement functions and a color space conversion into the desired format. This pipeline can perform in real-time on a decent entry level GPU on an 8k images and at over 100 FPS on a 2k image:&lt;br /&gt;
[[File:color_pipeline.png|300px|thumb|left|Color pipeline where each box represents one or more functions.]]&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
*Image size: '''8k'''&lt;br /&gt;
*Debayer method: DFPD&lt;br /&gt;
*RAW Size: 59.9 MB&lt;br /&gt;
*Codec: JPEG2000&lt;br /&gt;
*Sharpening: 7x7&lt;br /&gt;
*GPU: GTX 1080&lt;br /&gt;
*FPS: '''26 FPS'''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1747</id>
		<title>Performance &amp; Benchmark</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1747"/>
		<updated>2022-10-31T06:25:41Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Measured with NVIDIA's Performance tools for Windows and Linux. Timing figure represents time of kernel/function in milliseconds (rounded) on a single GPU. The benchmarks are performed on color images with 8-bits per channel except where mentioned otherwise. The list below is a small subset of [[CUVI_Features|100+ features]] in CUVI.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:85%;&amp;quot;|&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Jetson Nano&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano having '''128''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|2.99&lt;br /&gt;
|8.38&lt;br /&gt;
|15.63&lt;br /&gt;
|50.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|4.09&lt;br /&gt;
|7.42&lt;br /&gt;
|15.70&lt;br /&gt;
|53.35&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|8.11&lt;br /&gt;
|11.77&lt;br /&gt;
|42.99&lt;br /&gt;
|172.40&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|12.6&lt;br /&gt;
|23.86&lt;br /&gt;
|88.87&lt;br /&gt;
|357.94&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|3.12&lt;br /&gt;
|5.69&lt;br /&gt;
|14.13&lt;br /&gt;
|45.80&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|5.29&lt;br /&gt;
|7.88&lt;br /&gt;
|20.53&lt;br /&gt;
|61.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|1.89&lt;br /&gt;
|2.77&lt;br /&gt;
|11.26&lt;br /&gt;
|25.42&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|4.08&lt;br /&gt;
|7.52&lt;br /&gt;
|18.36&lt;br /&gt;
|62.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|1.95&lt;br /&gt;
|2.67&lt;br /&gt;
|10.64&lt;br /&gt;
|20.89&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|252.52&lt;br /&gt;
|452.81&lt;br /&gt;
|1830.54&lt;br /&gt;
|7320.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|3.74&lt;br /&gt;
|8.46&lt;br /&gt;
|15.71&lt;br /&gt;
|63.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|1.67&lt;br /&gt;
|4.76&lt;br /&gt;
|9.04&lt;br /&gt;
|28.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|9.29&lt;br /&gt;
|18.43&lt;br /&gt;
|55.58&lt;br /&gt;
|222.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|3.43&lt;br /&gt;
|7.73&lt;br /&gt;
|26.00&lt;br /&gt;
|58.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|5.09&lt;br /&gt;
|11.48&lt;br /&gt;
|19.86&lt;br /&gt;
|81.36&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|18.44&lt;br /&gt;
|26.80&lt;br /&gt;
|89.58&lt;br /&gt;
|358.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|29.55&lt;br /&gt;
|50.74&lt;br /&gt;
|79.09&lt;br /&gt;
|332.95&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|10.27&lt;br /&gt;
|18.60&lt;br /&gt;
|40.45&lt;br /&gt;
|130.86&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1080&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080 having '''2,560''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.42&lt;br /&gt;
|1.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.08&lt;br /&gt;
|0.34&lt;br /&gt;
|1.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.26&lt;br /&gt;
|1.01&lt;br /&gt;
|4.04&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.31&lt;br /&gt;
|0.69&lt;br /&gt;
|2.77&lt;br /&gt;
|10.98&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.10&lt;br /&gt;
|0.40&lt;br /&gt;
|1.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.18 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.35&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.99&lt;br /&gt;
|0.21&lt;br /&gt;
|0.74&lt;br /&gt;
|2.73&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.21&lt;br /&gt;
|0.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|8.66&lt;br /&gt;
|14.44&lt;br /&gt;
|65.14&lt;br /&gt;
|270.59&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.06&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|2.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.07&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.19&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|6.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.02&lt;br /&gt;
|0.04&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.08&lt;br /&gt;
|0.16&lt;br /&gt;
|0.66&lt;br /&gt;
|2.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.22&lt;br /&gt;
|0.79&lt;br /&gt;
|3.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.30&lt;br /&gt;
|0.66&lt;br /&gt;
|2.63&lt;br /&gt;
|9.18&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.45&lt;br /&gt;
|0.96&lt;br /&gt;
|3.39&lt;br /&gt;
|11.62&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.34&lt;br /&gt;
|1.35&lt;br /&gt;
|5.10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xavier NX&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX having '''384''' CUDA Cores.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.29 &lt;br /&gt;
|0.61&lt;br /&gt;
|2.04&lt;br /&gt;
|8.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.27&lt;br /&gt;
|0.61&lt;br /&gt;
|2.31&lt;br /&gt;
|9.02&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|1.87&lt;br /&gt;
|2.3&lt;br /&gt;
|9.17&lt;br /&gt;
|36.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|2.33&lt;br /&gt;
|4.96&lt;br /&gt;
|19.07&lt;br /&gt;
|77.75&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.22&lt;br /&gt;
|0.48&lt;br /&gt;
|1.89&lt;br /&gt;
|7.47&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.68&lt;br /&gt;
|0.92&lt;br /&gt;
|3.24&lt;br /&gt;
|9.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.10&lt;br /&gt;
|0.30&lt;br /&gt;
|0.86&lt;br /&gt;
|3.28&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.36&lt;br /&gt;
|0.68&lt;br /&gt;
|1.86&lt;br /&gt;
|7.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.25&lt;br /&gt;
|0.96&lt;br /&gt;
|3.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|142.56&lt;br /&gt;
|285.95&lt;br /&gt;
|1103.14&lt;br /&gt;
|4399.84&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.38&lt;br /&gt;
|0.77&lt;br /&gt;
|3.12&lt;br /&gt;
|12.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.13&lt;br /&gt;
|0.48&lt;br /&gt;
|2.05&lt;br /&gt;
|6.05&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.85&lt;br /&gt;
|1.90&lt;br /&gt;
|7.57&lt;br /&gt;
|30.32 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.23&lt;br /&gt;
|0.49&lt;br /&gt;
|1.90&lt;br /&gt;
|7.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.68&lt;br /&gt;
|2.26&lt;br /&gt;
|9.38&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|2.97&lt;br /&gt;
|7.89&lt;br /&gt;
|23.76&lt;br /&gt;
|108.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|1.57&lt;br /&gt;
|3.49&lt;br /&gt;
|13.6&lt;br /&gt;
|47.39&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|1.07&lt;br /&gt;
|2.39&lt;br /&gt;
|6.47&lt;br /&gt;
|25.70&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1650 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1650&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1650--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1650 having '''896''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.72&lt;br /&gt;
|2.92&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.09&lt;br /&gt;
|0.21&lt;br /&gt;
|0.85&lt;br /&gt;
|3.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.35&lt;br /&gt;
|0.78&lt;br /&gt;
|3.53&lt;br /&gt;
|13.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.75&lt;br /&gt;
|1.69&lt;br /&gt;
|6.74&lt;br /&gt;
|27.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.18&lt;br /&gt;
|0.41&lt;br /&gt;
|1.60&lt;br /&gt;
|6.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.15&lt;br /&gt;
|0.32&lt;br /&gt;
|1.21&lt;br /&gt;
|9.44&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.11&lt;br /&gt;
|0.42&lt;br /&gt;
|1.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.09&lt;br /&gt;
|0.22&lt;br /&gt;
|0.90&lt;br /&gt;
|3.66&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.06&lt;br /&gt;
|0.12&lt;br /&gt;
|0.49&lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|46.10&lt;br /&gt;
|97.24&lt;br /&gt;
|257.62&lt;br /&gt;
|1180.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.15&lt;br /&gt;
|0.35&lt;br /&gt;
|1.40&lt;br /&gt;
|5.63&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.06&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.49&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.36&lt;br /&gt;
|0.80&lt;br /&gt;
|3.22&lt;br /&gt;
|12.88&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.03&lt;br /&gt;
|0.06&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.14&lt;br /&gt;
|0.33&lt;br /&gt;
|1.30&lt;br /&gt;
|5.16&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.29&lt;br /&gt;
|1.14&lt;br /&gt;
|4.68&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.97&lt;br /&gt;
|2.17&lt;br /&gt;
|8.66&lt;br /&gt;
|34.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.66&lt;br /&gt;
|1.22&lt;br /&gt;
|4.59&lt;br /&gt;
|18.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.19&lt;br /&gt;
|0.43&lt;br /&gt;
|1.77&lt;br /&gt;
|6.84&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1650 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;RTX 2060 (Mobile)&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 (Mobile)--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 Mobile having '''1,920''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.06 &lt;br /&gt;
|0.14 &lt;br /&gt;
|0.51 &lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.07&lt;br /&gt;
|0.14&lt;br /&gt;
|0.55&lt;br /&gt;
|2.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.53&lt;br /&gt;
|2.10&lt;br /&gt;
|8.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.52&lt;br /&gt;
|1.22&lt;br /&gt;
|4.53&lt;br /&gt;
|18.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.28&lt;br /&gt;
|1.02&lt;br /&gt;
|4.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.21&lt;br /&gt;
|0.24&lt;br /&gt;
|0.84&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.08&lt;br /&gt;
|0.29&lt;br /&gt;
|1.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.069&lt;br /&gt;
|0.16&lt;br /&gt;
|0.61&lt;br /&gt;
|2.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.34&lt;br /&gt;
|1.43&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|25.77&lt;br /&gt;
|55.86&lt;br /&gt;
|221.60&lt;br /&gt;
|605.53&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.01&lt;br /&gt;
|0.24&lt;br /&gt;
|0.95&lt;br /&gt;
|3.81&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.12&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.25&lt;br /&gt;
|0.55&lt;br /&gt;
|2.21&lt;br /&gt;
|8.70 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.16&lt;br /&gt;
|0.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.36&lt;br /&gt;
|1.11&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.20&lt;br /&gt;
|0.77&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.65&lt;br /&gt;
|1.56&lt;br /&gt;
|5.81&lt;br /&gt;
|13.7&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.53&lt;br /&gt;
|1.10&lt;br /&gt;
|4.00&lt;br /&gt;
|15.2&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.30&lt;br /&gt;
|1.21&lt;br /&gt;
|4.90&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Ends--&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Color Pipeline==&lt;br /&gt;
Let's take a typical color pipeline and measure its performance on one of the entry level GPUs. Any color pipeline almost always starts with the Raw image. Before converting to RGB, you might want to do some processing on the raw which may include applying LUTs (look up tables), FPN (fixed point noise) removal and fixing white balance. Next comes demosaic/debayer followed by several further enhancement functions and a color space conversion into the desired format. This pipeline can perform in real-time on a decent entry level GPU on an 8k images and at over 100 FPS on a 2k image:&lt;br /&gt;
[[File:color_pipeline.png|300px|thumb|left|Color pipeline where each box represents one or more functions.]]&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
*Image size: '''8k'''&lt;br /&gt;
*Debayer method: DFPD&lt;br /&gt;
*RAW Size: 59.9 MB&lt;br /&gt;
*Codec: JPEG2000&lt;br /&gt;
*Sharpening: 7x7&lt;br /&gt;
*GPU: GTX 1080&lt;br /&gt;
*FPS: '''26 FPS'''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1746</id>
		<title>Performance &amp; Benchmark</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1746"/>
		<updated>2022-10-30T12:44:00Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Measured with NVIDIA's Performance tools for Windows and Linux. Timing figure represents time of kernel/function in milliseconds (rounded) on a single GPU. The benchmarks are performed on color images with 8-bits per channel except where mentioned otherwise. The list below is a small subset of [[CUVI_Features|100+ features]] in CUVI.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:85%;&amp;quot;|&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Jetson Nano&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano having '''128''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|2.99&lt;br /&gt;
|8.38&lt;br /&gt;
|15.63&lt;br /&gt;
|50.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|4.09&lt;br /&gt;
|7.42&lt;br /&gt;
|15.70&lt;br /&gt;
|53.35&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|8.11&lt;br /&gt;
|11.77&lt;br /&gt;
|42.99&lt;br /&gt;
|172.40&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|12.6&lt;br /&gt;
|23.86&lt;br /&gt;
|88.87&lt;br /&gt;
|357.94&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|3.12&lt;br /&gt;
|5.69&lt;br /&gt;
|14.13&lt;br /&gt;
|45.80&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|5.29&lt;br /&gt;
|7.88&lt;br /&gt;
|20.53&lt;br /&gt;
|61.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|1.89&lt;br /&gt;
|2.77&lt;br /&gt;
|11.26&lt;br /&gt;
|25.42&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|4.08&lt;br /&gt;
|7.52&lt;br /&gt;
|18.36&lt;br /&gt;
|62.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|1.95&lt;br /&gt;
|2.67&lt;br /&gt;
|10.64&lt;br /&gt;
|20.89&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|252.52&lt;br /&gt;
|452.81&lt;br /&gt;
|1830.54&lt;br /&gt;
|7320.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|3.74&lt;br /&gt;
|8.46&lt;br /&gt;
|15.71&lt;br /&gt;
|63.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|1.67&lt;br /&gt;
|4.76&lt;br /&gt;
|9.04&lt;br /&gt;
|28.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|9.29&lt;br /&gt;
|18.43&lt;br /&gt;
|55.58&lt;br /&gt;
|222.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|3.43&lt;br /&gt;
|7.73&lt;br /&gt;
|26.00&lt;br /&gt;
|58.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|5.09&lt;br /&gt;
|11.48&lt;br /&gt;
|19.86&lt;br /&gt;
|81.36&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|18.44&lt;br /&gt;
|26.80&lt;br /&gt;
|89.58&lt;br /&gt;
|358.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|29.55&lt;br /&gt;
|50.74&lt;br /&gt;
|79.09&lt;br /&gt;
|332.95&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|10.27&lt;br /&gt;
|18.60&lt;br /&gt;
|40.45&lt;br /&gt;
|130.86&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1080&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080 having '''2,560''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.42&lt;br /&gt;
|1.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.08&lt;br /&gt;
|0.34&lt;br /&gt;
|1.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.26&lt;br /&gt;
|1.01&lt;br /&gt;
|4.04&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.31&lt;br /&gt;
|0.69&lt;br /&gt;
|2.77&lt;br /&gt;
|10.98&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.10&lt;br /&gt;
|0.40&lt;br /&gt;
|1.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.18 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.35&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.99&lt;br /&gt;
|0.21&lt;br /&gt;
|0.74&lt;br /&gt;
|2.73&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.21&lt;br /&gt;
|0.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|8.66&lt;br /&gt;
|14.44&lt;br /&gt;
|65.14&lt;br /&gt;
|270.59&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.06&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|2.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.07&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.19&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|6.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.08&lt;br /&gt;
|0.16&lt;br /&gt;
|0.66&lt;br /&gt;
|2.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.22&lt;br /&gt;
|0.79&lt;br /&gt;
|3.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.30&lt;br /&gt;
|0.66&lt;br /&gt;
|2.63&lt;br /&gt;
|9.18&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.45&lt;br /&gt;
|0.96&lt;br /&gt;
|3.39&lt;br /&gt;
|11.62&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.34&lt;br /&gt;
|1.35&lt;br /&gt;
|5.10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xavier NX&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX having '''384''' CUDA Cores.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.29 &lt;br /&gt;
|0.61&lt;br /&gt;
|2.04&lt;br /&gt;
|8.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.27&lt;br /&gt;
|0.61&lt;br /&gt;
|2.31&lt;br /&gt;
|9.02&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|1.87&lt;br /&gt;
|2.3&lt;br /&gt;
|9.17&lt;br /&gt;
|36.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|2.33&lt;br /&gt;
|4.96&lt;br /&gt;
|19.07&lt;br /&gt;
|77.75&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.22&lt;br /&gt;
|0.48&lt;br /&gt;
|1.89&lt;br /&gt;
|7.47&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.68&lt;br /&gt;
|0.92&lt;br /&gt;
|3.24&lt;br /&gt;
|9.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.10&lt;br /&gt;
|0.30&lt;br /&gt;
|0.86&lt;br /&gt;
|3.28&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.36&lt;br /&gt;
|0.68&lt;br /&gt;
|1.86&lt;br /&gt;
|7.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.25&lt;br /&gt;
|0.96&lt;br /&gt;
|3.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|142.56&lt;br /&gt;
|285.95&lt;br /&gt;
|1103.14&lt;br /&gt;
|4399.84&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.38&lt;br /&gt;
|0.77&lt;br /&gt;
|3.12&lt;br /&gt;
|12.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.13&lt;br /&gt;
|0.48&lt;br /&gt;
|2.05&lt;br /&gt;
|6.05&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.85&lt;br /&gt;
|1.90&lt;br /&gt;
|7.57&lt;br /&gt;
|30.32 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.23&lt;br /&gt;
|0.49&lt;br /&gt;
|1.90&lt;br /&gt;
|7.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.68&lt;br /&gt;
|2.26&lt;br /&gt;
|9.38&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|2.97&lt;br /&gt;
|7.89&lt;br /&gt;
|23.76&lt;br /&gt;
|108.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|1.57&lt;br /&gt;
|3.49&lt;br /&gt;
|13.6&lt;br /&gt;
|47.39&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|1.07&lt;br /&gt;
|2.39&lt;br /&gt;
|6.47&lt;br /&gt;
|25.70&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1650 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1650&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1650--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1650 having '''896''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.72&lt;br /&gt;
|2.92&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.09&lt;br /&gt;
|0.21&lt;br /&gt;
|0.85&lt;br /&gt;
|3.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.35&lt;br /&gt;
|0.78&lt;br /&gt;
|3.53&lt;br /&gt;
|13.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.75&lt;br /&gt;
|1.69&lt;br /&gt;
|6.74&lt;br /&gt;
|27.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.18&lt;br /&gt;
|0.41&lt;br /&gt;
|1.60&lt;br /&gt;
|6.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.15&lt;br /&gt;
|0.32&lt;br /&gt;
|1.21&lt;br /&gt;
|9.44&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.11&lt;br /&gt;
|0.42&lt;br /&gt;
|1.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.09&lt;br /&gt;
|0.22&lt;br /&gt;
|0.90&lt;br /&gt;
|3.66&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.06&lt;br /&gt;
|0.12&lt;br /&gt;
|0.49&lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|46.10&lt;br /&gt;
|97.24&lt;br /&gt;
|257.62&lt;br /&gt;
|1180.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.15&lt;br /&gt;
|0.35&lt;br /&gt;
|1.40&lt;br /&gt;
|5.63&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.06&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.49&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.36&lt;br /&gt;
|0.80&lt;br /&gt;
|3.22&lt;br /&gt;
|12.88&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.03&lt;br /&gt;
|0.06&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.14&lt;br /&gt;
|0.33&lt;br /&gt;
|1.30&lt;br /&gt;
|5.16&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.29&lt;br /&gt;
|1.14&lt;br /&gt;
|4.68&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.97&lt;br /&gt;
|2.17&lt;br /&gt;
|8.66&lt;br /&gt;
|34.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.66&lt;br /&gt;
|1.22&lt;br /&gt;
|4.59&lt;br /&gt;
|18.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.19&lt;br /&gt;
|0.43&lt;br /&gt;
|1.77&lt;br /&gt;
|6.84&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1650 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;RTX 2060 (Mobile)&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 (Mobile)--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 Mobile having '''1,920''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.06 &lt;br /&gt;
|0.14 &lt;br /&gt;
|0.51 &lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.07&lt;br /&gt;
|0.14&lt;br /&gt;
|0.55&lt;br /&gt;
|2.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.53&lt;br /&gt;
|2.10&lt;br /&gt;
|8.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.52&lt;br /&gt;
|1.22&lt;br /&gt;
|4.53&lt;br /&gt;
|18.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.28&lt;br /&gt;
|1.02&lt;br /&gt;
|4.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.21&lt;br /&gt;
|0.24&lt;br /&gt;
|0.84&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.08&lt;br /&gt;
|0.29&lt;br /&gt;
|1.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.069&lt;br /&gt;
|0.16&lt;br /&gt;
|0.61&lt;br /&gt;
|2.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.34&lt;br /&gt;
|1.43&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|25.77&lt;br /&gt;
|55.86&lt;br /&gt;
|221.60&lt;br /&gt;
|605.53&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.01&lt;br /&gt;
|0.24&lt;br /&gt;
|0.95&lt;br /&gt;
|3.81&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.12&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.25&lt;br /&gt;
|0.55&lt;br /&gt;
|2.21&lt;br /&gt;
|8.70 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.16&lt;br /&gt;
|0.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.36&lt;br /&gt;
|1.11&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.20&lt;br /&gt;
|0.77&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.65&lt;br /&gt;
|1.56&lt;br /&gt;
|5.81&lt;br /&gt;
|13.7&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.53&lt;br /&gt;
|1.10&lt;br /&gt;
|4.00&lt;br /&gt;
|15.2&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.30&lt;br /&gt;
|1.21&lt;br /&gt;
|4.90&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Ends--&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Color Pipeline==&lt;br /&gt;
Let's take a typical color pipeline and measure its performance on one of the entry level GPUs. Any color pipeline almost always starts with the Raw image. Before converting to RGB, you might want to do some processing on the raw which may include applying LUTs (look up tables), FPN (fixed point noise) removal and fixing white balance. Next comes demosaic/debayer followed by several further enhancement functions and a color space conversion into the desired format. This pipeline can perform in real-time on a decent entry level GPU on an 8k images and at over 100 FPS on a 2k image:&lt;br /&gt;
[[File:color_pipeline.png|300px|thumb|left|Color pipeline where each box represents one or more functions.]]&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
*Image size: '''8k'''&lt;br /&gt;
*Debayer method: DFPD&lt;br /&gt;
*RAW Size: 59.9 MB&lt;br /&gt;
*Codec: JPEG2000&lt;br /&gt;
*Sharpening: 7x7&lt;br /&gt;
*GPU: GTX 1080&lt;br /&gt;
*FPS: '''26 FPS'''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1745</id>
		<title>Performance &amp; Benchmark</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1745"/>
		<updated>2022-10-30T12:42:48Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Measured with NVIDIA's Performance tools for Windows and Linux. Timing figure represents time of kernel/function in milliseconds (rounded) on a single GPU. The benchmarks are performed on color images with 8-bits per channel except where mentioned otherwise. The list below is a small subset of [[CUVI_Features|100+ features]] in CUVI.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:85%;&amp;quot;|&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Jetson Nano&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano having '''128''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|2.99&lt;br /&gt;
|8.38&lt;br /&gt;
|15.63&lt;br /&gt;
|50.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|4.09&lt;br /&gt;
|7.42&lt;br /&gt;
|15.70&lt;br /&gt;
|53.35&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|8.11&lt;br /&gt;
|11.77&lt;br /&gt;
|42.99&lt;br /&gt;
|172.40&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|12.6&lt;br /&gt;
|23.86&lt;br /&gt;
|88.87&lt;br /&gt;
|357.94&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|3.12&lt;br /&gt;
|5.69&lt;br /&gt;
|14.13&lt;br /&gt;
|45.80&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|5.29&lt;br /&gt;
|7.88&lt;br /&gt;
|20.53&lt;br /&gt;
|61.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|1.89&lt;br /&gt;
|2.77&lt;br /&gt;
|11.26&lt;br /&gt;
|25.42&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|4.08&lt;br /&gt;
|7.52&lt;br /&gt;
|18.36&lt;br /&gt;
|62.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|1.95&lt;br /&gt;
|2.67&lt;br /&gt;
|10.64&lt;br /&gt;
|20.89&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|252.52&lt;br /&gt;
|452.81&lt;br /&gt;
|1830.54&lt;br /&gt;
|7320.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|3.74&lt;br /&gt;
|8.46&lt;br /&gt;
|15.71&lt;br /&gt;
|63.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|1.67&lt;br /&gt;
|4.76&lt;br /&gt;
|9.04&lt;br /&gt;
|28.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|9.29&lt;br /&gt;
|18.43&lt;br /&gt;
|55.58&lt;br /&gt;
|222.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|3.43&lt;br /&gt;
|7.73&lt;br /&gt;
|26.00&lt;br /&gt;
|58.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|5.09&lt;br /&gt;
|11.48&lt;br /&gt;
|19.86&lt;br /&gt;
|81.36&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|18.44&lt;br /&gt;
|26.80&lt;br /&gt;
|89.58&lt;br /&gt;
|358.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|29.55&lt;br /&gt;
|50.74&lt;br /&gt;
|79.09&lt;br /&gt;
|332.95&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|10.27&lt;br /&gt;
|18.60&lt;br /&gt;
|40.45&lt;br /&gt;
|130.86&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1080&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080 having '''2,560''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.42&lt;br /&gt;
|1.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.08&lt;br /&gt;
|0.34&lt;br /&gt;
|1.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.26&lt;br /&gt;
|1.01&lt;br /&gt;
|4.04&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.31&lt;br /&gt;
|0.69&lt;br /&gt;
|2.77&lt;br /&gt;
|10.98&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.10&lt;br /&gt;
|0.40&lt;br /&gt;
|1.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.18 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.35&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.99&lt;br /&gt;
|0.21&lt;br /&gt;
|0.74&lt;br /&gt;
|2.73&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.21&lt;br /&gt;
|0.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|8.66&lt;br /&gt;
|14.44&lt;br /&gt;
|65.14&lt;br /&gt;
|270.59&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.06&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|2.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.07&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.19&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|6.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.08&lt;br /&gt;
|0.16&lt;br /&gt;
|0.66&lt;br /&gt;
|2.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.22&lt;br /&gt;
|0.79&lt;br /&gt;
|3.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.30&lt;br /&gt;
|0.66&lt;br /&gt;
|2.63&lt;br /&gt;
|9.18&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.45&lt;br /&gt;
|0.96&lt;br /&gt;
|3.39&lt;br /&gt;
|11.62&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.34&lt;br /&gt;
|1.35&lt;br /&gt;
|5.10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xavier NX&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX having '''384''' CUDA Cores.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.29 &lt;br /&gt;
|0.61&lt;br /&gt;
|2.04&lt;br /&gt;
|8.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.27&lt;br /&gt;
|0.61&lt;br /&gt;
|2.31&lt;br /&gt;
|9.02&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|1.87&lt;br /&gt;
|2.3&lt;br /&gt;
|9.17&lt;br /&gt;
|36.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|2.33&lt;br /&gt;
|4.96&lt;br /&gt;
|19.07&lt;br /&gt;
|77.75&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.22&lt;br /&gt;
|0.48&lt;br /&gt;
|1.89&lt;br /&gt;
|7.47&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.68&lt;br /&gt;
|0.92&lt;br /&gt;
|3.24&lt;br /&gt;
|9.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.10&lt;br /&gt;
|0.30&lt;br /&gt;
|0.86&lt;br /&gt;
|3.28&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.36&lt;br /&gt;
|0.68&lt;br /&gt;
|1.86&lt;br /&gt;
|7.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.25&lt;br /&gt;
|0.96&lt;br /&gt;
|3.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|142.56&lt;br /&gt;
|285.95&lt;br /&gt;
|1103.14&lt;br /&gt;
|4399.84&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.38&lt;br /&gt;
|0.77&lt;br /&gt;
|3.12&lt;br /&gt;
|12.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.13&lt;br /&gt;
|0.48&lt;br /&gt;
|2.05&lt;br /&gt;
|6.05&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.85&lt;br /&gt;
|1.90&lt;br /&gt;
|7.57&lt;br /&gt;
|30.32 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.23&lt;br /&gt;
|0.49&lt;br /&gt;
|1.90&lt;br /&gt;
|7.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.68&lt;br /&gt;
|2.26&lt;br /&gt;
|9.38&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|2.97&lt;br /&gt;
|7.89&lt;br /&gt;
|23.76&lt;br /&gt;
|108.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|1.57&lt;br /&gt;
|3.49&lt;br /&gt;
|13.6&lt;br /&gt;
|47.39&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|1.07&lt;br /&gt;
|2.39&lt;br /&gt;
|6.47&lt;br /&gt;
|25.70&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1650&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1650--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1650 having '''896''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.72&lt;br /&gt;
|2.92&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.09&lt;br /&gt;
|0.21&lt;br /&gt;
|0.85&lt;br /&gt;
|3.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.35&lt;br /&gt;
|0.78&lt;br /&gt;
|3.53&lt;br /&gt;
|13.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.75&lt;br /&gt;
|1.69&lt;br /&gt;
|6.74&lt;br /&gt;
|27.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.18&lt;br /&gt;
|0.41&lt;br /&gt;
|1.60&lt;br /&gt;
|6.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.15&lt;br /&gt;
|0.32&lt;br /&gt;
|1.21&lt;br /&gt;
|9.44&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.11&lt;br /&gt;
|0.42&lt;br /&gt;
|1.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.09&lt;br /&gt;
|0.22&lt;br /&gt;
|0.90&lt;br /&gt;
|3.66&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.06&lt;br /&gt;
|0.12&lt;br /&gt;
|0.49&lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|46.10&lt;br /&gt;
|97.24&lt;br /&gt;
|257.62&lt;br /&gt;
|1180.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.15&lt;br /&gt;
|0.35&lt;br /&gt;
|1.40&lt;br /&gt;
|5.63&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.06&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.49&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.36&lt;br /&gt;
|0.80&lt;br /&gt;
|3.22&lt;br /&gt;
|12.88&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.16&lt;br /&gt;
|0.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.03&lt;br /&gt;
|0.06&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.14&lt;br /&gt;
|0.33&lt;br /&gt;
|1.30&lt;br /&gt;
|5.16&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.29&lt;br /&gt;
|1.14&lt;br /&gt;
|4.68&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.97&lt;br /&gt;
|2.17&lt;br /&gt;
|8.66&lt;br /&gt;
|34.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.66&lt;br /&gt;
|1.22&lt;br /&gt;
|4.59&lt;br /&gt;
|18.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.19&lt;br /&gt;
|0.43&lt;br /&gt;
|1.77&lt;br /&gt;
|6.84&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1650 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;RTX 2060 (Mobile)&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 (Mobile)--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 Mobile having '''1,920''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.06 &lt;br /&gt;
|0.14 &lt;br /&gt;
|0.51 &lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.07&lt;br /&gt;
|0.14&lt;br /&gt;
|0.55&lt;br /&gt;
|2.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.53&lt;br /&gt;
|2.10&lt;br /&gt;
|8.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.52&lt;br /&gt;
|1.22&lt;br /&gt;
|4.53&lt;br /&gt;
|18.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.28&lt;br /&gt;
|1.02&lt;br /&gt;
|4.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.21&lt;br /&gt;
|0.24&lt;br /&gt;
|0.84&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.08&lt;br /&gt;
|0.29&lt;br /&gt;
|1.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.069&lt;br /&gt;
|0.16&lt;br /&gt;
|0.61&lt;br /&gt;
|2.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.34&lt;br /&gt;
|1.43&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|25.77&lt;br /&gt;
|55.86&lt;br /&gt;
|221.60&lt;br /&gt;
|605.53&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.01&lt;br /&gt;
|0.24&lt;br /&gt;
|0.95&lt;br /&gt;
|3.81&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.12&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.25&lt;br /&gt;
|0.55&lt;br /&gt;
|2.21&lt;br /&gt;
|8.70 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.36&lt;br /&gt;
|1.11&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.20&lt;br /&gt;
|0.77&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.65&lt;br /&gt;
|1.56&lt;br /&gt;
|5.81&lt;br /&gt;
|13.7&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.53&lt;br /&gt;
|1.10&lt;br /&gt;
|4.00&lt;br /&gt;
|15.2&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.30&lt;br /&gt;
|1.21&lt;br /&gt;
|4.90&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Ends--&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Color Pipeline==&lt;br /&gt;
Let's take a typical color pipeline and measure its performance on one of the entry level GPUs. Any color pipeline almost always starts with the Raw image. Before converting to RGB, you might want to do some processing on the raw which may include applying LUTs (look up tables), FPN (fixed point noise) removal and fixing white balance. Next comes demosaic/debayer followed by several further enhancement functions and a color space conversion into the desired format. This pipeline can perform in real-time on a decent entry level GPU on an 8k images and at over 100 FPS on a 2k image:&lt;br /&gt;
[[File:color_pipeline.png|300px|thumb|left|Color pipeline where each box represents one or more functions.]]&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
*Image size: '''8k'''&lt;br /&gt;
*Debayer method: DFPD&lt;br /&gt;
*RAW Size: 59.9 MB&lt;br /&gt;
*Codec: JPEG2000&lt;br /&gt;
*Sharpening: 7x7&lt;br /&gt;
*GPU: GTX 1080&lt;br /&gt;
*FPS: '''26 FPS'''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1744</id>
		<title>Performance &amp; Benchmark</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1744"/>
		<updated>2022-10-30T12:27:39Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Measured with NVIDIA's Performance tools for Windows and Linux. Timing figure represents time of kernel/function in milliseconds (rounded) on a single GPU. The benchmarks are performed on color images with 8-bits per channel except where mentioned otherwise. The list below is a small subset of [[CUVI_Features|100+ features]] in CUVI.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:85%;&amp;quot;|&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Jetson Nano&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano having '''128''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|2.99&lt;br /&gt;
|8.38&lt;br /&gt;
|15.63&lt;br /&gt;
|50.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|4.09&lt;br /&gt;
|7.42&lt;br /&gt;
|15.70&lt;br /&gt;
|53.35&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|8.11&lt;br /&gt;
|11.77&lt;br /&gt;
|42.99&lt;br /&gt;
|172.40&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|12.6&lt;br /&gt;
|23.86&lt;br /&gt;
|88.87&lt;br /&gt;
|357.94&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|3.12&lt;br /&gt;
|5.69&lt;br /&gt;
|14.13&lt;br /&gt;
|45.80&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|5.29&lt;br /&gt;
|7.88&lt;br /&gt;
|20.53&lt;br /&gt;
|61.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|1.89&lt;br /&gt;
|2.77&lt;br /&gt;
|11.26&lt;br /&gt;
|25.42&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|4.08&lt;br /&gt;
|7.52&lt;br /&gt;
|18.36&lt;br /&gt;
|62.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|1.95&lt;br /&gt;
|2.67&lt;br /&gt;
|10.64&lt;br /&gt;
|20.89&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|252.52&lt;br /&gt;
|452.81&lt;br /&gt;
|1830.54&lt;br /&gt;
|7320.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|3.74&lt;br /&gt;
|8.46&lt;br /&gt;
|15.71&lt;br /&gt;
|63.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|1.67&lt;br /&gt;
|4.76&lt;br /&gt;
|9.04&lt;br /&gt;
|28.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|9.29&lt;br /&gt;
|18.43&lt;br /&gt;
|55.58&lt;br /&gt;
|222.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|3.43&lt;br /&gt;
|7.73&lt;br /&gt;
|26.00&lt;br /&gt;
|58.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|5.09&lt;br /&gt;
|11.48&lt;br /&gt;
|19.86&lt;br /&gt;
|81.36&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|18.44&lt;br /&gt;
|26.80&lt;br /&gt;
|89.58&lt;br /&gt;
|358.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|29.55&lt;br /&gt;
|50.74&lt;br /&gt;
|79.09&lt;br /&gt;
|332.95&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|10.27&lt;br /&gt;
|18.60&lt;br /&gt;
|40.45&lt;br /&gt;
|130.86&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1080&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080 having '''2,560''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.42&lt;br /&gt;
|1.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.08&lt;br /&gt;
|0.34&lt;br /&gt;
|1.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.26&lt;br /&gt;
|1.01&lt;br /&gt;
|4.04&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.31&lt;br /&gt;
|0.69&lt;br /&gt;
|2.77&lt;br /&gt;
|10.98&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.10&lt;br /&gt;
|0.40&lt;br /&gt;
|1.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.18 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.35&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.99&lt;br /&gt;
|0.21&lt;br /&gt;
|0.74&lt;br /&gt;
|2.73&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.21&lt;br /&gt;
|0.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|8.66&lt;br /&gt;
|14.44&lt;br /&gt;
|65.14&lt;br /&gt;
|270.59&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.06&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|2.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.07&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.19&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|6.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.08&lt;br /&gt;
|0.16&lt;br /&gt;
|0.66&lt;br /&gt;
|2.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.22&lt;br /&gt;
|0.79&lt;br /&gt;
|3.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.30&lt;br /&gt;
|0.66&lt;br /&gt;
|2.63&lt;br /&gt;
|9.18&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.45&lt;br /&gt;
|0.96&lt;br /&gt;
|3.39&lt;br /&gt;
|11.62&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.34&lt;br /&gt;
|1.35&lt;br /&gt;
|5.10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xavier NX&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX having '''384''' CUDA Cores.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.29 &lt;br /&gt;
|0.61&lt;br /&gt;
|2.04&lt;br /&gt;
|8.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.27&lt;br /&gt;
|0.61&lt;br /&gt;
|2.31&lt;br /&gt;
|9.02&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|1.87&lt;br /&gt;
|2.3&lt;br /&gt;
|9.17&lt;br /&gt;
|36.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|2.33&lt;br /&gt;
|4.96&lt;br /&gt;
|19.07&lt;br /&gt;
|77.75&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.22&lt;br /&gt;
|0.48&lt;br /&gt;
|1.89&lt;br /&gt;
|7.47&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.68&lt;br /&gt;
|0.92&lt;br /&gt;
|3.24&lt;br /&gt;
|9.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.10&lt;br /&gt;
|0.30&lt;br /&gt;
|0.86&lt;br /&gt;
|3.28&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.36&lt;br /&gt;
|0.68&lt;br /&gt;
|1.86&lt;br /&gt;
|7.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.25&lt;br /&gt;
|0.96&lt;br /&gt;
|3.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|142.56&lt;br /&gt;
|285.95&lt;br /&gt;
|1103.14&lt;br /&gt;
|4399.84&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.38&lt;br /&gt;
|0.77&lt;br /&gt;
|3.12&lt;br /&gt;
|12.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.13&lt;br /&gt;
|0.48&lt;br /&gt;
|2.05&lt;br /&gt;
|6.05&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.85&lt;br /&gt;
|1.90&lt;br /&gt;
|7.57&lt;br /&gt;
|30.32 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.23&lt;br /&gt;
|0.49&lt;br /&gt;
|1.90&lt;br /&gt;
|7.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.68&lt;br /&gt;
|2.26&lt;br /&gt;
|9.38&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|2.97&lt;br /&gt;
|7.89&lt;br /&gt;
|23.76&lt;br /&gt;
|108.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|1.57&lt;br /&gt;
|3.49&lt;br /&gt;
|13.6&lt;br /&gt;
|47.39&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|1.07&lt;br /&gt;
|2.39&lt;br /&gt;
|6.47&lt;br /&gt;
|25.70&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1650&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1650--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1650 having '''896''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.72&lt;br /&gt;
|2.92&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.09&lt;br /&gt;
|0.21&lt;br /&gt;
|0.85&lt;br /&gt;
|3.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.35&lt;br /&gt;
|0.78&lt;br /&gt;
|3.53&lt;br /&gt;
|13.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.75&lt;br /&gt;
|1.69&lt;br /&gt;
|6.74&lt;br /&gt;
|27.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.18&lt;br /&gt;
|0.41&lt;br /&gt;
|1.60&lt;br /&gt;
|6.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.15&lt;br /&gt;
|0.32&lt;br /&gt;
|1.21&lt;br /&gt;
|9.44&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.11&lt;br /&gt;
|0.42&lt;br /&gt;
|1.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.09&lt;br /&gt;
|0.22&lt;br /&gt;
|0.90&lt;br /&gt;
|3.66&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.06&lt;br /&gt;
|0.12&lt;br /&gt;
|0.49&lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|46.10&lt;br /&gt;
|97.24&lt;br /&gt;
|257.62&lt;br /&gt;
|1180.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.15&lt;br /&gt;
|0.35&lt;br /&gt;
|1.40&lt;br /&gt;
|5.63&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.06&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.49&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.36&lt;br /&gt;
|0.80&lt;br /&gt;
|3.22&lt;br /&gt;
|12.88&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=0.5&lt;br /&gt;
|0.03&lt;br /&gt;
|0.06&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.14&lt;br /&gt;
|0.33&lt;br /&gt;
|1.30&lt;br /&gt;
|5.16&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.29&lt;br /&gt;
|1.14&lt;br /&gt;
|4.68&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.97&lt;br /&gt;
|2.17&lt;br /&gt;
|8.66&lt;br /&gt;
|34.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.66&lt;br /&gt;
|1.22&lt;br /&gt;
|4.59&lt;br /&gt;
|18.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.19&lt;br /&gt;
|0.43&lt;br /&gt;
|1.77&lt;br /&gt;
|6.84&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1650 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;RTX 2060 (Mobile)&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 (Mobile)--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 Mobile having '''1,920''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.06 &lt;br /&gt;
|0.14 &lt;br /&gt;
|0.51 &lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.07&lt;br /&gt;
|0.14&lt;br /&gt;
|0.55&lt;br /&gt;
|2.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.53&lt;br /&gt;
|2.10&lt;br /&gt;
|8.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.52&lt;br /&gt;
|1.22&lt;br /&gt;
|4.53&lt;br /&gt;
|18.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.28&lt;br /&gt;
|1.02&lt;br /&gt;
|4.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.21&lt;br /&gt;
|0.24&lt;br /&gt;
|0.84&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.08&lt;br /&gt;
|0.29&lt;br /&gt;
|1.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.069&lt;br /&gt;
|0.16&lt;br /&gt;
|0.61&lt;br /&gt;
|2.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.34&lt;br /&gt;
|1.43&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|25.77&lt;br /&gt;
|55.86&lt;br /&gt;
|221.60&lt;br /&gt;
|605.53&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.01&lt;br /&gt;
|0.24&lt;br /&gt;
|0.95&lt;br /&gt;
|3.81&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.12&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.25&lt;br /&gt;
|0.55&lt;br /&gt;
|2.21&lt;br /&gt;
|8.70 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.36&lt;br /&gt;
|1.11&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.20&lt;br /&gt;
|0.77&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.65&lt;br /&gt;
|1.56&lt;br /&gt;
|5.81&lt;br /&gt;
|13.7&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.53&lt;br /&gt;
|1.10&lt;br /&gt;
|4.00&lt;br /&gt;
|15.2&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.30&lt;br /&gt;
|1.21&lt;br /&gt;
|4.90&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Ends--&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Color Pipeline==&lt;br /&gt;
Let's take a typical color pipeline and measure its performance on one of the entry level GPUs. Any color pipeline almost always starts with the Raw image. Before converting to RGB, you might want to do some processing on the raw which may include applying LUTs (look up tables), FPN (fixed point noise) removal and fixing white balance. Next comes demosaic/debayer followed by several further enhancement functions and a color space conversion into the desired format. This pipeline can perform in real-time on a decent entry level GPU on an 8k images and at over 100 FPS on a 2k image:&lt;br /&gt;
[[File:color_pipeline.png|300px|thumb|left|Color pipeline where each box represents one or more functions.]]&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
*Image size: '''8k'''&lt;br /&gt;
*Debayer method: DFPD&lt;br /&gt;
*RAW Size: 59.9 MB&lt;br /&gt;
*Codec: JPEG2000&lt;br /&gt;
*Sharpening: 7x7&lt;br /&gt;
*GPU: GTX 1080&lt;br /&gt;
*FPS: '''26 FPS'''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1743</id>
		<title>Performance &amp; Benchmark</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1743"/>
		<updated>2022-10-30T08:14:29Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Measured with NVIDIA's Performance tools for Windows and Linux. Timing figure represents time of kernel/function in milliseconds (rounded) on a single GPU. The benchmarks are performed on color images with 8-bits per channel except where mentioned otherwise. The list below is a small subset of [[CUVI_Features|100+ features]] in CUVI.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:85%;&amp;quot;|&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Jetson Nano&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano having '''128''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|2.99&lt;br /&gt;
|8.38&lt;br /&gt;
|15.63&lt;br /&gt;
|50.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|4.09&lt;br /&gt;
|7.42&lt;br /&gt;
|15.70&lt;br /&gt;
|53.35&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|8.11&lt;br /&gt;
|11.77&lt;br /&gt;
|42.99&lt;br /&gt;
|172.40&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|12.6&lt;br /&gt;
|23.86&lt;br /&gt;
|88.87&lt;br /&gt;
|357.94&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|3.12&lt;br /&gt;
|5.69&lt;br /&gt;
|14.13&lt;br /&gt;
|45.80&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|5.29&lt;br /&gt;
|7.88&lt;br /&gt;
|20.53&lt;br /&gt;
|61.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|1.89&lt;br /&gt;
|2.77&lt;br /&gt;
|11.26&lt;br /&gt;
|25.42&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|4.08&lt;br /&gt;
|7.52&lt;br /&gt;
|18.36&lt;br /&gt;
|62.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|1.95&lt;br /&gt;
|2.67&lt;br /&gt;
|10.64&lt;br /&gt;
|20.89&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|252.52&lt;br /&gt;
|452.81&lt;br /&gt;
|1830.54&lt;br /&gt;
|7320.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|3.74&lt;br /&gt;
|8.46&lt;br /&gt;
|15.71&lt;br /&gt;
|63.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|1.67&lt;br /&gt;
|4.76&lt;br /&gt;
|9.04&lt;br /&gt;
|28.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|9.29&lt;br /&gt;
|18.43&lt;br /&gt;
|55.58&lt;br /&gt;
|222.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|3.43&lt;br /&gt;
|7.73&lt;br /&gt;
|26.00&lt;br /&gt;
|58.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|5.09&lt;br /&gt;
|11.48&lt;br /&gt;
|19.86&lt;br /&gt;
|81.36&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|18.44&lt;br /&gt;
|26.80&lt;br /&gt;
|89.58&lt;br /&gt;
|358.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|29.55&lt;br /&gt;
|50.74&lt;br /&gt;
|79.09&lt;br /&gt;
|332.95&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|10.27&lt;br /&gt;
|18.60&lt;br /&gt;
|40.45&lt;br /&gt;
|130.86&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1080&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080 having '''2,560''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.42&lt;br /&gt;
|1.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.08&lt;br /&gt;
|0.34&lt;br /&gt;
|1.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.26&lt;br /&gt;
|1.01&lt;br /&gt;
|4.04&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.31&lt;br /&gt;
|0.69&lt;br /&gt;
|2.77&lt;br /&gt;
|10.98&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.10&lt;br /&gt;
|0.40&lt;br /&gt;
|1.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.18 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.35&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.99&lt;br /&gt;
|0.21&lt;br /&gt;
|0.74&lt;br /&gt;
|2.73&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.21&lt;br /&gt;
|0.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|8.66&lt;br /&gt;
|14.44&lt;br /&gt;
|65.14&lt;br /&gt;
|270.59&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.06&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|2.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.07&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.19&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|6.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.08&lt;br /&gt;
|0.16&lt;br /&gt;
|0.66&lt;br /&gt;
|2.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.22&lt;br /&gt;
|0.79&lt;br /&gt;
|3.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.30&lt;br /&gt;
|0.66&lt;br /&gt;
|2.63&lt;br /&gt;
|9.18&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.45&lt;br /&gt;
|0.96&lt;br /&gt;
|3.39&lt;br /&gt;
|11.62&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.34&lt;br /&gt;
|1.35&lt;br /&gt;
|5.10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xavier NX&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX having '''384''' CUDA Cores.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.29 &lt;br /&gt;
|0.61&lt;br /&gt;
|2.04&lt;br /&gt;
|8.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.27&lt;br /&gt;
|0.61&lt;br /&gt;
|2.31&lt;br /&gt;
|9.02&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|1.87&lt;br /&gt;
|2.3&lt;br /&gt;
|9.17&lt;br /&gt;
|36.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|2.33&lt;br /&gt;
|4.96&lt;br /&gt;
|19.07&lt;br /&gt;
|77.75&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.22&lt;br /&gt;
|0.48&lt;br /&gt;
|1.89&lt;br /&gt;
|7.47&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.68&lt;br /&gt;
|0.92&lt;br /&gt;
|3.24&lt;br /&gt;
|9.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.10&lt;br /&gt;
|0.30&lt;br /&gt;
|0.86&lt;br /&gt;
|3.28&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.36&lt;br /&gt;
|0.68&lt;br /&gt;
|1.86&lt;br /&gt;
|7.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.25&lt;br /&gt;
|0.96&lt;br /&gt;
|3.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|142.56&lt;br /&gt;
|285.95&lt;br /&gt;
|1103.14&lt;br /&gt;
|4399.84&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.38&lt;br /&gt;
|0.77&lt;br /&gt;
|3.12&lt;br /&gt;
|12.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.13&lt;br /&gt;
|0.48&lt;br /&gt;
|2.05&lt;br /&gt;
|6.05&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.85&lt;br /&gt;
|1.90&lt;br /&gt;
|7.57&lt;br /&gt;
|30.32 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.23&lt;br /&gt;
|0.49&lt;br /&gt;
|1.90&lt;br /&gt;
|7.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.68&lt;br /&gt;
|2.26&lt;br /&gt;
|9.38&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|2.97&lt;br /&gt;
|7.89&lt;br /&gt;
|23.76&lt;br /&gt;
|108.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|1.57&lt;br /&gt;
|3.49&lt;br /&gt;
|13.6&lt;br /&gt;
|47.39&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|1.07&lt;br /&gt;
|2.39&lt;br /&gt;
|6.47&lt;br /&gt;
|25.70&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;RTX 2060 (Mobile)&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 (Mobile)--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 Mobile having '''1,920''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.06 &lt;br /&gt;
|0.14 &lt;br /&gt;
|0.51 &lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.07&lt;br /&gt;
|0.14&lt;br /&gt;
|0.55&lt;br /&gt;
|2.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.53&lt;br /&gt;
|2.10&lt;br /&gt;
|8.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.52&lt;br /&gt;
|1.22&lt;br /&gt;
|4.53&lt;br /&gt;
|18.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.28&lt;br /&gt;
|1.02&lt;br /&gt;
|4.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.21&lt;br /&gt;
|0.24&lt;br /&gt;
|0.84&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.08&lt;br /&gt;
|0.29&lt;br /&gt;
|1.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.069&lt;br /&gt;
|0.16&lt;br /&gt;
|0.61&lt;br /&gt;
|2.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.34&lt;br /&gt;
|1.43&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|25.77&lt;br /&gt;
|55.86&lt;br /&gt;
|221.60&lt;br /&gt;
|605.53&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.01&lt;br /&gt;
|0.24&lt;br /&gt;
|0.95&lt;br /&gt;
|3.81&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.12&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.25&lt;br /&gt;
|0.55&lt;br /&gt;
|2.21&lt;br /&gt;
|8.70 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.36&lt;br /&gt;
|1.11&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.20&lt;br /&gt;
|0.77&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.65&lt;br /&gt;
|1.56&lt;br /&gt;
|5.81&lt;br /&gt;
|13.7&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.53&lt;br /&gt;
|1.10&lt;br /&gt;
|4.00&lt;br /&gt;
|15.2&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.30&lt;br /&gt;
|1.21&lt;br /&gt;
|4.90&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Ends--&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Color Pipeline==&lt;br /&gt;
Let's take a typical color pipeline and measure its performance on one of the entry level GPUs. Any color pipeline almost always starts with the Raw image. Before converting to RGB, you might want to do some processing on the raw which may include applying LUTs (look up tables), FPN (fixed point noise) removal and fixing white balance. Next comes demosaic/debayer followed by several further enhancement functions and a color space conversion into the desired format. This pipeline can perform in real-time on a decent entry level GPU on an 8k images and at over 100 FPS on a 2k image:&lt;br /&gt;
[[File:color_pipeline.png|300px|thumb|left|Color pipeline where each box represents one or more functions.]]&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
*Image size: '''8k'''&lt;br /&gt;
*Debayer method: DFPD&lt;br /&gt;
*RAW Size: 59.9 MB&lt;br /&gt;
*Codec: JPEG2000&lt;br /&gt;
*Sharpening: 7x7&lt;br /&gt;
*GPU: GTX 1080&lt;br /&gt;
*FPS: '''26 FPS'''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1742</id>
		<title>Performance &amp; Benchmark</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1742"/>
		<updated>2022-10-30T08:11:14Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Measured with NVIDIA's Performance tools for Windows and Linux. Timing figure represents time of kernel/function in milliseconds (rounded) on a single GPU. The benchmarks are performed on color images with 8-bits per channel except where mentioned otherwise. The list below is a small subset of [[CUVI_Features|100+ features]] in CUVI.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:85%;&amp;quot;|&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Jetson Nano&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano having '''128''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|2.99&lt;br /&gt;
|8.38&lt;br /&gt;
|15.63&lt;br /&gt;
|50.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|4.09&lt;br /&gt;
|7.42&lt;br /&gt;
|15.70&lt;br /&gt;
|53.35&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|8.11&lt;br /&gt;
|11.77&lt;br /&gt;
|42.99&lt;br /&gt;
|172.40&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|12.6&lt;br /&gt;
|23.86&lt;br /&gt;
|88.87&lt;br /&gt;
|357.94&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|3.12&lt;br /&gt;
|5.69&lt;br /&gt;
|14.13&lt;br /&gt;
|45.80&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|5.29&lt;br /&gt;
|7.88&lt;br /&gt;
|20.53&lt;br /&gt;
|61.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|1.89&lt;br /&gt;
|2.77&lt;br /&gt;
|11.26&lt;br /&gt;
|25.42&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|4.08&lt;br /&gt;
|7.52&lt;br /&gt;
|18.36&lt;br /&gt;
|62.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|1.95&lt;br /&gt;
|2.67&lt;br /&gt;
|10.64&lt;br /&gt;
|20.89&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|252.52&lt;br /&gt;
|452.81&lt;br /&gt;
|1830.54&lt;br /&gt;
|7320.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|3.74&lt;br /&gt;
|8.46&lt;br /&gt;
|15.71&lt;br /&gt;
|63.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|1.67&lt;br /&gt;
|4.76&lt;br /&gt;
|9.04&lt;br /&gt;
|28.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|9.29&lt;br /&gt;
|18.43&lt;br /&gt;
|55.58&lt;br /&gt;
|222.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|3.43&lt;br /&gt;
|7.73&lt;br /&gt;
|26.00&lt;br /&gt;
|58.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|5.09&lt;br /&gt;
|11.48&lt;br /&gt;
|19.86&lt;br /&gt;
|81.36&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|18.44&lt;br /&gt;
|26.80&lt;br /&gt;
|89.58&lt;br /&gt;
|358.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|29.55&lt;br /&gt;
|50.74&lt;br /&gt;
|79.09&lt;br /&gt;
|332.95&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|10.27&lt;br /&gt;
|18.60&lt;br /&gt;
|40.45&lt;br /&gt;
|130.86&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1080&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080 having '''2,560''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.42&lt;br /&gt;
|1.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.08&lt;br /&gt;
|0.34&lt;br /&gt;
|1.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.26&lt;br /&gt;
|1.01&lt;br /&gt;
|4.04&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.31&lt;br /&gt;
|0.69&lt;br /&gt;
|2.77&lt;br /&gt;
|10.98&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.10&lt;br /&gt;
|0.40&lt;br /&gt;
|1.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.18 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.35&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.99&lt;br /&gt;
|0.21&lt;br /&gt;
|0.74&lt;br /&gt;
|2.73&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.21&lt;br /&gt;
|0.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|8.66&lt;br /&gt;
|14.44&lt;br /&gt;
|65.14&lt;br /&gt;
|270.59&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.06&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|2.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.07&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.19&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|6.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.08&lt;br /&gt;
|0.16&lt;br /&gt;
|0.66&lt;br /&gt;
|2.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.22&lt;br /&gt;
|0.79&lt;br /&gt;
|3.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.30&lt;br /&gt;
|0.66&lt;br /&gt;
|2.63&lt;br /&gt;
|9.18&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.45&lt;br /&gt;
|0.96&lt;br /&gt;
|3.39&lt;br /&gt;
|11.62&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.34&lt;br /&gt;
|1.35&lt;br /&gt;
|5.10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xavier NX&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX having '''384''' CUDA Cores.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.29 &lt;br /&gt;
|0.61&lt;br /&gt;
|2.04&lt;br /&gt;
|8.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.27&lt;br /&gt;
|0.61&lt;br /&gt;
|2.31&lt;br /&gt;
|9.02&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|1.87&lt;br /&gt;
|2.3&lt;br /&gt;
|9.17&lt;br /&gt;
|36.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|2.33&lt;br /&gt;
|4.96&lt;br /&gt;
|19.07&lt;br /&gt;
|77.75&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.22&lt;br /&gt;
|0.48&lt;br /&gt;
|1.89&lt;br /&gt;
|7.47&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.68&lt;br /&gt;
|0.92&lt;br /&gt;
|3.24&lt;br /&gt;
|9.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.10&lt;br /&gt;
|0.30&lt;br /&gt;
|0.86&lt;br /&gt;
|3.28&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.36&lt;br /&gt;
|0.68&lt;br /&gt;
|1.86&lt;br /&gt;
|7.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.25&lt;br /&gt;
|0.96&lt;br /&gt;
|3.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|142.56&lt;br /&gt;
|285.95&lt;br /&gt;
|1103.14&lt;br /&gt;
|4399.84&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.38&lt;br /&gt;
|0.77&lt;br /&gt;
|3.12&lt;br /&gt;
|12.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.13&lt;br /&gt;
|0.48&lt;br /&gt;
|2.05&lt;br /&gt;
|6.05&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.85&lt;br /&gt;
|1.90&lt;br /&gt;
|7.57&lt;br /&gt;
|30.32 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.23&lt;br /&gt;
|0.49&lt;br /&gt;
|1.90&lt;br /&gt;
|7.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.68&lt;br /&gt;
|2.26&lt;br /&gt;
|9.38&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|2.97&lt;br /&gt;
|7.89&lt;br /&gt;
|23.76&lt;br /&gt;
|108.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|1.57&lt;br /&gt;
|3.49&lt;br /&gt;
|13.6&lt;br /&gt;
|47.39&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|1.07&lt;br /&gt;
|2.39&lt;br /&gt;
|6.47&lt;br /&gt;
|25.70&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;RTX 2060 (Mobile)&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 (Mobile) &lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.06 &lt;br /&gt;
|0.14 &lt;br /&gt;
|0.51 &lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.07&lt;br /&gt;
|0.14&lt;br /&gt;
|0.55&lt;br /&gt;
|2.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.53&lt;br /&gt;
|2.10&lt;br /&gt;
|8.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.52&lt;br /&gt;
|1.22&lt;br /&gt;
|4.53&lt;br /&gt;
|18.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.28&lt;br /&gt;
|1.02&lt;br /&gt;
|4.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.21&lt;br /&gt;
|0.24&lt;br /&gt;
|0.84&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.08&lt;br /&gt;
|0.29&lt;br /&gt;
|1.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.069&lt;br /&gt;
|0.16&lt;br /&gt;
|0.61&lt;br /&gt;
|2.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.34&lt;br /&gt;
|1.43&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|25.77&lt;br /&gt;
|55.86&lt;br /&gt;
|221.60&lt;br /&gt;
|605.53&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.01&lt;br /&gt;
|0.24&lt;br /&gt;
|0.95&lt;br /&gt;
|3.81&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.12&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.25&lt;br /&gt;
|0.55&lt;br /&gt;
|2.21&lt;br /&gt;
|8.70 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.36&lt;br /&gt;
|1.11&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.20&lt;br /&gt;
|0.77&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.65&lt;br /&gt;
|1.56&lt;br /&gt;
|5.81&lt;br /&gt;
|13.7&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.53&lt;br /&gt;
|1.10&lt;br /&gt;
|4.00&lt;br /&gt;
|15.2&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.30&lt;br /&gt;
|1.21&lt;br /&gt;
|4.90&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Ends--&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Color Pipeline==&lt;br /&gt;
Let's take a typical color pipeline and measure its performance on one of the entry level GPUs. Any color pipeline almost always starts with the Raw image. Before converting to RGB, you might want to do some processing on the raw which may include applying LUTs (look up tables), FPN (fixed point noise) removal and fixing white balance. Next comes demosaic/debayer followed by several further enhancement functions and a color space conversion into the desired format. This pipeline can perform in real-time on a decent entry level GPU on an 8k images and at over 100 FPS on a 2k image:&lt;br /&gt;
[[File:color_pipeline.png|300px|thumb|left|Color pipeline where each box represents one or more functions.]]&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
*Image size: '''8k'''&lt;br /&gt;
*Debayer method: DFPD&lt;br /&gt;
*RAW Size: 59.9 MB&lt;br /&gt;
*Codec: JPEG2000&lt;br /&gt;
*Sharpening: 7x7&lt;br /&gt;
*GPU: GTX 1080&lt;br /&gt;
*FPS: '''26 FPS'''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1741</id>
		<title>Performance &amp; Benchmark</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1741"/>
		<updated>2022-10-30T08:08:48Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Measured with NVIDIA's Performance tools for Windows and Linux. Timing figure represents time of kernel/function in milliseconds (rounded) on a single GPU. The benchmarks are performed on color images with 8-bits per channel except where mentioned otherwise. The list below is a small subset of [[CUVI_Features|100+ features]] in CUVI.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:85%;&amp;quot;|&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Jetson Nano&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano having '''128''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|2.99&lt;br /&gt;
|8.38&lt;br /&gt;
|15.63&lt;br /&gt;
|50.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|4.09&lt;br /&gt;
|7.42&lt;br /&gt;
|15.70&lt;br /&gt;
|53.35&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|8.11&lt;br /&gt;
|11.77&lt;br /&gt;
|42.99&lt;br /&gt;
|172.40&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|12.6&lt;br /&gt;
|23.86&lt;br /&gt;
|88.87&lt;br /&gt;
|357.94&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|3.12&lt;br /&gt;
|5.69&lt;br /&gt;
|14.13&lt;br /&gt;
|45.80&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|5.29&lt;br /&gt;
|7.88&lt;br /&gt;
|20.53&lt;br /&gt;
|61.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|1.89&lt;br /&gt;
|2.77&lt;br /&gt;
|11.26&lt;br /&gt;
|25.42&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|4.08&lt;br /&gt;
|7.52&lt;br /&gt;
|18.36&lt;br /&gt;
|62.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|1.95&lt;br /&gt;
|2.67&lt;br /&gt;
|10.64&lt;br /&gt;
|20.89&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|252.52&lt;br /&gt;
|452.81&lt;br /&gt;
|1830.54&lt;br /&gt;
|7320.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|3.74&lt;br /&gt;
|8.46&lt;br /&gt;
|15.71&lt;br /&gt;
|63.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|1.67&lt;br /&gt;
|4.76&lt;br /&gt;
|9.04&lt;br /&gt;
|28.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|9.29&lt;br /&gt;
|18.43&lt;br /&gt;
|55.58&lt;br /&gt;
|222.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|3.43&lt;br /&gt;
|7.73&lt;br /&gt;
|26.00&lt;br /&gt;
|58.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|5.09&lt;br /&gt;
|11.48&lt;br /&gt;
|19.86&lt;br /&gt;
|81.36&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|18.44&lt;br /&gt;
|26.80&lt;br /&gt;
|89.58&lt;br /&gt;
|358.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|29.55&lt;br /&gt;
|50.74&lt;br /&gt;
|79.09&lt;br /&gt;
|332.95&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|10.27&lt;br /&gt;
|18.60&lt;br /&gt;
|40.45&lt;br /&gt;
|130.86&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1080&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080 having '''2,560''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.42&lt;br /&gt;
|1.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.08&lt;br /&gt;
|0.34&lt;br /&gt;
|1.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.26&lt;br /&gt;
|1.01&lt;br /&gt;
|4.04&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.31&lt;br /&gt;
|0.69&lt;br /&gt;
|2.77&lt;br /&gt;
|10.98&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.10&lt;br /&gt;
|0.40&lt;br /&gt;
|1.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.18 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.35&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.99&lt;br /&gt;
|0.21&lt;br /&gt;
|0.74&lt;br /&gt;
|2.73&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.21&lt;br /&gt;
|0.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|8.66&lt;br /&gt;
|14.44&lt;br /&gt;
|65.14&lt;br /&gt;
|270.59&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.06&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|2.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.07&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.19&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|6.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.08&lt;br /&gt;
|0.16&lt;br /&gt;
|0.66&lt;br /&gt;
|2.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.22&lt;br /&gt;
|0.79&lt;br /&gt;
|3.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.30&lt;br /&gt;
|0.66&lt;br /&gt;
|2.63&lt;br /&gt;
|9.18&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.45&lt;br /&gt;
|0.96&lt;br /&gt;
|3.39&lt;br /&gt;
|11.62&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.34&lt;br /&gt;
|1.35&lt;br /&gt;
|5.10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xavier NX&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.29 &lt;br /&gt;
|0.61&lt;br /&gt;
|2.04&lt;br /&gt;
|8.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.27&lt;br /&gt;
|0.61&lt;br /&gt;
|2.31&lt;br /&gt;
|9.02&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|1.87&lt;br /&gt;
|2.3&lt;br /&gt;
|9.17&lt;br /&gt;
|36.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|2.33&lt;br /&gt;
|4.96&lt;br /&gt;
|19.07&lt;br /&gt;
|77.75&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.22&lt;br /&gt;
|0.48&lt;br /&gt;
|1.89&lt;br /&gt;
|7.47&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.68&lt;br /&gt;
|0.92&lt;br /&gt;
|3.24&lt;br /&gt;
|9.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.10&lt;br /&gt;
|0.30&lt;br /&gt;
|0.86&lt;br /&gt;
|3.28&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.36&lt;br /&gt;
|0.68&lt;br /&gt;
|1.86&lt;br /&gt;
|7.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.25&lt;br /&gt;
|0.96&lt;br /&gt;
|3.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|142.56&lt;br /&gt;
|285.95&lt;br /&gt;
|1103.14&lt;br /&gt;
|4399.84&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.38&lt;br /&gt;
|0.77&lt;br /&gt;
|3.12&lt;br /&gt;
|12.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.13&lt;br /&gt;
|0.48&lt;br /&gt;
|2.05&lt;br /&gt;
|6.05&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.85&lt;br /&gt;
|1.90&lt;br /&gt;
|7.57&lt;br /&gt;
|30.32 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.23&lt;br /&gt;
|0.49&lt;br /&gt;
|1.90&lt;br /&gt;
|7.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.68&lt;br /&gt;
|2.26&lt;br /&gt;
|9.38&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|2.97&lt;br /&gt;
|7.89&lt;br /&gt;
|23.76&lt;br /&gt;
|108.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|1.57&lt;br /&gt;
|3.49&lt;br /&gt;
|13.6&lt;br /&gt;
|47.39&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|1.07&lt;br /&gt;
|2.39&lt;br /&gt;
|6.47&lt;br /&gt;
|25.70&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;RTX 2060 (Mobile)&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 (Mobile) &lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.06 &lt;br /&gt;
|0.14 &lt;br /&gt;
|0.51 &lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.07&lt;br /&gt;
|0.14&lt;br /&gt;
|0.55&lt;br /&gt;
|2.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.53&lt;br /&gt;
|2.10&lt;br /&gt;
|8.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.52&lt;br /&gt;
|1.22&lt;br /&gt;
|4.53&lt;br /&gt;
|18.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.28&lt;br /&gt;
|1.02&lt;br /&gt;
|4.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.21&lt;br /&gt;
|0.24&lt;br /&gt;
|0.84&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.08&lt;br /&gt;
|0.29&lt;br /&gt;
|1.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.069&lt;br /&gt;
|0.16&lt;br /&gt;
|0.61&lt;br /&gt;
|2.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.34&lt;br /&gt;
|1.43&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|25.77&lt;br /&gt;
|55.86&lt;br /&gt;
|221.60&lt;br /&gt;
|605.53&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.01&lt;br /&gt;
|0.24&lt;br /&gt;
|0.95&lt;br /&gt;
|3.81&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.12&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.25&lt;br /&gt;
|0.55&lt;br /&gt;
|2.21&lt;br /&gt;
|8.70 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.36&lt;br /&gt;
|1.11&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.20&lt;br /&gt;
|0.77&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.65&lt;br /&gt;
|1.56&lt;br /&gt;
|5.81&lt;br /&gt;
|13.7&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.53&lt;br /&gt;
|1.10&lt;br /&gt;
|4.00&lt;br /&gt;
|15.2&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.30&lt;br /&gt;
|1.21&lt;br /&gt;
|4.90&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Ends--&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Color Pipeline==&lt;br /&gt;
Let's take a typical color pipeline and measure its performance on one of the entry level GPUs. Any color pipeline almost always starts with the Raw image. Before converting to RGB, you might want to do some processing on the raw which may include applying LUTs (look up tables), FPN (fixed point noise) removal and fixing white balance. Next comes demosaic/debayer followed by several further enhancement functions and a color space conversion into the desired format. This pipeline can perform in real-time on a decent entry level GPU on an 8k images and at over 100 FPS on a 2k image:&lt;br /&gt;
[[File:color_pipeline.png|300px|thumb|left|Color pipeline where each box represents one or more functions.]]&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
*Image size: '''8k'''&lt;br /&gt;
*Debayer method: DFPD&lt;br /&gt;
*RAW Size: 59.9 MB&lt;br /&gt;
*Codec: JPEG2000&lt;br /&gt;
*Sharpening: 7x7&lt;br /&gt;
*GPU: GTX 1080&lt;br /&gt;
*FPS: '''26 FPS'''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1740</id>
		<title>Performance &amp; Benchmark</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1740"/>
		<updated>2022-10-30T08:07:33Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Measured with NVIDIA's Performance tools for Windows and Linux. Timing figure represents time of kernel/function in milliseconds (rounded) on a single GPU. The benchmarks are performed on color images with 8-bits per channel except where mentioned otherwise. The list below is a small subset of [[CUVI_Features|100+ features]] in CUVI.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:85%;&amp;quot;|&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Jetson Nano&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&amp;lt;!--|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano having '''128''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|2.99&lt;br /&gt;
|8.38&lt;br /&gt;
|15.63&lt;br /&gt;
|50.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|4.09&lt;br /&gt;
|7.42&lt;br /&gt;
|15.70&lt;br /&gt;
|53.35&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|8.11&lt;br /&gt;
|11.77&lt;br /&gt;
|42.99&lt;br /&gt;
|172.40&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|12.6&lt;br /&gt;
|23.86&lt;br /&gt;
|88.87&lt;br /&gt;
|357.94&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|3.12&lt;br /&gt;
|5.69&lt;br /&gt;
|14.13&lt;br /&gt;
|45.80&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|5.29&lt;br /&gt;
|7.88&lt;br /&gt;
|20.53&lt;br /&gt;
|61.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|1.89&lt;br /&gt;
|2.77&lt;br /&gt;
|11.26&lt;br /&gt;
|25.42&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|4.08&lt;br /&gt;
|7.52&lt;br /&gt;
|18.36&lt;br /&gt;
|62.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|1.95&lt;br /&gt;
|2.67&lt;br /&gt;
|10.64&lt;br /&gt;
|20.89&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|252.52&lt;br /&gt;
|452.81&lt;br /&gt;
|1830.54&lt;br /&gt;
|7320.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|3.74&lt;br /&gt;
|8.46&lt;br /&gt;
|15.71&lt;br /&gt;
|63.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|1.67&lt;br /&gt;
|4.76&lt;br /&gt;
|9.04&lt;br /&gt;
|28.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|9.29&lt;br /&gt;
|18.43&lt;br /&gt;
|55.58&lt;br /&gt;
|222.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|3.43&lt;br /&gt;
|7.73&lt;br /&gt;
|26.00&lt;br /&gt;
|58.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|5.09&lt;br /&gt;
|11.48&lt;br /&gt;
|19.86&lt;br /&gt;
|81.36&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|18.44&lt;br /&gt;
|26.80&lt;br /&gt;
|89.58&lt;br /&gt;
|358.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|29.55&lt;br /&gt;
|50.74&lt;br /&gt;
|79.09&lt;br /&gt;
|332.95&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|10.27&lt;br /&gt;
|18.60&lt;br /&gt;
|40.45&lt;br /&gt;
|130.86&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1080&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.42&lt;br /&gt;
|1.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.08&lt;br /&gt;
|0.34&lt;br /&gt;
|1.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.26&lt;br /&gt;
|1.01&lt;br /&gt;
|4.04&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.31&lt;br /&gt;
|0.69&lt;br /&gt;
|2.77&lt;br /&gt;
|10.98&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.10&lt;br /&gt;
|0.40&lt;br /&gt;
|1.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.18 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.35&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.99&lt;br /&gt;
|0.21&lt;br /&gt;
|0.74&lt;br /&gt;
|2.73&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.21&lt;br /&gt;
|0.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|8.66&lt;br /&gt;
|14.44&lt;br /&gt;
|65.14&lt;br /&gt;
|270.59&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.06&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|2.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.07&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.19&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|6.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.08&lt;br /&gt;
|0.16&lt;br /&gt;
|0.66&lt;br /&gt;
|2.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.22&lt;br /&gt;
|0.79&lt;br /&gt;
|3.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.30&lt;br /&gt;
|0.66&lt;br /&gt;
|2.63&lt;br /&gt;
|9.18&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.45&lt;br /&gt;
|0.96&lt;br /&gt;
|3.39&lt;br /&gt;
|11.62&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.34&lt;br /&gt;
|1.35&lt;br /&gt;
|5.10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xavier NX&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.29 &lt;br /&gt;
|0.61&lt;br /&gt;
|2.04&lt;br /&gt;
|8.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.27&lt;br /&gt;
|0.61&lt;br /&gt;
|2.31&lt;br /&gt;
|9.02&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|1.87&lt;br /&gt;
|2.3&lt;br /&gt;
|9.17&lt;br /&gt;
|36.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|2.33&lt;br /&gt;
|4.96&lt;br /&gt;
|19.07&lt;br /&gt;
|77.75&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.22&lt;br /&gt;
|0.48&lt;br /&gt;
|1.89&lt;br /&gt;
|7.47&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.68&lt;br /&gt;
|0.92&lt;br /&gt;
|3.24&lt;br /&gt;
|9.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.10&lt;br /&gt;
|0.30&lt;br /&gt;
|0.86&lt;br /&gt;
|3.28&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.36&lt;br /&gt;
|0.68&lt;br /&gt;
|1.86&lt;br /&gt;
|7.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.25&lt;br /&gt;
|0.96&lt;br /&gt;
|3.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|142.56&lt;br /&gt;
|285.95&lt;br /&gt;
|1103.14&lt;br /&gt;
|4399.84&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.38&lt;br /&gt;
|0.77&lt;br /&gt;
|3.12&lt;br /&gt;
|12.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.13&lt;br /&gt;
|0.48&lt;br /&gt;
|2.05&lt;br /&gt;
|6.05&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.85&lt;br /&gt;
|1.90&lt;br /&gt;
|7.57&lt;br /&gt;
|30.32 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.23&lt;br /&gt;
|0.49&lt;br /&gt;
|1.90&lt;br /&gt;
|7.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.68&lt;br /&gt;
|2.26&lt;br /&gt;
|9.38&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|2.97&lt;br /&gt;
|7.89&lt;br /&gt;
|23.76&lt;br /&gt;
|108.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|1.57&lt;br /&gt;
|3.49&lt;br /&gt;
|13.6&lt;br /&gt;
|47.39&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|1.07&lt;br /&gt;
|2.39&lt;br /&gt;
|6.47&lt;br /&gt;
|25.70&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;RTX 2060 (Mobile)&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 (Mobile) &lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.06 &lt;br /&gt;
|0.14 &lt;br /&gt;
|0.51 &lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.07&lt;br /&gt;
|0.14&lt;br /&gt;
|0.55&lt;br /&gt;
|2.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.53&lt;br /&gt;
|2.10&lt;br /&gt;
|8.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.52&lt;br /&gt;
|1.22&lt;br /&gt;
|4.53&lt;br /&gt;
|18.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.28&lt;br /&gt;
|1.02&lt;br /&gt;
|4.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.21&lt;br /&gt;
|0.24&lt;br /&gt;
|0.84&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.08&lt;br /&gt;
|0.29&lt;br /&gt;
|1.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.069&lt;br /&gt;
|0.16&lt;br /&gt;
|0.61&lt;br /&gt;
|2.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.34&lt;br /&gt;
|1.43&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|25.77&lt;br /&gt;
|55.86&lt;br /&gt;
|221.60&lt;br /&gt;
|605.53&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.01&lt;br /&gt;
|0.24&lt;br /&gt;
|0.95&lt;br /&gt;
|3.81&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.12&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.25&lt;br /&gt;
|0.55&lt;br /&gt;
|2.21&lt;br /&gt;
|8.70 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.36&lt;br /&gt;
|1.11&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.20&lt;br /&gt;
|0.77&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.65&lt;br /&gt;
|1.56&lt;br /&gt;
|5.81&lt;br /&gt;
|13.7&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.53&lt;br /&gt;
|1.10&lt;br /&gt;
|4.00&lt;br /&gt;
|15.2&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.30&lt;br /&gt;
|1.21&lt;br /&gt;
|4.90&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Ends--&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Color Pipeline==&lt;br /&gt;
Let's take a typical color pipeline and measure its performance on one of the entry level GPUs. Any color pipeline almost always starts with the Raw image. Before converting to RGB, you might want to do some processing on the raw which may include applying LUTs (look up tables), FPN (fixed point noise) removal and fixing white balance. Next comes demosaic/debayer followed by several further enhancement functions and a color space conversion into the desired format. This pipeline can perform in real-time on a decent entry level GPU on an 8k images and at over 100 FPS on a 2k image:&lt;br /&gt;
[[File:color_pipeline.png|300px|thumb|left|Color pipeline where each box represents one or more functions.]]&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
*Image size: '''8k'''&lt;br /&gt;
*Debayer method: DFPD&lt;br /&gt;
*RAW Size: 59.9 MB&lt;br /&gt;
*Codec: JPEG2000&lt;br /&gt;
*Sharpening: 7x7&lt;br /&gt;
*GPU: GTX 1080&lt;br /&gt;
*FPS: '''26 FPS'''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1739</id>
		<title>Performance &amp; Benchmark</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1739"/>
		<updated>2022-10-30T08:06:46Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Measured with NVIDIA's Performance tools for Windows and Linux. Timing figure represents time of kernel/function in milliseconds (rounded) on a single GPU. The benchmarks are performed on color images with 8-bits per channel except where mentioned otherwise. The list below is a small subset of [[CUVI_Features|100+ features]] in CUVI.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:85%;&amp;quot;|&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Jetson Nano&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano having '''128''' CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|2.99&lt;br /&gt;
|8.38&lt;br /&gt;
|15.63&lt;br /&gt;
|50.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|4.09&lt;br /&gt;
|7.42&lt;br /&gt;
|15.70&lt;br /&gt;
|53.35&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|8.11&lt;br /&gt;
|11.77&lt;br /&gt;
|42.99&lt;br /&gt;
|172.40&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|12.6&lt;br /&gt;
|23.86&lt;br /&gt;
|88.87&lt;br /&gt;
|357.94&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|3.12&lt;br /&gt;
|5.69&lt;br /&gt;
|14.13&lt;br /&gt;
|45.80&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|5.29&lt;br /&gt;
|7.88&lt;br /&gt;
|20.53&lt;br /&gt;
|61.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|1.89&lt;br /&gt;
|2.77&lt;br /&gt;
|11.26&lt;br /&gt;
|25.42&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|4.08&lt;br /&gt;
|7.52&lt;br /&gt;
|18.36&lt;br /&gt;
|62.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|1.95&lt;br /&gt;
|2.67&lt;br /&gt;
|10.64&lt;br /&gt;
|20.89&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|252.52&lt;br /&gt;
|452.81&lt;br /&gt;
|1830.54&lt;br /&gt;
|7320.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|3.74&lt;br /&gt;
|8.46&lt;br /&gt;
|15.71&lt;br /&gt;
|63.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|1.67&lt;br /&gt;
|4.76&lt;br /&gt;
|9.04&lt;br /&gt;
|28.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|9.29&lt;br /&gt;
|18.43&lt;br /&gt;
|55.58&lt;br /&gt;
|222.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|3.43&lt;br /&gt;
|7.73&lt;br /&gt;
|26.00&lt;br /&gt;
|58.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|5.09&lt;br /&gt;
|11.48&lt;br /&gt;
|19.86&lt;br /&gt;
|81.36&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|18.44&lt;br /&gt;
|26.80&lt;br /&gt;
|89.58&lt;br /&gt;
|358.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|29.55&lt;br /&gt;
|50.74&lt;br /&gt;
|79.09&lt;br /&gt;
|332.95&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|10.27&lt;br /&gt;
|18.60&lt;br /&gt;
|40.45&lt;br /&gt;
|130.86&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1080&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.42&lt;br /&gt;
|1.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.08&lt;br /&gt;
|0.34&lt;br /&gt;
|1.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.26&lt;br /&gt;
|1.01&lt;br /&gt;
|4.04&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.31&lt;br /&gt;
|0.69&lt;br /&gt;
|2.77&lt;br /&gt;
|10.98&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.10&lt;br /&gt;
|0.40&lt;br /&gt;
|1.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.18 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.35&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.99&lt;br /&gt;
|0.21&lt;br /&gt;
|0.74&lt;br /&gt;
|2.73&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.21&lt;br /&gt;
|0.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|8.66&lt;br /&gt;
|14.44&lt;br /&gt;
|65.14&lt;br /&gt;
|270.59&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.06&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|2.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.07&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.19&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|6.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.08&lt;br /&gt;
|0.16&lt;br /&gt;
|0.66&lt;br /&gt;
|2.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.22&lt;br /&gt;
|0.79&lt;br /&gt;
|3.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.30&lt;br /&gt;
|0.66&lt;br /&gt;
|2.63&lt;br /&gt;
|9.18&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.45&lt;br /&gt;
|0.96&lt;br /&gt;
|3.39&lt;br /&gt;
|11.62&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.34&lt;br /&gt;
|1.35&lt;br /&gt;
|5.10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xavier NX&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.29 &lt;br /&gt;
|0.61&lt;br /&gt;
|2.04&lt;br /&gt;
|8.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.27&lt;br /&gt;
|0.61&lt;br /&gt;
|2.31&lt;br /&gt;
|9.02&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|1.87&lt;br /&gt;
|2.3&lt;br /&gt;
|9.17&lt;br /&gt;
|36.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|2.33&lt;br /&gt;
|4.96&lt;br /&gt;
|19.07&lt;br /&gt;
|77.75&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.22&lt;br /&gt;
|0.48&lt;br /&gt;
|1.89&lt;br /&gt;
|7.47&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.68&lt;br /&gt;
|0.92&lt;br /&gt;
|3.24&lt;br /&gt;
|9.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.10&lt;br /&gt;
|0.30&lt;br /&gt;
|0.86&lt;br /&gt;
|3.28&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.36&lt;br /&gt;
|0.68&lt;br /&gt;
|1.86&lt;br /&gt;
|7.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.25&lt;br /&gt;
|0.96&lt;br /&gt;
|3.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|142.56&lt;br /&gt;
|285.95&lt;br /&gt;
|1103.14&lt;br /&gt;
|4399.84&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.38&lt;br /&gt;
|0.77&lt;br /&gt;
|3.12&lt;br /&gt;
|12.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.13&lt;br /&gt;
|0.48&lt;br /&gt;
|2.05&lt;br /&gt;
|6.05&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.85&lt;br /&gt;
|1.90&lt;br /&gt;
|7.57&lt;br /&gt;
|30.32 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.23&lt;br /&gt;
|0.49&lt;br /&gt;
|1.90&lt;br /&gt;
|7.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.68&lt;br /&gt;
|2.26&lt;br /&gt;
|9.38&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|2.97&lt;br /&gt;
|7.89&lt;br /&gt;
|23.76&lt;br /&gt;
|108.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|1.57&lt;br /&gt;
|3.49&lt;br /&gt;
|13.6&lt;br /&gt;
|47.39&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|1.07&lt;br /&gt;
|2.39&lt;br /&gt;
|6.47&lt;br /&gt;
|25.70&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;RTX 2060 (Mobile)&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 (Mobile) &lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.06 &lt;br /&gt;
|0.14 &lt;br /&gt;
|0.51 &lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.07&lt;br /&gt;
|0.14&lt;br /&gt;
|0.55&lt;br /&gt;
|2.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.53&lt;br /&gt;
|2.10&lt;br /&gt;
|8.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.52&lt;br /&gt;
|1.22&lt;br /&gt;
|4.53&lt;br /&gt;
|18.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.28&lt;br /&gt;
|1.02&lt;br /&gt;
|4.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.21&lt;br /&gt;
|0.24&lt;br /&gt;
|0.84&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.08&lt;br /&gt;
|0.29&lt;br /&gt;
|1.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.069&lt;br /&gt;
|0.16&lt;br /&gt;
|0.61&lt;br /&gt;
|2.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.34&lt;br /&gt;
|1.43&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|25.77&lt;br /&gt;
|55.86&lt;br /&gt;
|221.60&lt;br /&gt;
|605.53&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.01&lt;br /&gt;
|0.24&lt;br /&gt;
|0.95&lt;br /&gt;
|3.81&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.12&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.25&lt;br /&gt;
|0.55&lt;br /&gt;
|2.21&lt;br /&gt;
|8.70 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.36&lt;br /&gt;
|1.11&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.20&lt;br /&gt;
|0.77&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.65&lt;br /&gt;
|1.56&lt;br /&gt;
|5.81&lt;br /&gt;
|13.7&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.53&lt;br /&gt;
|1.10&lt;br /&gt;
|4.00&lt;br /&gt;
|15.2&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.30&lt;br /&gt;
|1.21&lt;br /&gt;
|4.90&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Ends--&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Color Pipeline==&lt;br /&gt;
Let's take a typical color pipeline and measure its performance on one of the entry level GPUs. Any color pipeline almost always starts with the Raw image. Before converting to RGB, you might want to do some processing on the raw which may include applying LUTs (look up tables), FPN (fixed point noise) removal and fixing white balance. Next comes demosaic/debayer followed by several further enhancement functions and a color space conversion into the desired format. This pipeline can perform in real-time on a decent entry level GPU on an 8k images and at over 100 FPS on a 2k image:&lt;br /&gt;
[[File:color_pipeline.png|300px|thumb|left|Color pipeline where each box represents one or more functions.]]&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
*Image size: '''8k'''&lt;br /&gt;
*Debayer method: DFPD&lt;br /&gt;
*RAW Size: 59.9 MB&lt;br /&gt;
*Codec: JPEG2000&lt;br /&gt;
*Sharpening: 7x7&lt;br /&gt;
*GPU: GTX 1080&lt;br /&gt;
*FPS: '''26 FPS'''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
	<entry>
		<id>https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1738</id>
		<title>Performance &amp; Benchmark</title>
		<link rel="alternate" type="text/html" href="https://wiki.cuvilib.com/index.php?title=Performance_%26_Benchmark&amp;diff=1738"/>
		<updated>2022-10-30T08:06:33Z</updated>

		<summary type="html">&lt;p&gt;Jawad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Measured with NVIDIA's Performance tools for Windows and Linux. Timing figure represents time of kernel/function in milliseconds (rounded) on a single GPU. The benchmarks are performed on color images with 8-bits per channel except where mentioned otherwise. The list below is a small subset of [[CUVI_Features|100+ features]] in CUVI.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;font-size:85%;&amp;quot;|&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Jetson Nano&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot; |Kernel Time in milliseconds (ms) with CUVI v1.7.0 on Jetson Nano having 128 CUDA Cores.&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|2.99&lt;br /&gt;
|8.38&lt;br /&gt;
|15.63&lt;br /&gt;
|50.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|4.09&lt;br /&gt;
|7.42&lt;br /&gt;
|15.70&lt;br /&gt;
|53.35&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|8.11&lt;br /&gt;
|11.77&lt;br /&gt;
|42.99&lt;br /&gt;
|172.40&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|12.6&lt;br /&gt;
|23.86&lt;br /&gt;
|88.87&lt;br /&gt;
|357.94&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|3.12&lt;br /&gt;
|5.69&lt;br /&gt;
|14.13&lt;br /&gt;
|45.80&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|5.29&lt;br /&gt;
|7.88&lt;br /&gt;
|20.53&lt;br /&gt;
|61.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|1.89&lt;br /&gt;
|2.77&lt;br /&gt;
|11.26&lt;br /&gt;
|25.42&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|4.08&lt;br /&gt;
|7.52&lt;br /&gt;
|18.36&lt;br /&gt;
|62.27&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|1.95&lt;br /&gt;
|2.67&lt;br /&gt;
|10.64&lt;br /&gt;
|20.89&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|252.52&lt;br /&gt;
|452.81&lt;br /&gt;
|1830.54&lt;br /&gt;
|7320.52&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|3.74&lt;br /&gt;
|8.46&lt;br /&gt;
|15.71&lt;br /&gt;
|63.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|1.67&lt;br /&gt;
|4.76&lt;br /&gt;
|9.04&lt;br /&gt;
|28.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|9.29&lt;br /&gt;
|18.43&lt;br /&gt;
|55.58&lt;br /&gt;
|222.41&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|3.43&lt;br /&gt;
|7.73&lt;br /&gt;
|26.00&lt;br /&gt;
|58.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|5.09&lt;br /&gt;
|11.48&lt;br /&gt;
|19.86&lt;br /&gt;
|81.36&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|18.44&lt;br /&gt;
|26.80&lt;br /&gt;
|89.58&lt;br /&gt;
|358.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|29.55&lt;br /&gt;
|50.74&lt;br /&gt;
|79.09&lt;br /&gt;
|332.95&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|10.27&lt;br /&gt;
|18.60&lt;br /&gt;
|40.45&lt;br /&gt;
|130.86&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Jetson Nano Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;GTX 1080&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on GTX 1080&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.42&lt;br /&gt;
|1.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.08&lt;br /&gt;
|0.34&lt;br /&gt;
|1.33&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.26&lt;br /&gt;
|1.01&lt;br /&gt;
|4.04&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.31&lt;br /&gt;
|0.69&lt;br /&gt;
|2.77&lt;br /&gt;
|10.98&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.10&lt;br /&gt;
|0.40&lt;br /&gt;
|1.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.08&lt;br /&gt;
|0.18&lt;br /&gt;
|0.61&lt;br /&gt;
|2.18 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.05&lt;br /&gt;
|0.10&lt;br /&gt;
|0.35&lt;br /&gt;
|1.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.99&lt;br /&gt;
|0.21&lt;br /&gt;
|0.74&lt;br /&gt;
|2.73&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.02&lt;br /&gt;
|0.05&lt;br /&gt;
|0.21&lt;br /&gt;
|0.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|8.66&lt;br /&gt;
|14.44&lt;br /&gt;
|65.14&lt;br /&gt;
|270.59&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.06&lt;br /&gt;
|0.14&lt;br /&gt;
|0.58&lt;br /&gt;
|2.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.07&lt;br /&gt;
|0.23&lt;br /&gt;
|0.93&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.19&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|6.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.08&lt;br /&gt;
|0.16&lt;br /&gt;
|0.66&lt;br /&gt;
|2.69&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.22&lt;br /&gt;
|0.79&lt;br /&gt;
|3.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.30&lt;br /&gt;
|0.66&lt;br /&gt;
|2.63&lt;br /&gt;
|9.18&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.45&lt;br /&gt;
|0.96&lt;br /&gt;
|3.39&lt;br /&gt;
|11.62&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.34&lt;br /&gt;
|1.35&lt;br /&gt;
|5.10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- GTX 1080 Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xavier NX&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on Jetson Xavier NX&lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.29 &lt;br /&gt;
|0.61&lt;br /&gt;
|2.04&lt;br /&gt;
|8.61&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.27&lt;br /&gt;
|0.61&lt;br /&gt;
|2.31&lt;br /&gt;
|9.02&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|1.87&lt;br /&gt;
|2.3&lt;br /&gt;
|9.17&lt;br /&gt;
|36.74&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|2.33&lt;br /&gt;
|4.96&lt;br /&gt;
|19.07&lt;br /&gt;
|77.75&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.22&lt;br /&gt;
|0.48&lt;br /&gt;
|1.89&lt;br /&gt;
|7.47&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.68&lt;br /&gt;
|0.92&lt;br /&gt;
|3.24&lt;br /&gt;
|9.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.10&lt;br /&gt;
|0.30&lt;br /&gt;
|0.86&lt;br /&gt;
|3.28&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.36&lt;br /&gt;
|0.68&lt;br /&gt;
|1.86&lt;br /&gt;
|7.29&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.25&lt;br /&gt;
|0.96&lt;br /&gt;
|3.83&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|142.56&lt;br /&gt;
|285.95&lt;br /&gt;
|1103.14&lt;br /&gt;
|4399.84&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.38&lt;br /&gt;
|0.77&lt;br /&gt;
|3.12&lt;br /&gt;
|12.34&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.13&lt;br /&gt;
|0.48&lt;br /&gt;
|2.05&lt;br /&gt;
|6.05&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.85&lt;br /&gt;
|1.90&lt;br /&gt;
|7.57&lt;br /&gt;
|30.32 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.23&lt;br /&gt;
|0.49&lt;br /&gt;
|1.90&lt;br /&gt;
|7.64&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.68&lt;br /&gt;
|2.26&lt;br /&gt;
|9.38&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|2.97&lt;br /&gt;
|7.89&lt;br /&gt;
|23.76&lt;br /&gt;
|108.21&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|1.57&lt;br /&gt;
|3.49&lt;br /&gt;
|13.6&lt;br /&gt;
|47.39&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|1.07&lt;br /&gt;
|2.39&lt;br /&gt;
|6.47&lt;br /&gt;
|25.70&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- Xavier NX Ends--&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Starts --&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;RTX 2060 (Mobile)&amp;quot;&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;caption-side:bottom; color:#e76700;&amp;quot;|''Kernel Time in milliseconds (ms) with CUVI v1.8.0 on RTX 2060 (Mobile) &lt;br /&gt;
|-&lt;br /&gt;
! Algorithm / Image Size&lt;br /&gt;
! 720p&lt;br /&gt;
! 1080p&lt;br /&gt;
! 4k (3840x2160)&lt;br /&gt;
! 8k (7680x4320)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Add|add]] - 2 Images&lt;br /&gt;
|0.06 &lt;br /&gt;
|0.14 &lt;br /&gt;
|0.51 &lt;br /&gt;
|2.01&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ChannelMix|channelMix]]&lt;br /&gt;
|0.07&lt;br /&gt;
|0.14&lt;br /&gt;
|0.55&lt;br /&gt;
|2.25&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Demosaic|demosaic]]&lt;br /&gt;
|0.24&lt;br /&gt;
|0.53&lt;br /&gt;
|2.10&lt;br /&gt;
|8.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:DemosaicDFPD|demosaicDFPD]]&lt;br /&gt;
|0.52&lt;br /&gt;
|1.22&lt;br /&gt;
|4.53&lt;br /&gt;
|18.1&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:GammaCorrect|gammaCorrect]]&lt;br /&gt;
|0.12&lt;br /&gt;
|0.28&lt;br /&gt;
|1.02&lt;br /&gt;
|4.30&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:HistEq|histEq]] - Single Channel&lt;br /&gt;
|0.21&lt;br /&gt;
|0.24&lt;br /&gt;
|0.84&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:LUT|LUT]]&lt;br /&gt;
|0.03&lt;br /&gt;
|0.08&lt;br /&gt;
|0.29&lt;br /&gt;
|1.20&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:blackGammaLUT|blackGammaLUT]] &lt;br /&gt;
|0.069&lt;br /&gt;
|0.16&lt;br /&gt;
|0.61&lt;br /&gt;
|2.50&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:RGB2Gray|rgb2gray]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.34&lt;br /&gt;
|1.43&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:FocusStack|focusStack]] - Stacking 5 Images&lt;br /&gt;
|25.77&lt;br /&gt;
|55.86&lt;br /&gt;
|221.60&lt;br /&gt;
|605.53&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:BitConversion|bitConversion]] - From 8 to 16 bits&lt;br /&gt;
|0.01&lt;br /&gt;
|0.24&lt;br /&gt;
|0.95&lt;br /&gt;
|3.81&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Crop|crop]]&lt;br /&gt;
|0.04&lt;br /&gt;
|0.12&lt;br /&gt;
|0.41&lt;br /&gt;
|1.70&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Resize|resize]] - Scale=2.0&lt;br /&gt;
|0.25&lt;br /&gt;
|0.55&lt;br /&gt;
|2.21&lt;br /&gt;
|8.70 &lt;br /&gt;
|-&lt;br /&gt;
|[[Function:Rotate|rotate]] - Non Cropping, Angle = -3.76f&lt;br /&gt;
|0.04&lt;br /&gt;
|0.09&lt;br /&gt;
|0.36&lt;br /&gt;
|1.11&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:WarpPerspective|warpPerspective]]&lt;br /&gt;
|0.08&lt;br /&gt;
|0.20&lt;br /&gt;
|0.77&lt;br /&gt;
|3.10&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:ImageFilter|imageFilter]] - 5x5 floating point window&lt;br /&gt;
|0.65&lt;br /&gt;
|1.56&lt;br /&gt;
|5.81&lt;br /&gt;
|13.7&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:UnderwaterFilter|underwaterFilter]]&lt;br /&gt;
|0.53&lt;br /&gt;
|1.10&lt;br /&gt;
|4.00&lt;br /&gt;
|15.2&lt;br /&gt;
|-&lt;br /&gt;
|[[Function:haarFwd|haarFwd]]&lt;br /&gt;
|0.14&lt;br /&gt;
|0.30&lt;br /&gt;
|1.21&lt;br /&gt;
|4.90&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;!-- RTX 2060 Mobile Ends--&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Color Pipeline==&lt;br /&gt;
Let's take a typical color pipeline and measure its performance on one of the entry level GPUs. Any color pipeline almost always starts with the Raw image. Before converting to RGB, you might want to do some processing on the raw which may include applying LUTs (look up tables), FPN (fixed point noise) removal and fixing white balance. Next comes demosaic/debayer followed by several further enhancement functions and a color space conversion into the desired format. This pipeline can perform in real-time on a decent entry level GPU on an 8k images and at over 100 FPS on a 2k image:&lt;br /&gt;
[[File:color_pipeline.png|300px|thumb|left|Color pipeline where each box represents one or more functions.]]&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
*Image size: '''8k'''&lt;br /&gt;
*Debayer method: DFPD&lt;br /&gt;
*RAW Size: 59.9 MB&lt;br /&gt;
*Codec: JPEG2000&lt;br /&gt;
*Sharpening: 7x7&lt;br /&gt;
*GPU: GTX 1080&lt;br /&gt;
*FPS: '''26 FPS'''&lt;/div&gt;</summary>
		<author><name>Jawad</name></author>
	</entry>
</feed>