# Finding small circles

**URL:** https://forums.openmv.io/t/finding-small-circles/1610
**Category:** OpenMV Boards
**Created:** [January 30, 2020, 10:16pm UTC](https://forums.openmv.io/t/finding-small-circles/1610 "2020-01-30T22:16:31Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![doodah](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@doodah](https://forums.openmv.io/u/doodah)
#### Post date: [January 30, 2020, 10:16pm UTC](https://forums.openmv.io/t/finding-small-circles/1610/1 "2020-01-30T22:16:31Z")

</div>

I am trying to locate white circles on a dark, consistent and static background. I was originally using a standard lens and find\_circles pretty successfully. I experimented with a fisheye and realized how much more area I can cover. The downside is that the circles are so small that the find\_circles algorithm doesn’t seem to find them (as low as a 2 pixel radius.) I looked at find\_blobs, but unlike the find\_circles method there is only a minimum blob size and no upper bound. I know I can filter after the fact with blob.area, but I was wondering if putting an upper bound to the find\_blobs would improve performance like it does withe find\_circles.

Thanks!

---

<div class="post-metadata">

### Author: ![kwagyeman](https://yyz1.discourse-cdn.com/flex029/user_avatar/forums.openmv.io/kwagyeman/32/4_2.png) [@kwagyeman](https://forums.openmv.io/u/kwagyeman)
#### Post date: [January 30, 2020, 10:40pm UTC](https://forums.openmv.io/t/finding-small-circles/1610/2 "2020-01-30T22:40:20Z")

</div>

A 2 pixel radius is not really seeable. Um, can you post some pictures from the camera?

Also, find\_circles is scheduled for optimization. We can get some massive gains on its performance.

---

<div class="post-metadata">

### Author: ![doodah](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@doodah](https://forums.openmv.io/u/doodah)
#### Post date: [January 30, 2020, 11:05pm UTC](https://forums.openmv.io/t/finding-small-circles/1610/3 "2020-01-30T23:05:26Z")

</div>

Picture attached with an arrow pointing at what I’m trying to locate. This is in my (messy) shop, but when it’s in its intended environment, the background will be very consistent.

If I can figure out how to reliably find something this small, then I can use a fisheye lens and reduce the camera count from 4 to 2 in my product. If I can’t then I need to use 4 cameras and will go back to find\_circles. I’d still like to contribute to it, and will send you an email.

Thanks!  
 ![test.jpg](https://canada1.discourse-cdn.com/flex029/uploads/openmv1/original/1X/873631b7ef5bb38d1e2853bc237eb10387571933.jpeg)

---

<div class="post-metadata">

### Author: ![kwagyeman](https://yyz1.discourse-cdn.com/flex029/user_avatar/forums.openmv.io/kwagyeman/32/4_2.png) [@kwagyeman](https://forums.openmv.io/u/kwagyeman)
#### Post date: [January 31, 2020, 6:17am UTC](https://forums.openmv.io/t/finding-small-circles/1610/4 "2020-01-31T06:17:03Z")

</div>

The circle detector technically can see those… but the noise floor from other things is so high that it will pickup a lot of other stuff too… i.e. there is a white patch near the top right that would be detected too.

Anyway, just use find\_blobs(). Regarding detection speed… the algorithm iterates over all blobs it finds and then applies the size filter on blobs. The lower bound doesn’t improve the speed, it just filters out smaller blobs from the result. If you want to make it go faster there’s a stride option that can speed it up but then it might miss small objects. Find\_blobs() hits 20 FPS on grayscale VGA however. it should be fast enough.
