Difference between revisions of "Function:HaarFwd"

From CUVI Wiki
 
(17 intermediate revisions by the same user not shown)
Line 3: Line 3:
===Function===
===Function===
{|
{|
|style="font-size:150%;"|
|style="font-size:100%;"|
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
CuviStatus haarFwd(CuviImage* srcImage,
CuviStatus haarFwd(const CuviImage& src,
                   CuviImage* dstApprox,
                   CuviImage& dstApprox,
                   CuviImage* dstDetailX,
                   CuviImage& dstDetailX,
                   CuviImage* dstDetailY,
                   CuviImage& dstDetailY,
                   CuviImage* dstDetailXY,
                   CuviImage& dstDetailXY,
                   CuviStream* stream = NULL);
                   const CuviStream& stream = CuviStream());
</syntaxhighlight>
</syntaxhighlight>
|}
|}
===Parameters===
===Parameters===
 
{|
|style="font-size:75%;"|
{|class="wikitable"
{|class="wikitable"
|-
|-
Line 21: Line 23:
! Description
! Description
|-
|-
| srcImage
| src
| CuviImage*
| const CuviImage&
| Input image
| Input image
|-
|-
| dstApprox
| dstApprox
| CuviImage*
| CuviImage&
| Output approximation image
| Output approximation image
|-
|-
| dstDetailX
| dstDetailX
| CuviImage*
| CuviImage&
| Output horizontal detail image
| Output horizontal detail image
|-
|-
| dstDetailY
| dstDetailY
| CuviImage*
| CuviImage&
| Output vertical detail image
| Output vertical detail image
|-
|-
| dstDetailXY
| dstDetailXY
| CuviImage*
| CuviImage&
| Output diagonal detail image
| Output diagonal detail image
|-
|-
| stream
| stream
| CuviStream*
| const CuviStream&
| GPU stream ID for execution
| GPU stream ID for execution
 
|}
|}
|}


===Image Type Support===
===Image Type Support===
 
{|
|style="font-size:75%;"|
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 55: Line 58:
|-
|-
| 8uC1
| 8uC1
| 32fC1 x 4
| 8uC1 x 4
|-
| 8uC3
| 8uC3 x 4
|}
|}
===Sample===
{|
[[File:Haar.jpg|frame]]
|}
|}


 
====Sample====
[[File:Haarin.jpg|none|frame|Original Image]]
<br/>
[[File:HaarFwdApp.jpg|none|frame|Approx Component]]
<br/>
[[File:HaarFwdDetailX.jpg|none|frame|Detail X Component]]
<br/>
[[File:HaarFwdDetailY.jpg|none|frame|Detail Y Component]]
<br/>
[[File:HaarFwdDetailXY.jpg|none|frame|Detail XY Component]]


===Example===
===Example===
{|
{|
|style="font-size:150%;"|
|style="font-size:100%;"|
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">


//A single color image
//Input Image
CuviImage *gimg = new CuviImage(_size,img->depth,img->nChannels);
CuviImage gimg = cuvi::io::loadImage(path);
 
//Three single channel images for storing output
CuviImage *gr = new CuviImage(_size,img->depth,1);
CuviImage *gg = new CuviImage(_size,img->depth,1);
CuviImage *gb = new CuviImage(_size,img->depth,1);


//Populate the GPU image with pixel data
//Four output images
gimg->upload(img->imageData,img->widthStep);
CuviImage a, x, y, xy;


//Split into R, G and B channels
//compute one-level haar wavelet decomposition
CuviStatus st = cuvi::colorOperations::channelSplit(gimg,gr,gg,gb);
cuvi::imageTransforms::haarFwd(gimg,a,x,y,xy);


</syntaxhighlight>
</syntaxhighlight>
|}
|}

Latest revision as of 19:00, 19 October 2022

Performs one-level wavelet decomposition of an image using haar basis. The four resultant images are half the width and half the height of the original image

Function

CuviStatus haarFwd(const CuviImage& src,
                   CuviImage& dstApprox,
                   CuviImage& dstDetailX,
                   CuviImage& dstDetailY,
                   CuviImage& dstDetailXY,
                   const CuviStream& stream = CuviStream());

Parameters

Name Type Description
src const CuviImage& Input image
dstApprox CuviImage& Output approximation image
dstDetailX CuviImage& Output horizontal detail image
dstDetailY CuviImage& Output vertical detail image
dstDetailXY CuviImage& Output diagonal detail image
stream const CuviStream& GPU stream ID for execution

Image Type Support

Input Output
8uC1 8uC1 x 4
8uC3 8uC3 x 4

Sample

Error creating thumbnail: Unable to save thumbnail to destination
Original Image


Error creating thumbnail: Unable to save thumbnail to destination
Approx Component


Error creating thumbnail: Unable to save thumbnail to destination
Detail X Component


Error creating thumbnail: Unable to save thumbnail to destination
Detail Y Component


Error creating thumbnail: Unable to save thumbnail to destination
Detail XY Component

Example

//Input Image
CuviImage gimg = cuvi::io::loadImage(path);

//Four output images
CuviImage a, x, y, xy;

//compute one-level haar wavelet decomposition
cuvi::imageTransforms::haarFwd(gimg,a,x,y,xy);