Difference between revisions of "Function:FocusStack"
From CUVI Wiki
(Created page with "__NOTOC__ Stacks multiple images into a single image. Images need to be aligned. ===Function=== {| |style="font-size:150%;"| <syntaxhighlight lang="cpp"> CuviStatus focusResiz...") |
|||
(18 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
===Function=== | ===Function=== | ||
{| | {| | ||
|style="font-size: | |style="font-size:100%;"| | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="C"> | ||
CuviStatus | CuviStatus focusStack(const CuviImage* ImgArr, const int numImages, CuviImage& sharpImage, CuviFilter denoiseFilter, const CuviStream& stream = CuviStream()); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |} | ||
===Parameters=== | ===Parameters=== | ||
{| | |||
|style="font-size:75%;"| | |||
{|class="wikitable" | {|class="wikitable" | ||
|- | |- | ||
Line 41: | Line 37: | ||
| const CuviStream& | | const CuviStream& | ||
| GPU stream ID for execution | | GPU stream ID for execution | ||
|} | |||
|} | |} | ||
===Image Type Support=== | ====Image Type Support==== | ||
{| | |||
{| class="wikitable" | |style="font-size:75%;"| | ||
{|class="wikitable" | |||
|- | |- | ||
! Input | ! Input | ||
! Output | ! Output | ||
|- | |- | ||
| 8uC3 | | 8uC3 x N | ||
| 8uC3 | | 8uC3 | ||
|- | |- | ||
| 16uC3 x N | |||
| 16uC3 | | 16uC3 | ||
| | |} | ||
|} | |} | ||
====Samples==== | |||
[[File:Fs-in-1.jpg|none|frame| Input image with foreground focused]] | |||
<br/> | |||
[[File:Fs-in-2.jpg|none|frame| Input image with background focused]] | |||
<br/> | |||
[[File:Focused.jpg|none|frame| Focus-Stacked Image]] | |||
<br/> | |||
=== | ====Code Example==== | ||
{| | {| | ||
| | |style="font-size:100%;"| | ||
<syntaxhighlight lang="C"> | |||
std::string path = "D:/dataset/fs/imageFolder/"; | |||
std::string result = "D:/dataset/fs/focused.png"; | |||
for (const auto& entry : fs::directory_iterator(path)) | |||
{ | |||
if (entry.path().has_extension() && isSupportedExtension(entry.path().extension().string())) | |||
vec.push_back(entry.path().string()); | |||
} | |||
int numImages = vec.size(); | |||
vector<CuviImage> ImgArr(numImages); | |||
//Sort filesnames to read in order. THIS IS VERY IMPORTANT FOR FOCUS STACKING | |||
sort(vec.begin(), vec.end(), lessFirst); | |||
for (int i = 0; i < numImages; i++) | |||
{ | |||
ImgArr[i].create(vec[i], CUVI_LOAD_IMAGE_COLOR_KEEP_DEPTH); | |||
cout << vec[i]<< std::endl; | |||
} | |||
CuviImage focusImage; | |||
CuviFilter denoiseFilter = CuviSpecialFilters::gaussian(CuviSize(11, 11), 15.0f); | |||
cuvi::computerVision::focusStack(ImgArr.data(), numImages, focusImage, denoiseFilter); | |||
printf("\nSaving to disk.."); | |||
cuvi:: | cuvi::io::saveImage(focusImage, result); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |} |
Latest revision as of 22:23, 18 October 2022
Stacks multiple images into a single image. Images need to be aligned.
Function
|
Parameters
|
Image Type Support
|
Samples
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
Code Example
|