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

local_min/local_max

函数功能

算子给定一个滑动窗口,遍历所有的图像像素,计算以当前像素为中心的滑动窗口内的最大或最小值,将其作为输出图像在当前位置的像素值。

函数接口

1
2
void kcv_LocalMax_acc(const double *_src, double *_dst, size_t src_rows, size_t src_cols, size_t window_rows, size_t window_cols); 
void kcv_LocalMin_acc(const double *_src, double *_dst, size_t src_rows, size_t src_cols, size_t window_rows, size_t window_cols); 

参数

参数名

描述

取值范围

输入/输出

src

输入图像。

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

输入

dst

输出图像。

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

输出

src_rows

输入图像行数。

(0, 16384]

输入

src_cols

输入图像列数。

(0, 16384]

输入

window_rows

滑动窗口行数,必须为奇数。

(0, src_rows]

输入

window_cols

滑动窗口列数,必须为奇数。

(0, src_cols]

输入

返回值

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

错误码

错误码

描述

LITHO_IMG_STS_NULL_PTR_ERR

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

LITHO_IMG_STS_SIZE_ERR

  1. 参数“src_rows”或“src_cols”值等于0;
  2. 参数“window_rows”值大于“src_rows”,或“window_cols”值大于“src_cols”。

LITHO_IMG_STS_SIZE_WRN

参数“window_rows”或“window_cols”值不为奇数。

示例

 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
#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 src_rows = 8; // 可调整
    const size_t src_cols = 8; // 可调整
    const size_t window_rows = 3; // 可调整
    const size_t window_cols = 3; // 可调整
    const size_t length = src_rows * src_cols; // 声明并初始化length
    double *src = (double *)malloc(length * sizeof(double));
    double *dst = (double *)malloc(length * sizeof(double));
    // 初始化输入图像(这里使用一个简单的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 < src_rows; i++) {
        for (size_t j = 0; j < src_cols; j++) {
            src[i * src_cols + j] = src_data[i][j];
        }
    }
    // 调用函数
    cv::kcv_LocalMax_acc(src, dst, src_rows, src_cols, window_rows, window_cols);
    // 打印结果(这里只打印部分结果)
    printf("Upsampled Image:\n");
    for (size_t i = 0; i < src_rows; i++) { // 修改为src_rows
        for (size_t j = 0; j < src_cols; j++) { // 修改为src_cols
            printf("%.2f ", dst[i * src_cols + j]);
            if (j == src_cols - 1) { // 修改为src_cols
                printf("\n");
            }
        }
    }
}
int main() {
    test_kcv_laplacian_acc();
    return 0;
}

运行结果:

1
2
3
4
5
6
7
8
9
Upsampled Image:
1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 
1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 
1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 
1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 
1.00 1.00 1.00 1.00 1.00 0.00 0.00 0.00 
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00