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
相关推荐
稳稳C910 小时前
02|Langgraph | 从入门到实战 | workflow与Agent
人工智能·langchain·agent·langgraph
聚梦小课堂10 小时前
2025年11月4日 AI快讯
人工智能·新闻资讯·ai大事件
Dev7z10 小时前
基于ResNet50和PyTorch的猫狗图像分类系统设计与实现
人工智能·pytorch·分类
lybugproducer10 小时前
深度学习专题:模型训练的数据并行(三)
人工智能·深度学习·概率论
Gloria_niki10 小时前
图像分割深度学习学习总结
人工智能
武子康10 小时前
AI研究-118 具身智能 Mobile-ALOHA 解读:移动+双臂模仿学习的开源方案(含论文/代码/套件链接)
人工智能·深度学习·学习·机器学习·ai·开源·模仿学习
长桥夜波11 小时前
机器学习日报12
人工智能·机器学习
AI柠檬11 小时前
机器学习:数据集的划分
人工智能·算法·机器学习
诸葛务农11 小时前
光刻胶分类与特性——g/i线光刻胶及东京应化TP-3000系列胶典型配方(上)
人工智能·材料工程
mm-q291522272911 小时前
YOLOv5(PyTorch)目标检测实战:TensorRT加速部署!训练自己的数据集(Ubuntu)——(人工智能、深度学习、机器学习、神经网络)
人工智能·深度学习·机器学习