OpenCV图像滤波(20)模糊处理函数stackBlur()的使用

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

算法描述

stackBlur() 函数用于对图像进行模糊处理。该函数对图像应用了 stackBlur 技术。stackBlur 可以生成与高斯模糊相似的结果,而且随着模糊内核大小的增加,处理时间不会显著增长。它在扫描图像的过程中创建了一个移动的颜色堆栈。因此,在处理每一像素时只需要向堆栈的右侧添加一个新的颜色块,并移除最左侧的颜色。堆栈顶部的其他颜色则根据它们的位置(右侧或左侧)被增加或减少一个单位。唯一支持的边界类型是 BORDER_REPLICATE(边界复制)。原始论文由 Mario Klingemann 提出,可在此处找到:http://underdestruction.com/2004/02/25/stackblur-2004

stackBlur 的主要优点在于它能够快速地对图像进行模糊处理,即使在较大的内核尺寸下也能保持高效的性能。这是因为它采用了特殊的算法来更新堆栈中的颜色值,而不是重新计算整个内核范围内的平均值。这种方法使得 stackBlur 成为了实时图像处理和需要大量模糊效果的应用的理想选择。

函数原型

void cv::stackBlur	
(
	InputArray 	src,
	OutputArray 	dst,
	Size 	ksize 
)		

参数

  • 参数 src 输入图像。通道数可以是任意的,但是图像深度应该是 CV_8U(无符号8位整数),CV_16U(无符号16位整数),CV_16S(有符号16位整数),或者 CV_32F(32位浮点数)。
  • 参数 dst 输出图像,与输入图像 src 具有相同的尺寸和类型。
  • 参数 ksize stack-blur 内核的尺寸。ksize.width 和 ksize.height 可以不同,但都必须是正数且为奇数。

示例代码

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

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    // Load an image
    Mat image = imread("/media/dingxin/data/study/OpenCV/sources/images/erik.jpg");

    // Check if the image is loaded successfully
    if (image.empty())
    {
        cout << "Error: Image not found." << endl;
        return -1;
    }

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


    // Set the blur kernel size
    int kernelSize = 13;  // You can adjust this value for different blurring effects

    // Perform box blur
    Mat blurredImage;
    stackBlur(image, blurredImage, Size(kernelSize, kernelSize));

    
    imshow("Original Image", image);
    imshow("Blurred Image", blurredImage);

    // Wait for a key press and then close all windows
    waitKey(0);
    destroyAllWindows();

    return 0;
}

运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值