Autor: Lenka Šoková

xlogin: xsokov01

## Úvod
Aplikácia je zameraná na detekciu zeleného laserového lúča v obraze, na základe ktorého následne vypočíta jeho trajektóriu a informácie o danom laserovom lúči vypíše na štandartný výstup. Na implementáciu sa použil jazyk C++ s použitím knižnice OpenCV pre spracovanie obrazu. Aplikácia podporuje súborové formáty JPEG a PNG.


## Spustenie
Pre prvotné spustenie aplikácie je potrebné ju preložiť pomocou skriptu `./build.sh`. Tento skript nainštaluje všetky potrebné závislosti a zároveň vytvorí spustiteľný súbor `./laser_detection`.

```bash
./build.sh
./laser_detection -d directory|-f file [-w write_directory] [-s scale]
```

## Popis parametrov

- Povinné parametry `-d` pre určenie adresaru alebo `-f` pre určenie súboru

- `-d` directory: Tento parameter -d určuje adresár obsahujúci vstupné súbory. 

- `-f` file: Určuje cestu k jednému konkrétnemu vstupnému súboru.

- `-w` write_directory: Voliteľný parameter určujúci cestu k adresáru, kam majú byť uložené výstupné súbory. Ak nie je určená cesta výstupné súbory sa uložia do priečinka `/result`. Výstupný súbor predstavuje pôvodoný obraz, v ktorom sa vyznačil nájdený laserový lúč.

- `-s` scale: Voliteľný parameter určujúci koeficient zmenšenia vstupného obrázku počas jeho spracovanie. Výstupný súbor bude mať pôvodné rozmery.

## Príklady spustenia

- Spracovanie jedného súboru:

```bash
./laser_detection -f /path/to/file.jpg
```

- Spracovanie všetkých súborov v adresári:

```bash
./laser_detection -d /path/to/directory
```

- Spracovanie súborov v adresári s uložením výstupov do iného adresára:

```bash
./laser_detection -d /path/to/directory -w /path/to/write_directory
```

- Spracovanie súborov v adresári s uložením výstupov do zložky /result :

```bash
./laser_detection -d /path/to/directory -w
```

- Spracovanie súborov v adresári so zmenšením vstupného obrázku o polovicu:

```bash
./laser_detection -d /path/to/directory -s 0.5
```

## Výstup
Pri úspešnej detekcii laserového lúča v obraze, program vypíše na výstup informácie o nájdenom laserovom lúči vo formáte:

```
"Názov_súboru_s_laserovým_lúčom.png"
- Line parameters:      k = hodnota_konštanty_k q = hodnota_konštanty_q
- Position in Image:	posX1 = hodnota_pozície_X1 posY1 = hodnota_pozície_Y1 posX2 = hodnota_pozície_X2 posY2 = hodnota_pozície_Y2
- Vector of line:	    (hodnota_vektora_X, hodnota_vektora_Y)
```

kde:

- "Názov_súboru_s_laserovým_lúčom.png" je názov súboru s detekovaným laserovým lúčom
- `k` a `q` sú konštanty získané zo smernicového tvaru laserového lúča
- `posX1`, `posY1`, `posX2` a `posY2` predstavujú pozíciu začiatku a konca laserovej čiary v obraze
- `(hodnota_vektora_X, hodnota_vektora_Y)` je vektor danej priamky, ktorá prechádza pozdĺž čiary laserového lúča.

Ak sa laserový lúč v obraze nezdetekuje program na výstup vypíše `No line detected`.


### Príklad výstupu
```bash
./laser_detection -f /path/to/file1.jpg

"file1.jpg"
- Line parameters:      k = 0.791206 q = -337.818
- Position in Image:	posX1 = 426 posY1 = 0 posX2 = 5051 posY2 = 3659
- Vector of line:	    (4625, 3659)
```

```bash
./laser_detection -f /path/to/file2.jpg

"file2.jpg"
No line detected
```



