# Corner tracker IP to Composable Overlays

**URL:** <https://discuss.pynq.io/t/corner-tracker-ip-to-composable-overlays/5375>\
**Category:** Support\
**Created:** [March 20, 2023, 11:19am UTC](https://discuss.pynq.io/t/corner-tracker-ip-to-composable-overlays/5375 "2023-03-20T11:19:06Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![hnkka](https://avatars.discourse-cdn.com/v4/letter/h/4da419/32.png) [@hnkka](https://discuss.pynq.io/u/hnkka)\
**Post date:** [March 20, 2023, 11:19am UTC](https://discuss.pynq.io/t/corner-tracker-ip-to-composable-overlays/5375/1 "2023-03-20T11:19:06Z")

</div>

Hello all,

I have been testing out the composable overlays and it seems to work fine. I would need to include the corner tracker functionality from the Vitis video library to the pipeline ( L3/examples/cornertracker). Could you give me some pointers how to get started?

I am running it on the PYNQ-Z2 board.

---

<div class="post-metadata">

**Author:** ![marioruiz](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/marioruiz/32/2177_2.png) [@marioruiz](https://discuss.pynq.io/u/marioruiz)\
**Post date:** [March 20, 2023, 1:47pm UTC](https://discuss.pynq.io/t/corner-tracker-ip-to-composable-overlays/5375/2 "2023-03-20T13:47:19Z")

</div>

Hi @hnkka,

Welcome to the PYNQ community.

Someone wrote a post about this

> [@Changing the IP in the Composable Pipeline](https://discuss.pynq.io/t/changing-the-ip-in-the-composable-pipeline/4301):
>
> These steps are to use new vitis vision-based functions or custom HLS and insert them into the Composable Pipeline. I hope this helps to unravel how to extend this great tool. Please let me know if you have feedback. High level overview: Create new IP Add the new IP to the Composable Pipeline Vivado design Build the new bitstream Edit the Composable Pipeline Python code to support the new function For this example, I will create a gammacorrection HLS block and insert it into the pipeline. …

I can provide guidance on the methodology, but not on the implementation/usage of that function part as this is outside the scope of this forum.

Mario

---

<div class="post-metadata">

**Author:** ![hnkka](https://avatars.discourse-cdn.com/v4/letter/h/4da419/32.png) [@hnkka](https://discuss.pynq.io/u/hnkka)\
**Post date:** [March 21, 2023, 9:33am UTC](https://discuss.pynq.io/t/corner-tracker-ip-to-composable-overlays/5375/3 "2023-03-21T09:33:17Z")

</div>

Thank you for the reply @marioruiz

I went through the guide you linked and it seems clear how to add a single functionality to the pipeline. I am just wondering how things work when I have these multiple different functions that the corner tracker uses. Namely:

- xf::cv::cornerHarris
- xf::cv:: cornersImgToList
- xf::cv::cornerUpdate
- xf::cv::pyrDown
- xf::cv::densePyrOpticalFlow

Should I add these functions separately to the pipeline and then connect them on the software side. Or does the Vitis library offer some kind of a wrapper for these functions which I can then add to the pipeline to get the full corner tracker functionality?

---

<div class="post-metadata">

**Author:** ![marioruiz](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/marioruiz/32/2177_2.png) [@marioruiz](https://discuss.pynq.io/u/marioruiz)\
**Post date:** [March 21, 2023, 12:45pm UTC](https://discuss.pynq.io/t/corner-tracker-ip-to-composable-overlays/5375/4 "2023-03-21T12:45:48Z")

</div>

Hi @hnkka,

You have to think about the available ports on the switch, how these functions connect to each other (data path) and the resources available in the design.

> Should I add these functions separately to the pipeline and then connect them on the software side. Or does the Vitis library offer some kind of a wrapper for these functions which I can then add to the pipeline to get the full corner tracker functionality?

This is something you have to decide yourself. You can wrap these primitives into a bigger kernels. Look up examples on the L2/L3 folder on the Vision libraries. Canny can be an example.

Mario
