首页 > 其他分享 >OpenVX非线性滤波器

OpenVX非线性滤波器

时间:2024-07-07 14:21:35浏览次数:10  
标签:滤波器 OpenVX DF image 非线性 VX 图像 vx 输入

OpenVX非线性滤波器

在输入图像的窗口上计算非线性滤波器。输出图像的大小应与输入图像的大小相同。

属性VX_CONTEXT_NONLINEAR_MAX_DIMENSION,允许用户查询vxNonLinearFilterNode实现所支持的最大非线性滤波器。实现必须支持所有维度(高度或宽度,不一定相同),直到该属性的值。此属性必须支持的最低值为9。

功能

vxNonLinearFilterNode

vxuNonLinearFilter

3.38.1. 函数

vxNonLinearFilterNode

[图表]创建非线性滤波器节点。

vx_node vxNonLinearFilterNode(

    vx_graph         graph,

    vx_enum          function,

    vx_image         input,

    vx_matrix        mask,

    vx_image         output);

参数

[in] graph - 对图形的引用。

[in] function - 非线性滤波器功能。参见vx_non_linear_filter_e。

[in] input - VX_DF_image_U8或VX_DF_ image_U1格式的输入图像。

[in] mask - 应用于非线性函数的掩码。VX_MATRIX_ORIGIN属性,用于在计算结果图像时适当放置遮罩。参见vxCreateMatrixFromPattern。

[out] output - VX_DF_image_U8或VX_DF_image_U1格式的输出图像,其大小和格式必须与输入图像相同。

返回:vx_node

返回值

vx_node- 节点参考。应使用vxGetStatus检查,阻止成功创建的任何可能错误。

vxuNonLinearFilter

[立即]执行非线性滤波。

vx_status vxuNonLinearFilter(

    vx_                  context,

    vx_enum              function,

    vx_image             input,

    vx_matrix            mask,

    vx_image             output);

参数

[in] context - 对整体上下文的引用。

[in] function - 非线性滤波器函数。参见vx_non_linear_filter_e。

[in] input - VX_DF_image_U8或VX_DF_image_U1格式的输入图像。

[in] mask - 要应用于非线性函数的掩码。VX_MATRIX_ORIGIN属性。用于在计算结果图像时适当放置遮罩。参见vxCreateMatrixFromPattern和vxCreateMatixFromPatternAndOrigin。

[out] output - VX_DF_image_U8或VX_DF_image_U1格式的输出图像。输出图像必须与输入图像具有相同的大小和格式。

返回:vx_status_e枚举。

返回值

VX_SUCCESS-成功

* - 发生错误。参考vx_status_e

3.39. 非最大值抑制

非极大值抑制

在图像中找到局部最大值,或者以其他方式抑制,不是局部最大值的像素。

非最大抑制器的输入是VX_DF_IMAGE_U8或VX_DF_IMAGE_S16图像。在VX_DF_IMAGE_S16图像的情况下,抑制像素的值应为INT16_MIN。

可选的掩模图像,可以用于将抑制限制到感兴趣的区域。如果掩码像素为非零,则输入中的相关像素被完全忽略,并且在抑制期间不被考虑;也就是说,它不被抑制并且不被视为任何抑制窗口的一部分。

具有坐标(x,y)的像素被保持,当且仅当其大于或等于其左上邻居;并且大于其右下邻居。例如,对于窗口大小为3的情况,如果以下条件成立,则保留P(x,y):

 

 功能

vxNonMaxSuppressionNode

vxuNonMaxSuppression

3.39.1. 函数

vxNonMaxSuppressionNode

[图表]创建非最大抑制节点。

vx_node vxNonMaxSuppressionNode(

    vx_graph        graph,

    vx_image        input,

    vx_image        mask,

    vx_int32        win_size,

    vx_image        output);

参数

[in] graph - 对图形的引用。

[in] input - 输入图像VX_DF_IMAGE_U8VX_DF_IMAGE_S16格式。

[in] mask - [可选]抑制ROI的收缩。掩码图像的类型为VX_DF_image_U8或VX_DF_image_U1,并且必须具有与输入图像相同的大小。

[in] win_size - 执行局部非最大值抑制的窗口大小。必须是奇数,并且小于或等于输入图像的最小大小。

[out] output - VX_DF_image_U8或VX_DF_image_S16格式的输出图像。输出图像必须与输入图像具有相同的大小和格式。

返回:vx_node

返回值

vx_node- 节点参考。应使用vxGetStatus检查,阻止成功创建的任何可能错误。

vxuNonMax抑制

[立即]对图像执行非最大值抑制,生成相同类型的图像。

vx_status vxuNonMaxSuppression(

    vx_context            context,

    vx_image              input,

    vx_image              mask,

    vx_int32              win_size,

    vx_image              output);

参数

[in] context - 对整体上下文的引用。

[in] input - 输入图像的VX_DF_IMAGE_U8格式或VX_DF_IMAGE_S16格式。

[in] mask - [可选]抑制ROI的收缩。掩码图像的类型为VX_DF_image_U8或VX_DF_image_U1,并且必须与输入图像具有相同的大小。

[in] win_size - 在其上执行局部非最大值抑制的窗口大小。必须是奇数,并且小于或等于输入图像的最小大小。

[out] output - VX_DF_image_U8或VX_DF_image_S16格式的输出图像。输出图像必须与输入图像具有相同的大小和格式。

返回:vx_status_e枚举。

返回值

VX_SUCCESS-成功

* - 发生错误。参考vx_status_e

光流金字塔(LK)

使用Lucas Kanade方法计算两个金字塔图像之间的光流。

该函数是算法的实现。函数输入是两个vx_pyramid对象,旧的和新的,以及要从旧的vx_pyramid跟踪的,vx_keypoint_t结构的vx_array。棱锥体新旧棱锥体,必须具有相同的维度。必须支持VX_SCALE_PYRAMID_HALF金字塔缩放。

该函数输出vx_keypoint_t结构的vx_array,这些结构从旧的vx_pyramid,跟踪到新的vx_piramid。新阵列中的vx_keypoint_t结构的vx_array中,每个元素可能有效也可能无效。实现应在新vx_array中返回与旧vx_array中,相同数量的vx_keypoint_t结构。

更详细地说:Lucas Kanade方法,使用以下方程为旧图像跟踪点阵列中的每个点,找到仿射运动矢量V:

 其中

 和

 是使用输入图像上的Scharr梯度获得的:

 

 是通过两个图像中相同像素之间的简单差异获得的。

 被定义为与所考虑的点

 相邻的像素。对于给定的窗口大小

 ,

 是

 个点。像素

 位于窗口的中心。在实践中,为了获得准确的解,有必要对该方案进行多次迭代(以牛顿-拉夫森方式),直到:

仿射运动矢量的残差小于阈值

和/或实现的最大迭代次数。

每次迭代,通过将其更改为旧图像和新图像中具有估计坐标的像素之间的差来使用上一次迭代的估计。每次迭代,函数都会检查要跟踪的像素是否丢失。丢失跟踪的标准是上面的矩阵是可逆的。(矩阵的行列式小于阈值:

 )或者矩阵的最小特征值小于阈值(

 )。当点跟踪坐标在图像坐标之外时,也会发生丢失跟踪。当给出vx_true_e作为use_initial_asseries的输入时,该算法首先将其计算为旧图像和新图像中,具有初始估计坐标的像素之间的差。tracking_status设置为零(丢失)的vx_keypoint_t结构的输入vx_array,被复制到新的vx_array。

客户端负责编辑vx_keypoint_t structs数组的输出vx_array,然后将其用作下一帧的vx_keypoint_t struct的输入vx_arrays。例如,为了提高效率,客户端可以移除tracking_status设置为零的vx_keypoint_t结构。

此函数仅更改vx_keypoint_t结构的x、y和tracking_status成员,其行为就好像它将剩余部分,从旧的跟踪vx_keypoint_t复制到新的图像vx_keypoint _t。

功能

vxOpticalFlowPyrLKNode

vxuOpticalFlowPyrLK

 

 

参考文献链接 https://registry.khronos.org/OpenVX/specs/1.3.1/html/OpenVX_Specification_1_3_1.html#vx_array

标签:滤波器,OpenVX,DF,image,非线性,VX,图像,vx,输入
From: https://www.cnblogs.com/wujianming-110117/p/18288453

相关文章

  • 基于改进高斯-拉普拉斯滤波器的一维时间序列平滑与降噪(MATLAB)
    以图像处理为例,拉普拉斯算子是基于图像的二阶导数来找到边缘并搜索过零点,传统的拉普拉斯算子常产生双像素宽的边缘,对于较暗区域中的亮斑进行边缘检测时,拉普拉斯运算就会使其变得更亮。因此,与梯度算子一样,拉普拉斯算子不能抑制图像的噪声。如果有一种算子能够将高斯平滑滤波器与......
  • OpenVX框架分析:用户内核
    OpenVX框架分析:用户内核定义用户内核,这是一种用新视觉功能扩展OpenVX的方法。用户内核可以由OpenVX加载,并作为节点或即时函数(如果客户端提供接口)包含在图形中。用户内核通常将在与高级操作系统/CPU兼容的目标上加载和执行,而不是在远程处理器或其他加速器上。 图13.用户内......
  • OpenVX基本视觉功能
    OpenVX基本视觉功能1.输入输出表OpenVX附带了一组标准的或基本的视觉功能。表2-1列出了支持的视觉功能集、输入类型(见表2-1)和输出类型(见表2-2),以及支持的OpenVX版本。表2-1OpenVX视觉功能输入参数视觉功能U1S8U8U16S16U32F32颜色其他A......
  • EKF+UKF+CKF+PF的效果对比|三维非线性滤波|MATLAB例程
    前言标题里的EKF、UKF、CKF、PF分别为:扩展卡尔曼滤波、无迹卡尔曼滤波、容积卡尔曼滤波、粒子滤波。EKF是扩展卡尔曼滤波,计算快,最常用于非线性状态方程或观测方程下的卡尔曼滤波。但是EKF应对强非线性的系统时,估计效果不如UKF。UKF是无迹卡尔曼滤波/无味卡尔曼滤波,使用U......
  • 多传感器融合_各类滤波器方法整理
    多传感器融合:各类滤波器方法整理1 背景概述移动机器人、无人机或者无人船等是不能够像工业机器人利用关节处的力矩传感器和编码器的读数直接进行位姿的解算的,抛开工业机械设计制造及其装配时带来的误差,移动机器人、无人机或者无人船等内置的传感器往往会因为轮子打滑、i......
  • 基于三相pq理论的单相并联有源电力滤波器能够在单相系统中减轻谐波电流,并补偿无功功率
     ......
  • 基于三相pq理论的单相并联有源电力滤波器能够在单相系统中减轻谐波电流,并补偿无功功率
     ......
  • 线性思维和非线性思维
    声明本人非该领域专业人士,个人理解,仅供参考。什么是线性思维和非线性思维人的思维可以分为两种,一种是线性思维,另一种是非线性思维。线性思维就像是这样的:非线性思维就像是这样的:非线性思维容易拓展思路,发散思维,但是为什么人们习惯于使用线性思维呢?因为从古至今,无论哪种语......
  • 探索信号世界的奥秘:MATLAB中的傅里叶变换、滤波器与FFT仿真设计
    探索信号世界的奥秘:MATLAB中的傅里叶变换、滤波器与FFT仿真设计一、引言:信息技术的脉搏——信号处理二、技术概述:理论与实践的桥梁傅里叶变换滤波器设计FFT(快速傅里叶变换)代码示例:基本FFT应用三、技术细节:深入理解背后的数学原理傅里叶变换原理滤波器设计原理FFT算法解......
  • pytorch实现:PINN 寻求一维非线性薛定谔方程数值解
    pytorch实现:PINN寻求一维非线性薛定谔方程数值解pytorch实现:PINN寻求一维非线性薛定谔方程数值解1.非线性薛定谔方程2.PINN实例2.1偏微分方程条件2.2损失函数推导2.3损失函数定义3.代码实现4.训练结果5.源代码pytorch实现:PINN寻求一维非线性薛定谔方程数值......