[Claire Chen] and [Mark Zhao], students in [Bruce Land]’s ECE5760 class at Cornell, created a project aimed at the manufacturing sector: quality-checking manufactured products automatically by visually scanning a bunch of them and processing the pixels one at a time. Ordinarily, the time when the widget comes off the line is when you have to bring in actual people to inspect. This project uses morphological image processing to like dilation and erosion to look for flaws.
[Claire] and [Mark] created a simulated manufacturing line with a servo-driven belt that brings a series of Spree candies into the range of a camera, which scans them. The SoC with a Cyclone V FPGA and ARM Cortex-9 then processes the raw images to establish the object’s color, while running it through a couple of algorithms to look for defects. The FPGA tracks how many Sprees that have passed by as well as their color, maintaining a 99% success rate with a rate of 5-10 frames per second. The FPGA also looks at each blob of color as a collection of pixels, establishing connectivity to help to distinguish multiple Sprees touching each other.
Also be sure to check out [Claire] and [Mark]’s bike sonar project from a previous semester.
5-10FPS is pretty slow. I once wrote a frame differencer in Python with OpenCV and the outdated GTX 570 in that lab machine easily did well over 60FPS at 1080p. Probably not surprising when GPUs are designed for stuff like that.
99% success rate though. Maybe using a different FPGA they could get some speedup?
I agree. I’m pretty sure a Pi can do this too. In realtime at more fps. And that’d probably be easier to develop/test, etc. Anyway, sounds like a nice project to do with an FPGA if you want to.
You can’t critique a work without understanding the algorithm complexity. A mid-gpu plugged into a full computer isn’t a legitimate comparison to an embedded platform.
How does it handle use cases where they touch or are piled on top of each other?
I recall doing something similar back in the day using a FPGA but it was for genome analysis using DNA microarrays. It was so much cheaper than using a commercial unit.
I work at National Instruments and they have a demo based on FPGA doing the exact same thing at 96FPS.
Is it the same board?
Making comparisons with a student project from people learning the ropes to a professionally engineered commercial solution is pretty poor form. Yes, it can be done better and faster, but you’re not going to *have* those professional engineers if they’re criticised for not immediately being experts.
Hell, why even have this website. Just buy commercial products for everything!
My comment wasn’t about being done professionally or having better performance. It was about having this done already a long time ago. Engineering projects in the academy should be all about novelty. if it was done before with better performance, there is nothing novel about it.
As for the similarity of the board or using professional products, what is the big difference? FPGA is FPGA. both projects were done on pretty similar SoCs. These guys used Cyclone V and the Demo used Zynq.
That FPGA board should be flying. Probably implemented internet/manual/textbook examples together. That’s easy path, to get faster, you need actually do something yourself. 5-10FPS way too slow, for that board.
I think we’re all used to HaD proof reading standards, but this article is almost unintelligible. John, you can do better.
I honestly don’t see anything wrong. Well, for future corrections and/or suggestions:
https://hackaday.com/submit-a-tip/