OpenCV图像滤波(14)金字塔处理上采样函数pyrUp()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

对图像进行上采样并随后进行模糊处理。

默认情况下,输出图像的大小计算为 Size(src.cols2, src.rows2),但无论如何,以下条件必须得到满足:
∣ dstsize.width − s r c . c o l s ∗ 2 ∣ ≤ ( dstsize.width m o d    2 ) ∣ dstsize.height − s r c . r o w s ∗ 2 ∣ ≤ ( dstsize.height m o d    2 ) \begin{array}{l} | \texttt{dstsize.width} -src.cols*2| \leq ( \texttt{dstsize.width} \mod 2) \\ | \texttt{dstsize.height} -src.rows*2| \leq ( \texttt{dstsize.height} \mod 2) \end{array} dstsize.widthsrc.cols2∣(dstsize.widthmod2)dstsize.heightsrc.rows2∣(dstsize.heightmod2)

该函数执行高斯金字塔构建中的上采样步骤,尽管它实际上也可以用来构建拉普拉斯金字塔。首先,它通过插入偶数行和列来对源图像进行上采样,然后使用与 pyrDown 函数相同的核乘以 4 进行卷积。

pyrUp() 函数是 OpenCV 中用于图像金字塔处理的一个函数,主要用于图像上采样,即将图像放大到较大的分辨率。它是构建图像金字塔的另一个基础步骤之一,通常与 pyrDown() 函数配合使用,用于图像金字塔的构建和处理。

函数原型

void cv::pyrUp	
(
	InputArray 	src,
	OutputArray 	dst,
	const Size & 	dstsize = Size(),
	int 	borderType = BORDER_DEFAULT 
)		

参数

  • 参数src 输入图像。
  • 参数dst 输出图像;与输入图像具有相同的类型。
  • 参数dstsize 输出图像的大小。
  • 参数borderType 像素外推方法,参见 BorderTypes(仅支持 BORDER_DEFAULT)。

代码示例

#include <iostream>
#include <opencv2/opencv.hpp>

int main()
{
    // 加载图像
    cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/erik.jpg", cv::IMREAD_COLOR );

    if ( img.empty() )
    {
        std::cout << "无法加载图像,请检查路径是否正确。" << std::endl;
        return -1;
    }

    cv::Size sz2Sh( 400, 600 );
    cv::resize( img, img, sz2Sh, 0, 0, cv::INTER_LINEAR_EXACT );

    // 使用 pyrUp 对图像进行上采样
    cv::Mat larger_img;
    cv::Size dst_size( img.cols * 2, img.rows * 2 );  // 明确指定输出图像的大小
    cv::pyrUp( img, larger_img, dst_size );

    // 显示结果
    cv::namedWindow( "Original Image", cv::WINDOW_NORMAL );
    cv::imshow( "Original Image", img );

    cv::namedWindow( "Upsampled Image", cv::WINDOW_NORMAL );
    cv::imshow( "Upsampled Image", larger_img );

    cv::waitKey( 0 );  // 等待按键

    return 0;
}

输出结果

在这里插入图片描述

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值