vivado HLS ORB算法设计实现----质心求取主方向

来源:互联网 发布:mac 全角空格 编辑:程序博客网 时间:2024/05/17 19:15


    在采用HLS进行设计的时候,必须要先了解它本身架构的数据处理流程,比如hls:stream这个数据流结构,HLS里面所有的例程都是根据这种数据流进行处理的。

由于fast算法里面已经有实现的封装库了,所以不需要实现,省了好多的事,而金字塔里面也有现成的函数实现,接下来需要做的是进行主方向求取。这个主方向求法,是求知心来确定主方向。

     目前,实现方法是采用两个31*31的mask去滤波实现,求取m10和m01,然后调用atan函数求出角度。 m10实现如下:


void m01_filter(IMAGE_C1& src, IMAGE_S1& dst) {


    hls::Filter2D(src,dst, kernel, anchor);

}

其他的类似!!


方法2:

可以利用stream数据流 截留设计:仅供参考


int MS10=0,MS01=0;
int x=1178,y=129;

LOOp_ROWS:for(int row = 0; row < rows ; row++)
    {
    //#pragma HLS loop_flatten off
        LOOp_COLS:for(int col = 0; col < cols; col++)
        {
        //#pragma HLS pipeline II=1


            if(row < rows && col < cols) {
                //img_3 >> m10_src_data;
                //img_4 >> m01_src_data;
                img_src1 >> temp1;

            }
          if((114<=row&&row<=144)&&(1163<=col&&col<=1193))
          {


          }

           if((row==144)&&(col==1193))
           {
            float angle0=hls::atan2f(float(MS01),float(MS10));
            printf("MS10=%d\n",MS10);
            printf("MS01=%d\n",MS01);
            printf("angle0=%f\n",angle0);
           }


        }
    }


float angle0=hls::atan2f(MS01,MS10);
printf("MS10=%d\n",MS10);
printf("MS01=%d\n",MS01);
printf("angle0=%f\n",angle0);

原创粉丝点击