鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

gaussian_blur

函数功能

使用分离滤波对图像使用高斯核(gaussian kernel)进行卷积滤波。

  1. 根据x、y两个方向的sigma值算出kernel_x和kernel_y。
  2. 将图像分别经过两个kernel的卷积。
  3. 输出卷积后的图像。

函数接口

1
void kcv_GaussianBlur_acc(const float *_src, float *_dst, int m, int n, int h, int w, double sigma1, double sigma2); 

参数

参数名

描述

取值范围

输入/输出

src

输入,原图像。

非空且申请内存大小为src_rows*src_cols*sizeof(double)

输入

dst

输出,滤波后的图像。

非空且申请内存大小与src一致

输出

m

输入图像的高。

(0, 16384]

输入

n

输入图像的宽。

(0, 16384]

输入

h

高斯核的高。

(0, 1024]

输入

w

高斯核的宽。

(0, 1024]

输入

sigma1

x方向的高斯sigma。

(0, inf)

输入

sigma2

y方向的高斯sigma。

(0, inf)

输入

返回值

  • 成功:返回LITHO_IMG_STS_NO_ERR
  • 失败:返回错误码。

错误码

错误码

描述

LITHO_IMG_STS_NULL_PTR_ERR

参数“src”或“dst”存在空指针。

LITHO_IMG_STS_SIZE_ERR

参数“m”、“n”、“h”、“w”中有值等于0。

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <stdlib.h>
#include <complex.h>
#include <iostream>
#include <vector>
#include "kp_litho_img.h"

void test_kcv_laplacian_acc() {
    const size_t rows = 2; // 可调整
    const size_t cols = 2; // 可调整
    const size_t h = 3; // 可调整
    const size_t w = 3; // 可调整
    const double sigma1 = 3.0; // 可调整
    const double sigma2 = 4.0; // 可调整

    int length = rows * cols;
    float *_src = (float *)malloc(length * sizeof(float));
    float *_dst = (float *)malloc(length * sizeof(float));
    // 初始化输入图像(这里使用一个简单的5x5图像)
    double src_data[5][5] = {
        {0, 0, 0, 0, 0},
        {0, 1, 1, 1, 0},
        {0, 1, 0, 1, 0},
        {0, 1, 1, 1, 0},
        {0, 0, 0, 0, 0}
    };
    for (size_t i = 0; i < rows; i++) {
        for (size_t j = 0; j < cols; j++) {
            _src[i * cols + j] = src_data[i][j];
        }
    }
    // 调用函数
    cv::kcv_GaussianBlur_acc(_src, _dst, rows, cols, h, w, sigma1, sigma2);
    // 打印结果(这里只打印部分结果)
    printf("Upsampled Image:\n");
    for (size_t i = 0; i < rows; i++) {
        for (size_t j = 0; j < cols; j++) {
            printf("%.2f ", _dst[i * cols + j]);
            if (j == cols - 1) {
                printf("\n");
            }
        }
    }
}
int main() {
    test_kcv_laplacian_acc();
    return 0;
}

运行结果:

1
2
3
Upsampled Image:
0.11 0.22 
0.22 0.45