Image Pyramids
程序员文章站
2022-07-07 22:53:34
...
There are two common kinds of image pyramids:
– Gaussian pyramid: Used to downsample images
– Laplacian pyramid: Used to reconstruct an upsampled image from an image lower in the pyramid (with
less resolution)
– Gaussian pyramid: Used to downsample images
– Laplacian pyramid: Used to reconstruct an upsampled image from an image lower in the pyramid (with
less resolution)
• In this tutorial we’ll use the Gaussian pyramid
Imagine the pyramid as a set of layers in which the higher the layer, the smaller the size.
Notice that it is important that the input image can be divided by a factor of two (in both dimensions).
Otherwise, an error will be shown.
– Finally, we update the input image tmp with the current image displayed, so the subsequent operations
are performed on it.
#include <opencv.hpp>
using namespace cv;
/// Global variables
Mat src, dst, tmp;
char* window_name = "Pyramids Demo";
/**
* @function main
*/
int main(int argc, char** argv)
{
/// General instructions
printf("\n Zoom In-Out demo \n ");
printf("------------------ \n");
printf(" * [u] -> Zoom in \n");
printf(" * [d] -> Zoom out \n");
printf(" * [ESC] -> Close program \n \n");
/// Test image - Make sure it s divisible by 2^{n}
src = imread("beauty.jpg");
if (!src.data)
{
printf(" No data! -- Exiting the program \n");
return -1;
}
tmp = src;
dst = tmp;
/// Create window
namedWindow(window_name, CV_WINDOW_AUTOSIZE);
imshow(window_name, dst);
/// Loop
while (true)
{
int c;
c = waitKey(10);
if ((char)c == 27)
{
break;
}
if ((char)c == 'u')
{
pyrUp(tmp, dst, Size(tmp.cols * 2, tmp.rows * 2));
printf("** Zoom In: Image x 2 \n");
}
else if ((char)c == 'd')
{
pyrDown(tmp, dst, Size(tmp.cols / 2, tmp.rows / 2));
printf("** Zoom Out: Image / 2 \n");
}
imshow(window_name, dst);
tmp = dst;
}
return 0;
}
beauty.jpg
上一篇: Rotate Image
下一篇: Image Visualization