当两张图片中都检测到线段之后,就要进行线段的匹配。
回想特征点匹配时,是用描述子descriptor计算距离进行匹配,
直线也是这样。
直线的descriptor是用网络得到的。
input image:[1, 1, H, W],经过backbone net后为[1, 256, H/4, W/4]
descriptor_decoder由conv3x3 (s=1, p=1) 和conv1x1组成
得到的descriptor output为[1, 128, H/4, W/4]
那检测到的线段和这个descriptor有什么对应关系呢。
一条线段上有无穷多个点,首先还是要在线段上采样,按线段长度不同每条线段采2~5个点(最小间隔8个像素,多了也只采5个,少了最少也是2个)。
采点2个和5个个数不同,都按5个进行padding。
当然还得有个flag注明哪些是采样点,哪些是padding点。
然后就要用这些点的位置来从descriptor中采样了,
先把点的坐标(h, w)归一化,然后grid_sample采样(参考链接)。