Skip to content

AT95BL/Image-Convolution-in-Cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 

Repository files navigation

Project Task #2 - Optimization of Multimedia Content Processing Algorithm

Within this project task, the aim is to implement an optimized algorithm for processing multimedia content, focusing on either sound or image using the convolution operation. The implementation should adhere to the principles of object-oriented programming (OOP), SOLID principles, as well as principles of writing readable code and conventions of the used programming languages.

Program Features:

  • Parallelizability: The algorithm should be parallelizable to leverage the capabilities of multi-core processors for faster processing.
  • Configurability: Users should have the ability to manually specify the convolutional kernel when running the algorithm.
  • Command Line Interface: The program should accept paths to input and output files, as well as algorithm parameter values via the command-line argument.
  • Default Values: Provide meaningful default values for all command-line arguments for user convenience.
  • Performance Optimization: Implement algorithm optimization to achieve high performance, with a focus on efficient cache memory usage and the use of SIMD instructions for acceleration.

Documentation and Performance Analysis:

  • Testing: Validate the correctness of the algorithm through unit tests to ensure its functionality.
  • Performance Measurement: Conduct runtime measurements of the algorithm for different input sizes and various input data scenarios.
  • Optimization: Graphically represent measurement results before and after applying optimizations and parallelization.
  • Report: Prepare a report containing a problem description, description of the basic algorithm, description of optimized algorithm variants, details of performance measurement, hardware used for measurements, graphical analysis of results, and conclusion.
  • Automation: Include a script that automatically runs all measurements mentioned in the report and saves the results to a file for easier reproduction.

Github Project Description:

This repository contains an implementation of an optimized algorithm for processing multimedia content, along with its accompanying report documenting the optimization process and performance analysis. The implementation is done following OOP principles and SOLID principles, using language-specific programming conventions. Additionally, a script for automated performance measurement of the algorithm and result storage is provided. Unit tests are included with the implementation to ensure algorithm correctness.

Projektni zadatak br. 2 - Optimizacija algoritma za obradu multimedijalnog sadržaja

U okviru ovog projektnog zadatka, cilj je implementirati optimizovan algoritam za obradu multimedijalnog sadržaja, sa fokusom na zvuk ili sliku korišćenjem operacije konvolucije. Implementacija treba da bude u skladu sa principima objektno orijentisanog programiranja (OOP), SOLID principima, kao i principima pisanja čitljivog koda i konvencija korišćenih programskih jezika.

Funkcionalnosti programa:

  • Paralelizibilnost: Algoritam treba da bude paralelizibilan kako bi se iskoristile mogućnosti višejezgarnih procesora za bržu obradu.
  • Konfigurabilnost: Korisnik treba da ima mogućnost ručnog specificiranja konvolucionog kernela prilikom pokretanja algoritma.
  • Komandna linija: Program treba da prihvata putanje do ulaznog i izlaznog fajla, kao i vrednosti parametara algoritma preko argumenta komandne linije.
  • Podrazumevane vrednosti: Obezbediti smislene podrazumevane vrednosti za sve argumente komandne linije radi praktičnosti korisnika.
  • Optimizacija performansi: Implementirati optimizaciju algoritma kako bi se postigle visoke performanse, uz poseban fokus na efikasno korišćenje keš memorije i upotrebu SIMD instrukcija radi ubrzanja.

Dokumentacija i analiza performansi:

  • Testiranje: Isprobati ispravnost algoritma kroz jedinične testove kako bi se osigurala njegova funkcionalnost.
  • Merenja performansi: Izvršiti merenja vremena izvršavanja algoritma za različite veličine ulaza i različite slučajeve ulaznih podataka.
  • Optimizacija: Grafički predstaviti rezultate merenja pre i posle primene optimizacija i paralelizacije.
  • Izveštaj: Pripremiti izveštaj koji sadrži opis problema, opis osnovnog algoritma, opis optimizovanih varijanti algoritma, detalje o merenju performansi, hardver korišćen za merenja, grafičku analizu rezultata i zaključak.
  • Automatizacija: Priložiti skriptu koja automatski pokreće sva merenja navedena u izveštaju i čuva rezultate u fajlu radi lakše reprodukcije.

Github opis projekta:

Ovaj repozitorijum sadrži implementaciju optimizovanog algoritma za obradu multimedijalnog sadržaja, kao i pripadajući izveštaj koji dokumentuje proces optimizacije i analizu performansi. Implementacija je realizovana u skladu sa principima OOP i SOLID principima, uz korišćenje konvencija programskih jezika. Takođe, priložena je skripta za automatsko merenje performansi algoritma i čuvanje rezultata. Uz implementaciju su priloženi i jedinični testovi kako bi se osigurala ispravnost algoritma.

About

A C++ program for image convolution, image processing and algorithm comparison.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •