T
Tomas D.
Guest
Hello,
I've come up with an issue, where I need to rotate the incoming video stream
image by +/-5 degrees with 0.5 degree step. The problem now is to identify
the most resource saving approach, which would also use the memory as
efficiently as possible, because I need to design a new PCB and do a
component selection.
The FPGA will be Altera Cyclone V with one hard memory controller (5CEFA2
device). I am trying to check if it will be sufficient to use one DDR3
memory chip or it's better to use two devices with 32bit memory bus, thus
increasing the bandwidth.
The incoming video stream is from the camera, which has a separate clock,
thus the frame buffer is a requirement.
I've come accross two options so far:
1) Image rotation by shearing:
https://www.ocf.berkeley.edu/~fricke/projects/israel/paeth/rotation_by_shearing.html
It seems like this is kinda easy approach, but it will require at least
three memory accesses. In a combination with regular 3 frames frame buffer,
I could end up doing 5 memory read/write cycles.
2) Image rotation by having lookup table of each pixel. If the lookup table
will be placed into the memory, then this will require one access to read
the location and another access to read the pixels and write them to the
moved location.
I am not sure which method is used the most common in the FPGA video
processing? Maybe you, experts, have good resources to read about this?
Thank you.
Regards
Tomas D.
I've come up with an issue, where I need to rotate the incoming video stream
image by +/-5 degrees with 0.5 degree step. The problem now is to identify
the most resource saving approach, which would also use the memory as
efficiently as possible, because I need to design a new PCB and do a
component selection.
The FPGA will be Altera Cyclone V with one hard memory controller (5CEFA2
device). I am trying to check if it will be sufficient to use one DDR3
memory chip or it's better to use two devices with 32bit memory bus, thus
increasing the bandwidth.
The incoming video stream is from the camera, which has a separate clock,
thus the frame buffer is a requirement.
I've come accross two options so far:
1) Image rotation by shearing:
https://www.ocf.berkeley.edu/~fricke/projects/israel/paeth/rotation_by_shearing.html
It seems like this is kinda easy approach, but it will require at least
three memory accesses. In a combination with regular 3 frames frame buffer,
I could end up doing 5 memory read/write cycles.
2) Image rotation by having lookup table of each pixel. If the lookup table
will be placed into the memory, then this will require one access to read
the location and another access to read the pixels and write them to the
moved location.
I am not sure which method is used the most common in the FPGA video
processing? Maybe you, experts, have good resources to read about this?
Thank you.
Regards
Tomas D.