UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Adventurer
Adventurer
1,280 Views
Registered: ‎09-08-2017

Seeking FPGA information

Jump to solution

I am a graduate student, and I was recently looking for an article on how to implement image processing with an FPGA. I searched for some English articles in the electronic journal, and read one or two articles, but these articles did not involve too much in terms of FPGA image processing. Is there any information in this regard? Can you share it with me? Thank you very much for your reply.

Tags (1)
0 Kudos
1 Solution

Accepted Solutions
Xilinx Employee
Xilinx Employee
1,838 Views
Registered: ‎08-01-2008

Re: Seeking FPGA information

Jump to solution
FPGA is digital system which can process image data inside FPGA. You need to use interface which can capture image, FPGA can process Image data based on your pixel operation i.e. Pixel, matrix, inter frame.

Here are some IPs available for image processing
https://www.xilinx.com/products/intellectual-property/ef-di-vid-img-ip-pack.html
https://www.xilinx.com/products/intellectual-property/audio-video-and-image-processing/nav-image-processing.html

Please share your application/block diagram for better understanding of your application

check this XAPP
https://www.xilinx.com/support/documentation/application_notes/xapp794-1080p60-camera.pdf

https://embeddedthoughts.com/2016/07/29/driving-a-vga-monitor-using-an-fpga/

Thanks and Regards
Balkrishan
--------------------------------------------------------------------------------------------
Please mark the post as an answer "Accept as solution" in case it helped resolve your query.
Give kudos in case a post in case it guided to the solution.
6 Replies
Xilinx Employee
Xilinx Employee
1,839 Views
Registered: ‎08-01-2008

Re: Seeking FPGA information

Jump to solution
FPGA is digital system which can process image data inside FPGA. You need to use interface which can capture image, FPGA can process Image data based on your pixel operation i.e. Pixel, matrix, inter frame.

Here are some IPs available for image processing
https://www.xilinx.com/products/intellectual-property/ef-di-vid-img-ip-pack.html
https://www.xilinx.com/products/intellectual-property/audio-video-and-image-processing/nav-image-processing.html

Please share your application/block diagram for better understanding of your application

check this XAPP
https://www.xilinx.com/support/documentation/application_notes/xapp794-1080p60-camera.pdf

https://embeddedthoughts.com/2016/07/29/driving-a-vga-monitor-using-an-fpga/

Thanks and Regards
Balkrishan
--------------------------------------------------------------------------------------------
Please mark the post as an answer "Accept as solution" in case it helped resolve your query.
Give kudos in case a post in case it guided to the solution.
Adventurer
Adventurer
1,242 Views
Registered: ‎09-08-2017

Re: Seeking FPGA information

Jump to solution
First, thank you for your reply. Second, in fact, I did not know much about FPGAs; my mentor asked me to think about how to implement simple template matching using FPGAs. I've tried template matching on HLS before, but because HLS processing is done in streams, that is, loading only the original image, the template is not easy to come in, which limits the adjustability of the template.
0 Kudos
Scholar u4223374
Scholar
1,211 Views
Registered: ‎04-26-2015

Re: Seeking FPGA information

Jump to solution

The normal approach to template matching in HLS would be to store your template in block RAM, written over AXI Lite (or read from system RAM by an AXI Master). Then you stream the main image in and compare it to the on-chip template.

 

If the template is very large then you might have to pull it in from external RAM too. This is not a nice solution, but it's about the best option available.

Adventurer
Adventurer
1,187 Views
Registered: ‎09-08-2017

Re: Seeking FPGA information

Jump to solution
I totally agree with you. Now I have an idea: I do not let the original image completely loaded in, but only a few lines into the stream (for example: only load three lines); and then use the template image and three lines of the original image matching; Finally, put the result of each convolution sum in a register. I do not know whether this idea can be realized, but also hope you give some advice.
0 Kudos
Scholar u4223374
Scholar
1,177 Views
Registered: ‎04-26-2015

Re: Seeking FPGA information

Jump to solution

I've done it that way, but I've actually had more success with a rather simpler approach: just buffer enough lines of the image to do a full comparison. If your template is (for example) 20x20 pixels, you'll have to buffer 20 image lines. Then on each cycle you just apply the matching operation (whatever method you choose to use; NCC, SAD, etc). I used this method because for me it was easier to write and more space efficient (with 8-bit greyscale images it's cheaper to store extra pixels than to store all your in-progress convolution/correlation sums). However, it turns out that HLS is very good at optimizing this operation, and so it also turned out to be both small (in terms of hardware) and fast (I think the claimed top speed was something like 400MHz on a 7-series chip).

 

Using your method, where you get one line of the image at a time, you have to store the in-progress correlation sums. For a sample application (10x10 template, SAD, 8-bit greyscale image) the correlation sum is a signed 16-bit value (each pixel is 8-bit minus 8-bit to give 9-bit signed, and summing a 10x10 array adds 7 bits). Then you have to store 10 rows of this, although each row can potentially be only 630 pixels long if you ignore incomplete correlations. 10*630*16-bit is a much more expensive RAM than 10*640*8-bit.

 

Adventurer
Adventurer
1,165 Views
Registered: ‎09-08-2017

Re: Seeking FPGA information

Jump to solution

As you said, my idea is to load only a few lines of image data, which would come at a greater cost. In order to realize this idea, I must figure out the following aspects:

  1. How data come in, how much FPGA resources will be used.

  2. As a result of template and a few lines of image data matching operation, will continue to get the result of convolution and these results should be cached in a container.

What I want to know more is the use of resources in the FPGA.

0 Kudos