OpenCV CUDA模块设备层-----在 GPU上计算反双曲正切函数atanh()

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

算法描述

对输入的 uchar1 像素值(范围 0, 255),先归一化到 0.0, 1.0 浮点区间,然后计算其 反双曲正切函数 atanh(x),最终返回一个 float1 类型的结果。

函数原型

cpp 复制代码
__device__ __forceinline__ float1 cv::cudev::atanh 	( 	const uchar1 &  	a	) 	

参数

  • uchar1 CUDA 向量类型,表示一个单通道 8 位无符号整型(等价于 unsigned char 或 uint8_t)。

代码示例

cpp 复制代码
#include <opencv2/cudev/common.hpp>
#include <cstdio>
#include <cmath> // for atanhf

// 手动实现 atan2f 并做边界保护
__device__ __forceinline__ float safe_atanh(float x) {
    if (x <= -1.0f) return -1.0e+37f; // -inf
    if (x >= 1.0f)  return +1.0e+37f; // +inf
    return atanhf(x);
}

__global__ void test_atanh() {
    uchar1 a = make_uchar1(128); // 输入一个像素值
    float normalized = a.x / 255.0f;

    // 安全处理
    if (normalized >= 1.0f) normalized = 0.999999f;
    if (normalized <= 0.0f) normalized = 0.000001f;

    float result = safe_atanh(normalized);

    printf("atanh(%f) = %f\n", normalized, result);
}

int main() {
    test_atanh<<<1, 1>>>();
    cudaDeviceReset();
    return 0;
}

运行结果

bash 复制代码
atanh(0.501961) = 0.551924
相关推荐
小林ixn3 分钟前
远程 MCP 实战:让 AI 无缝调用地图、浏览器与文件系统
人工智能·agent·mcp
weixin_422329315 分钟前
AgentScope Java2.0 版本Builder 本地启动指南
人工智能
studyrunner9 分钟前
GPT-5.5 对比 GPT-5.6 Sol、Terra、Luna:官方性能数据与选型分析
大数据·人工智能·gpt
OpenMiniServer15 分钟前
大统一逻辑链3.0(GULP3.0):绝对悖论、逻辑链与宇宙演化动力学
人工智能
Asize18 分钟前
Agent 入门:从 LLM 与 Agent 的区别到 Function Calling
javascript·人工智能
小林ixn19 分钟前
AI Agent的“万能工具箱”:MCP协议实战,让工具调用不再受语言和进程束缚
人工智能·agent·mcp
武子康20 分钟前
🔥 GPT-5.6 有限预览全拆解:Sol/Terra/Luna 三档定价 + max/ultra 双推理 + 缓存 1.00×/1.25×/0.10× 三倍
人工智能·chatgpt·openai
CTA终结者21 分钟前
近期AI量化工具推荐,围绕最难推进的环节选择
人工智能·python
无糖可可果21 分钟前
MCP(Model Context Protocol)入门与实践:让 AI Agent 跨进程调用工具
人工智能
无糖可可果24 分钟前
远程 MCP 实战:让 AI 成为「千里眼」和「魔术手」
人工智能