Image Upscaling Hardware Accelerator is a hardware device that improves the quality of an image by increasing the number of pixels in the image, also known as padding, while maintain or improving image quality. This hardware accelerator is designed to speed up image upscaling process without the need for a CPU, and uses a Bicubic Interpolation algorithm to further enhance the quality of the upscaled image. It can be used in image-intensive applications that require high-quality images, such as CCTV cameras or other low-resolution cameras.
Our project aims to recreate the functionality of an image upscaler using VHDL, a hardware description language used to design and simulate digital systems. This will allow us to create a digital system that can perform image upscaling quickly and accurately, without the need for computing power from existing CPU.
When the user input the image, the image will first be turned into an array made out of the image's pixels rgb values. The hardware then will pass the array into the interpolation component. In the interpolation component, the rgb values of the image that is stored inside the array will then be upscaled through an algorithm called bicubic interpolation. The new rgb values will then be stored inside a new empty array that has been resized according to the scale of the upscaling. The new values inside of the array will then be outputted into an empty bmp file to show an upscaled version of the inputted image.
Our design works by reading a BMP image file and then storing the value of each pixels into an array. The program then pass the array through the hardware and outputs the upscaled version of the inputted BMP image file.
We tested our design by using a testbench file that reads a predetermined BMP image file that will be passed to the input. The design will be declared unsuccessful if the output BMP image file wasn't upscaled.
It took 2350 ps to upscale a 25x25 image into a 50x50
- Failed Test 1, 22x22 into 44x44 cropped to 22x22