Difference between revisions of "Function:DemosaicDFPD"

From CUVI Wiki
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
__NOTOC__
__NOTOC__
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.
Restores an RGB image from a CFA image using DFPD Bayer algorithm. ''Directional Filtering with Posteriori Decision'' to restore the color image gives much better results than demosaic (with bilinear interpolation) and remove artifacts.
===Function===
====Function====
{|
{|
|style="font-size:150%;"|
|style="font-size:100%;"|
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
CuviStatus cuvi::colorOperations::lowlight(const CuviImage& src,
CuviStatus demosaicDFPD(const CuviImage& src,
                                          CuviImage& dst,
                        CuviImage& dst,
                                          const CuviStream& stream = CuviStream());
                        const CuviBayerSeq sensorAlignment,
                        bool refineResults,
                        const CuviStream& stream = CuviStream());
</syntaxhighlight>
</syntaxhighlight>
|}
|}


===Parameters===
====Parameters====
 
{|
|style="font-size:75%;"|
{|class="wikitable"
{|class="wikitable"
|-
|-
Line 21: Line 24:
| src
| src
| const CuviImage&
| const CuviImage&
| Input Image
| Input Bayer Image
|-
|-
| dst
| dst
| CuviImage&
| CuviImage&
| Output Image
| Output RGB Image
|-
| sensorAlignment
| CuviBayerSeq
| Sensor alignment of the bayer image
|-
| refineResults
| bool
| Perform additional refinement step
|-
|-
| stream
| stream
| const 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 45: Line 57:
| 16u
| 16u
| 16u
| 16u
|}
|}
|}


===Sample===
====Sample====
{|
[[File:In16.png|none|frame|Input]]
|-
<br/>
|[[File:In16.png|frame|Input]]
[[File:Tower.png|none|frame|Output]]
|[[File:Tower.png|frame|Output]]
<br/>
|}


===Example===
====Example====
{|
{|
|style="font-size:150%;"|
|style="font-size:100%;"|
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
CuviImage input("D:/bayer.tif", CUVI_LOAD_IMAGE_GRAYSCALE_KEEP_DEPTH), output;
CuviImage input("D:/bayer.tif", CUVI_LOAD_IMAGE_GRAYSCALE_KEEP_DEPTH), output;

Latest revision as of 20:59, 18 October 2022

Restores an RGB image from a CFA image using DFPD Bayer algorithm. Directional Filtering with Posteriori Decision to restore the color image gives much better results than demosaic (with bilinear interpolation) and remove artifacts.

Function

CuviStatus demosaicDFPD(const CuviImage& src,
                        CuviImage& dst,
                        const CuviBayerSeq sensorAlignment,
                        bool refineResults,
                        const CuviStream& stream = CuviStream());

Parameters

Name Type Description
src const CuviImage& Input Bayer Image
dst CuviImage& Output RGB Image
sensorAlignment CuviBayerSeq Sensor alignment of the bayer image
refineResults bool Perform additional refinement step
stream const CuviStream& GPU stream ID for execution

Image Type Support

Input Output
8u 8u
16u 16u

Sample

Error creating thumbnail: Unable to save thumbnail to destination
Input


Error creating thumbnail: Unable to save thumbnail to destination
Output


Example

CuviImage input("D:/bayer.tif", CUVI_LOAD_IMAGE_GRAYSCALE_KEEP_DEPTH), output;
 
cuvi::colorOperations::demosaicDFPD(input, output, CUVI_BAYER_RGGB);

// Or this to further refine the results
cuvi::colorOperations::demosaicDFPD(input, output, CUVI_BAYER_RGGB, true);
 
cuvi::io::saveImage(output, "D:/debayered.png");