boounion
工程师
工程师
  • 最后登录2021-12-02
  • 发帖数117
  • 金币2978枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
阅读:301回复:13

求教:关于矩形拟合的数据跳动的问题

楼主#
更多 发布于:2021-11-24 11:04

dev_set_draw ('margin')
read_image (Image, 'F:/Image/4.bmp')
gen_rectangle2 (Rectangle, 600, 500, rad(30), 300, 200)
gen_contour_region_xld (Rectangle, Contours, 'border')
fit_rectangle2_contour_xld (Contours, 'regression', -1, 0, 0, 3, 2, Row, Column, Phi, Length1, Length2, PointOrder)
smallest_rectangle2 (Rectangle, Row1, Column1, Phi1, Length11, Length21)


请教下,矩形拟合,用gen_rectangle2 (Rectangle, 600, 500, rad(30), 300, 200)模拟生成一个标准的矩形2,采用二种方法来拟合该矩形,获取的结果(300.6, 200.256),(300.733,200.239)与理论给出的值(300, 200),存在差异;
[boounion于2021-11-24 16:27编辑了帖子]
喜欢0

最新打赏:0人

。。。 。。。
285523641
技术员
技术员
  • 最后登录2021-12-03
  • 发帖数99
  • 金币700枚
  • 贡献勋章0枚
  • 社区居民
沙发#
发布于:2021-11-24 11:40
0.1个像素差,基本上不用考虑了,这个都是亚像素精度了。
boounion
工程师
工程师
  • 最后登录2021-12-02
  • 发帖数117
  • 金币2978枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
板凳#
发布于:2021-11-24 11:49
长半轴变换0.7Pixel,短半轴0.25pixel,换算成长轴是1.4pixel,短轴是0.5pixel,这个变换值,肯定是不可接受的
。。。 。。。
lion1986
助理工程师
助理工程师
  • 最后登录2021-12-03
  • 发帖数247
  • 金币1916枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
地板#
发布于:2021-11-24 12:52
boounion:长半轴变换0.7Pixel,短半轴0.25pixel,换算成长轴是1.4pixel,短轴是0.5pixel,这个变换值,肯定是不可接受的回到原帖
问题在gen_rectangle2,从理论值转实际像素点(像素点位置是整型离散数据)会损失信息。你把区域扩大,误差也是差不多这样。
set_system(['width','height'],[8192,8192])
gen_rectangle2(Rectangle,4096,4096,rad(30),3000,3000)
继业的king
技术员
技术员
  • 最后登录2021-12-03
  • 发帖数348
  • 金币768枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
4楼#
发布于:2021-11-24 14:18
学习。。。。。。。。
Aaron辉
助理工程师
助理工程师
  • 最后登录2021-12-03
  • 发帖数155
  • 金币1447枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
5楼#
发布于:2021-11-24 15:24
你不是比较错了??
你要比较的是Length1, Length2和Length11, Length21的差异,也就是300.6,200.256和300.7,200.239的差异,他们差异大概在0.1这精度就是系统精度了,不是300.6,200.256跟300,200的差异
boounion
工程师
工程师
  • 最后登录2021-12-02
  • 发帖数117
  • 金币2978枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
6楼#
发布于:2021-11-24 16:22
Aaron辉:你不是比较错了??
你要比较的是Length1, Length2和Length11, Length21的差异,也就是300.6,200.256和300.7,200.239的差异,他们差异大概在0.1这精度就是系统精度了,不是300.6,20...
回到原帖
标准的是300和200,gen_rectangle2 (Rectangle, 600, 500, rad(30), 300, 200)
。。。 。。。
Aaron辉
助理工程师
助理工程师
  • 最后登录2021-12-03
  • 发帖数155
  • 金币1447枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
7楼#
发布于:2021-11-24 17:25
boounion:标准的是300和200,gen_rectangle2 (Rectangle, 600, 500, rad(30), 300, 200)回到原帖
按你说的300和200  标准应该是 gen_rectangle2 (Rectangle, 600, 500, 0, 300, 200),当你用了角度rad(30),长度就已经存在变化了,变成300.7,200.239
boounion
工程师
工程师
  • 最后登录2021-12-02
  • 发帖数117
  • 金币2978枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
8楼#
发布于:2021-11-24 20:12
Aaron辉:按你说的300和200  标准应该是 gen_rectangle2 (Rectangle, 600, 500, 0, 300, 200),当你用了角度rad(30),长度就已经存在变化了,变成300.7,200.239回到原帖
当你用了角度rad(30),长度就已经存在变化了,变成300.7,200.239,这个有什么公式,或者资料说明?非常感谢;
。。。 。。。
JoyShow
技术员
技术员
  • 最后登录2021-12-03
  • 发帖数81
  • 金币793枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
9楼#
发布于:2021-11-24 21:34
原因就是region转contour丢失一部分精度,contour拟合再转region又丢失一部分精度。你不妨将角度设置成rad(0)再分析结果:为什么第一次创建的Rectangle面积是241001而不是600*400=240000?将Rectangle转换成Contours后的Length1, Length2分别是300.5和200.5,为什么不是300和200?最后计算Rectangle的最小外接矩形,为什么Length11, Length21分别是300.0和200.0?
我的五彩弦
技术员
技术员
  • 最后登录2021-12-03
  • 发帖数244
  • 金币211枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
10楼#
发布于:2021-11-25 07:36
学习。。。。。。。。
boounion
工程师
工程师
  • 最后登录2021-12-02
  • 发帖数117
  • 金币2978枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
11楼#
发布于:2021-11-25 15:39
JoyShow:原因就是region转contour丢失一部分精度,contour拟合再转region又丢失一部分精度。你不妨将角度设置成rad(0)再分析结果:为什么第一次创建的Rectangle面积是241001而不是600*400=240000?将R...回到原帖
gen_rectangle2 (Rectangle, 600, 500, rad(30), 300, 200),直接再进行区域smallest_rectangle2 (Rectangle, Row1, Column1, Phi1, Length11, Length21),拟合的数据是(300.733,200.239),为什么不是(300,200)
。。。 。。。
canicula
技术员
技术员
  • 最后登录2021-12-01
  • 发帖数112
  • 金币252枚
  • 贡献勋章0枚
  • 社区居民
12楼#
发布于:2021-11-25 19:30
我认为是因为gen_rectangle2 (Rectangle, 600, 500, rad(30), 300, 200)不可能生成长度为300,200的30度角的矩形region,像素格点只能是整个的,因为你没办法找到一个角度是有穷数,同事三条边又是整数的三角形,所以任何角度都不可能生成一个正好符合要求的region(除了0度和90度),必然是要通过删减或者增加一些来达到完整像素面积的。还有smallest_rectangle并不是拟合算子,它求得是最小外接矩形(能够包含整个形状的最小矩形),只会大于等于region,而前面生成的Rectangle只能说是一个努力近似方形的region,并不是真正的方形,所以最小外接矩阵会比这个坑坑洼洼的“锯齿”方形大一点,截了一张最小外接矩形和原来矩阵的图,应该会明显一些。

极度飞车.
初学者
初学者
  • 最后登录2021-12-01
  • 发帖数69
  • 金币10枚
  • 贡献勋章0枚
  • 社区居民
13楼#
发布于:2021-11-26 11:05
你从region转contur时,会有像素损失的
游客

返回顶部
支付

欢迎打赏,请选择打赏金额

  • 1元
  • 6元
  • 10元
  • 66元
  • 100元

支付即代表同意《本站支付协议》 有疑问请联系客服