测试 halcon measure_projection 算子

期望结果完全相同,但是下面的测试结果和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:=\[\]

RowAryLength1:=CenterRow

ColAryLength1:=CenterCol

RowOffsetAryLength2:=0

ColOffsetAryLength2:=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

RowOffsetAryLength2+Index:=RowOffsetStep*Index

ColOffsetAryLength2+Index:=ColOffsetStep*Index

RowOffsetAryLength2-Index:=-RowOffsetAryLength2+Index

ColOffsetAryLength2-Index:=-ColOffsetAryLength2+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

RowAryLength1+Index:=CenterRow+Index*RowOffsetStep

ColAryLength1+Index:=CenterCol+Index*ColOffsetStep

RowAryLength1-Index:=CenterRow-Index*RowOffsetStep

ColAryLength1-Index:=CenterCol-Index*ColOffsetStep

endfor

GrayValues2:=\[\]

copy_image(Image, DupImage)

for Index := 0 to Width1-1 by 1

get_grayval_interpolated (Image, RowAryIndex, ColAryIndex, 'bilinear', Grayval)

left:= int(floor(ColAryIndex))

right:=left+1

top:= int(floor(RowAryIndex))

bottom:=top+1

a:=ColAryIndex-left

b:=RowAryIndex-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(RowAryIndex),int(ColAryIndex),0)

AVGGrayVal:=Grayval

for Index2 := 1 to Length2 by 1

Row:=RowAryIndex+RowOffsetAryLength2+Index2

Col:=ColAryIndex+ColOffsetAryLength2+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:=RowAryIndex+RowOffsetAryLength2-Index2

Col:=ColAryIndex+ColOffsetAryLength2-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

GrayValues2Index:=AVGGrayVal

endfor

for Index := 0 to |GrayValues2|-1 by 1

GrayValuesDidffIndex:=GrayValues2Index-GrayValuesIndex

endfor

相关推荐
noipp40 分钟前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
程序员二叉1 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
青山木2 小时前
Hot 100 --- 轮转数组
java·数据结构·算法
徐小夕2 小时前
Loop Engineering 深度解析与实战指南(全网最全)
前端·算法·github
北域码匠3 小时前
SHA-1算法:安全哈希原理与应用解析
算法·c#·哈希算法
手写码匠4 小时前
手写 GraphRAG:从零实现图增强检索增强生成系统
人工智能·深度学习·算法·aigc
BomanGe14 小时前
NSK重载高刚性滚珠丝杠技术详解
经验分享·算法·规格说明书
Matrix_115 小时前
手机里的计算摄影:广角形变校正算法
人工智能·算法·智能手机·计算摄影
WBluuue5 小时前
数据结构与算法:有序表(二):跳表
数据结构·c++·算法·skiplist
x138702859576 小时前
c语言中srtlen(指针使用计算字符长度)、传值和传址调用
c语言·开发语言·算法·visual studio