测试 halcon measure_projection 算子

news2025/2/27 13:30:55

期望结果完全相同,但是下面的测试结果和halcon的差值如下:

[0.132838, 0.231991, 0.265157, 0.296903, 0.0998573, 0.165907, 0.230686, 0.130266, 0.0977104, 0.197109, 0.198173, 0.197086, 0.190943, 0.177665, 0.163521, 0.146541, 0.161362, 0.166666, 0.22818, 0.186114, 0.196333, 0.255945, 0.14496, 0.205199, 0.262202, 0.201859, 0.173616, 0.173016, 0.173485, 0.173227, 0.171494, 0.257541, 0.171186, 0.141769, 0.0852231, 0.257203, 0.198859, 0.170551, 0.25673, 0.171491, 0.170175, 0.169464, 0.198114, 0.169922, 0.169473, 0.1695, 0.168997, 0.139408, 0.195358, 0.193962, 0.221091, 0.19246, 0.246518, 0.138458, 0.194492, 0.193142, 0.217299, 0.188277, 0.16121, 0.106746, 0.106695, 0.104717, 0.154996, 0.17956, 0.199884, 0.174948, 0.174217, 0.125464, 0.234857, 0.197361, 0.239242, 0.217724, 0.220922, 0.160648, 0.19362, 0.1959, 0.196964, 0.197266, 0.229685, 0.193291, 0.191924, 0.191487, 0.288308, 0.191503, 0.223271, 0.285233, 0.0954785, 0.157538, 0.187701, 0.284095, 0.190475, 0.18948, 0.188329, 0.187838, 0.186164, 0.217482, 0.277055, 0.215032, 0.15109, 0.27215, 0.211512, 0.208731, 0.286509, 0.262083, 0.31329, 0.315317, 0.358043, 0.396789, 0.403176, 0.397609, 0.39305, 0.392336, 0.19589, 0.260681, 0.459158, 0.330526, 0.19935, 0.587357, 0.518498, 0.44198, 0.24967]

结果并不小,不知道问题出在哪里?

get_grayval_interpolated 和自己实现的双线性差值的结果是完全相同的

dev_close_window()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_set_window (WindowHandle)
read_image (Image, 'fabrik')
get_image_size (Image, Width, Height)
CenterRow:=Height/2-50
CenterCol:=Width/2
degPhi:=45
Phi:=rad(degPhi)
Length1:=60
Length1:=int(floor(Length1))
Length2:=1
gen_measure_rectangle2 (CenterRow, CenterCol, -Phi, Length1, Length2, Width, Height, 'bilinear', MeasureHandle)
measure_projection (Image, MeasureHandle, GrayValues)
disp_rectangle2(WindowHandle,CenterRow, CenterCol, -Phi, Length1, Length2)

RowAry:=[]
ColAry:=[]
RowAry[Length1]:=CenterRow
ColAry[Length1]:=CenterCol

RowOffsetAry[Length2]:=0
ColOffsetAry[Length2]:=0
clockWise:=true
if(clockWise)
  Phi2:=rad(degPhi-90)  
else
   Phi2:=rad(degPhi+90)    
endif
RowOffsetStep:=sin(Phi2)
ColOffsetStep:=cos(Phi2)
for Index := 1 to Length2 by 1
    RowOffsetAry[Length2+Index]:=RowOffsetStep*Index
    ColOffsetAry[Length2+Index]:=ColOffsetStep*Index
    RowOffsetAry[Length2-Index]:=-RowOffsetAry[Length2+Index]
    ColOffsetAry[Length2-Index]:=-ColOffsetAry[Length2+Index]
endfor
gen_image_const (Image1, 'real', Length1*2+1, Length2*2+1)
get_image_size (Image1, Width1, Height1)
RowOffsetStep:=sin(Phi)
ColOffsetStep:=cos(Phi)
for Index := 1 to Length1 by 1
    RowAry[Length1+Index]:=CenterRow+Index*RowOffsetStep
    ColAry[Length1+Index]:=CenterCol+Index*ColOffsetStep
    RowAry[Length1-Index]:=CenterRow-Index*RowOffsetStep
    ColAry[Length1-Index]:=CenterCol-Index*ColOffsetStep
endfor
GrayValues2:=[]
copy_image(Image, DupImage)

for Index := 0 to Width1-1 by 1
   
    get_grayval_interpolated (Image, RowAry[Index], ColAry[Index], 'bilinear', Grayval)
    
    left:= int(floor(ColAry[Index]))
    right:=left+1
    top:= int(floor(RowAry[Index]))
    bottom:=top+1
    a:=ColAry[Index]-left
    b:=RowAry[Index]-top
    get_grayval(Image,top,left,topLeftGrayVal)
    get_grayval(Image,top,right,topRightGrayVal)
    get_grayval(Image,bottom,left,bottomLeftGrayVal)
    get_grayval(Image,bottom,right,bottomRightGrayVal)
    Grayval:=(1 - a)*(1 - b)*topLeftGrayVal+ a*(1 - b)*topRightGrayVal +(1 - a)*b*bottomLeftGrayVal + a*b*bottomRightGrayVal
    
    
    set_grayval (Image1, Length2, Index, Grayval)
    set_grayval(DupImage,int(RowAry[Index]),int(ColAry[Index]),0)
    AVGGrayVal:=Grayval
    for Index2 := 1 to Length2 by 1
        Row:=RowAry[Index]+RowOffsetAry[Length2+Index2]
        Col:=ColAry[Index]+ColOffsetAry[Length2+Index2]
        
        get_grayval_interpolated (Image, Row, Col, 'bilinear', Grayval)
        
        
        left:= int(floor(Col))
        right:=left+1
        top:= int(floor(Row))
        bottom:=top+1
        a:=Col-left
        b:=Row-top
        get_grayval(Image,top,left,topLeftGrayVal)
        get_grayval(Image,top,right,topRightGrayVal)
        get_grayval(Image,bottom,left,bottomLeftGrayVal)
        get_grayval(Image,bottom,right,bottomRightGrayVal)
        Grayval:=(1 - a)*(1 - b)*topLeftGrayVal+ a*(1 - b)*topRightGrayVal +(1 - a)*b*bottomLeftGrayVal + a*b*bottomRightGrayVal
        
        
        
        set_grayval (Image1, Length2+Index2, Index, Grayval)
        set_grayval(DupImage,int(Row),int(Col),0)
        AVGGrayVal:=AVGGrayVal+Grayval
        Row:=RowAry[Index]+RowOffsetAry[Length2-Index2]
        Col:=ColAry[Index]+ColOffsetAry[Length2-Index2]
        get_grayval_interpolated (Image, Row, Col, 'bilinear', Grayval)
        
        
        
        left:= int(floor(Col))
        right:=left+1
        top:= int(floor(Row))
        bottom:=top+1
        a:=Col-left
        b:=Row-top
        get_grayval(Image,top,left,topLeftGrayVal)
        get_grayval(Image,top,right,topRightGrayVal)
        get_grayval(Image,bottom,left,bottomLeftGrayVal)
        get_grayval(Image,bottom,right,bottomRightGrayVal)
        Grayval:=(1 - a)*(1 - b)*topLeftGrayVal+ a*(1 - b)*topRightGrayVal +(1 - a)*b*bottomLeftGrayVal + a*b*bottomRightGrayVal
        
        
        
        
        set_grayval (Image1, Length2-Index2, Index, Grayval)
        set_grayval(DupImage,int(Row),int(Col),0)
        AVGGrayVal:=AVGGrayVal+Grayval
    endfor
    AVGGrayVal:=AVGGrayVal/Height1
    GrayValues2[Index]:=AVGGrayVal
endfor
for Index := 0 to |GrayValues2|-1  by 1
    GrayValuesDidff[Index]:=GrayValues2[Index]-GrayValues[Index]
endfor

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1823549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【GIS矢量切片】tippecanoe在Windows和CentOS中的安装

组件安装记录 背景介绍Windows下安装1、下载工具2、存放安装包3、进入DOS终端4、在终端执行命令5、下载程序6、放置源码7、修改配置信息8、编译9、测试10、参数说明瓦片输出瓦片描述和权属信息输入文件和图层名输入文件的并行处理输入文件的投影缩放级别瓦片分辨率CentOS 7安装…

图像的几何变换之平移

文章目录 前言需求代码运行结果图 前言 图像的几何变换是一个再基础不过的知识点,包括等距变换,相似变换,仿射变换和投影变换。图像的几何变换是指对图像的位置,尺寸,大小,形状和投影进行变换,…

Character Region Awareness for Text Detection论文学习

​1.首先将模型在Synth80k数据集上训练 Synth80k数据集是合成数据集,里面标注是使用单个字符的标注的,也就是这篇文章作者想要的标注的样子,但是大多数数据集是成堆标注的,也就是每行或者一堆字体被整体标注出来,作者…

AI对齐研究方法:建立一个足够对齐的人工智能系统,可以帮助我们解决所有其他对齐问题。 AI安全

与人类价值观保持一致,并遵循人类的意图。 找到一个无限可扩展的解决方案可能非常困难。相反,我们的目标是一种更务实的方法:建立和调整一个系统,该系统可以比人类更快、更好地调整研究进展。 使通用人工智能(AGI&am…

2024年社会发展与城市规划国际会议(SDUP 2024)

2024年社会发展与城市规划国际会议(SDUP 2024) 2024 International Conference on Social Development and Urban Planning 【重要信息】 大会地点:杭州 大会官网:http://www.iacsdup.com 投稿邮箱:iacsdupsub-conf.co…

灾备建设中虚拟机细粒度恢复的含义及技术使用

灾备建设中为了考虑虚拟机恢复的效率与实际的用途,在恢复上出了普通的恢复虚拟机,也有其余的恢复功能,比如瞬时恢复,细粒度恢复等。这里谈的就是细粒度恢复。 首先细粒度恢复是什么,这个恢复可以恢复单个备份下来的文…

HCIA-Datacom H12-811 题库

LDP 邻居发现有不同的实现机制和规定,下面关于LDP 邻居发现的描述错误的是: A:LDP发现机制包括LDP基本发现机制和LDP扩展发现机制 B:LDP基本发现机制可以自动发现直连在同条链路上的LDP Peers C:LDP扩展发现机制够发现…

Golang:使用时会遇到的错误及解决方法详解

Go语言使用时常常会遇到的一些错误及解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下 1、go: go.mod file not found in current directory or any parent directory go mod init name 2、Failed to build the application: main.go:4:2:…

请求headers处理

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 有时在请求一个网页内容时,发现无论通过GET或者是POST以及其他请求方式,都会出现403错误。产生这种错误是由于该网页为了防止…

基于Pytorch框架的深度学习ConvNext神经网络宠物猫识别分类系统源码

第一步:准备数据 12种宠物猫类数据:self.class_indict ["阿比西尼猫", "豹猫", "伯曼猫", "孟买猫", "英国短毛猫", "埃及猫", "缅因猫", "波斯猫", "布偶猫&q…

ARM单片机使用CAN总线部署BootLoader

1.引言 1.1.单片机开发BootLoader意义 单片机开发BootLoader的原因主要与其在嵌入式系统中的关键作用有关。BootLoader是硬件启动的引导程序,它在操作系统内核或用户应用程序运行之前执行。以下是单片机开发BootLoader的主要原因: 初始化硬件设备&…

2024年春季学期《算法分析与设计》练习13

A:菱形图案 题目描述 KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的菱形图案。 输入 多组输入,一个整数(2~20)。 输出 针对每行输入,输出用“*”组成的菱形,…

Java 18新特性概览与解读

随着技术的不断进步,Java作为最流行的编程语言之一,也在持续地进行版本更新,为开发人员提供更强大、更高效的工具和特性。Java 18作为最新的稳定版本,引入了一系列引人注目的新特性和改进。以下是对Java 18中一些主要新特性的详细…

Petalinux由于网络原因产生的编译错误(3)-qemu-xilinx-system-native 失败

1 获取qemu-xilinx-system-native 失败 编译时遇到qemu-xilinx-system-native 包获取失败,如下图所示: 解决这种错误方法如下: 进入Petalinux 工程,编辑工程下的 project-spec/meta-user/conf/petalinuxbsp.conf 文件&#xff0…

什么是DMZ?路由器上如何使用DMZ?

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 DMZ 📒🚀 DMZ的应用场景💡 路由器设置DMZ🎈 注意事项 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 在网络管理中,DMZ(Demilitarized Zone,隔离区)是一个特殊的网络区域,常用于将公共访问和内部网络隔离开来。DMZ功能允许…

关联规则延伸之协同过滤

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、协同过滤1、含义2、策略 二、基于用户的协同过滤1、寻找相似偏好的用户2、欧式距离及系数3、皮尔逊系数4、其他系数5、算法步骤6、局限性 三、基于物品的协同过滤1、…

php实现一个简单的MySQL分页

一、案例演示: 二、php 代码 <?php $servername = "localhost"; // MySQL服务器名称或IP地址 $username = "root"; // MySQL用户名 $password = "123456"; // MySQL密码 $dbname = "test"; // 要连接的数据…

外盘黄金期货需要注意什么?

为大家整理了关于黄金做单的五大原则&#xff0c;相信对于新手投资者来说肯定会产生一定的帮助。  1、看多空&#xff1a;主要有两种方法&#xff0c;基本面判断和技术面判断&#xff0c;基本面判断&#xff0c;主要是借助基本信息面&#xff0c;如政策。供需&#xff0c;产量…

文字不换行了

单行文字不换行 添加... .line1Text {overflow: hidden;text-overflow: ellipsis;white-space: nowrap;cursor: pointer; } 双行文字换行添加... .line2Text {overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;text-overflow: e…

向量化在人工智能领域的深度实践:技术革新与效率提升

在人工智能&#xff08;AI&#xff09;的飞速发展中&#xff0c;向量化技术作为一种基础且关键的数据处理手段&#xff0c;正日益受到广泛关注。向量化是将文本、图像、声音等数据转换为数值向量的过程&#xff0c;这些向量能够表示原始数据的特征和语义信息&#xff0c;为深度…