blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
2
SLEDOVAŤ BLOG
martinius96 (at) gmail.com
deadawp



Zväčšenie fotografie = strata kvality?
pridal deadawp 25.12. 2025 o 22:29 (naposledy upravené 25.12. 2025 o 22:35)

Pixelová grafika je bežne využívaná pre fotografie z hľadiska dobrej kvality voči veľkosti. Najpoužívanejšie formáty sú .jpg (JPEG) či .png. Výhodou .png je možnosť zachovania priehľadnosti pozadia a výhodou .jpg je dobrá kompresia, vďaka čomu máte veľkú fotografiu uloženú v relatívne malom balíku dát. Problém u pixelovej grafiky nastáva, ak máte obrázok, či fotografiu a chcete ju zväčšiť. Pri štandardnom zväčšení cez program typu Skicár docielite rozostrenie, nakoľko zväčšenie spôsobí zväčšenie pixelu na viac pixelov, nevyhladzuje hrany a tým vzniká kockatý obrázok.

Sú aj alternatívne spôsoby a to napríklad prevedenie .jpg do .svg, teda vektorového formátu, ktorý bude obrázok definovať krivkami, tvarmi - matematicky. Vektorový formát ale pri svojom vytváraní zníži kvalitu pôvodnej .jpg fotografie a rovnako tak sa zníži aj kvalita sekundárneho prevedenia (konverzie) .svg na .jpg. Nevýhodou u .svg formátu v takomto prípade bude aj veľkosť, ktorá bude niekoľko-násobná oproti .jpg.

Aby sme sa vyhli viacnásobnej konverzii, musíme použiť metódu na vyhladenie hrán, napríklad algoritmus, ktorý zníži degradáciu fotografie na prijateľnú úroveň. Samotné zväčšenie obrázka sa tak zrealizuje v jednom kroku. Preto si dnes porovnáme rôzne algoritmy pre zväčšenie fotografie dostupné v MATLAB-e a tiež metódy, ktoré ponúkajú on-line nástroje, či nástroj operačného systému Windows. Vo výsledku si porovnáme aj odchýlku od pôvodného obrázku.

Originálny (referenčný) obrázok, ktorý použijeme bude zo zdroja:
https://img.ephoto.sk/images/content/articles/d3701d1ed8051f5a4ff5648aa7ffff4dc8e5cb84.jpg, ktorý je z blogu
https://www.ephoto.sk/fotoskola/clanky/o-fotografii/:


Tento obrázok má rozlíšenie 870 x 489 px. Obrázok nie je dostatočne veľký, napríklad pre pozadie pracovnej plochy. Preto budeme realizovať zväčšenie 2-násobné (1740 x 978 px) a aj 4-násobné (3480 x 1956 px) pre citeľné preukázanie rozdielu medzi použitými metódami, či algoritmami zväčšenia.

Pre to, aby ste videli skutočnú kvalitu obrázku si ho musíte otvoriť v reálnej veľkosti. Otvorte si ho pravým kliknutím myši s otvorením obrázka na novej karte. Obrázky v článku sú prispôsobené šírke stránky na 620 px, čo môže skresľovať kvalitu, keďže je obrázok zmenšovaný na stránku a tým sa môže relavívne zlepšiť jeho čitateľnosť.

Skicár
Jednoduchý editor obrázok v operačnom systéme Windows, vhodný len pre najzákladnejšie operácie. Myslel som si, že Skicár používa najjednoduchší algoritmus - "Nearest Neighbor" pre upscaling obrázkov, kde pôvodný pixel len preberie farbu susedného pixelu a tak dochádza z dôvodu nevyhladenia hrán ku kockovitému priebehu. Takto to aj bolo, ale v skorších verziách Windowsu. Dnes už Skicár používa "edge-aware adaptívnu interpoláciu", čím vyhladzuje aj hrany a výsledný obrázok je blízky originálu.

Originál

2x Zväčšenie - "edge-aware adaptívna interpolácia"

4x Zväčšenie - "edge-aware adaptívna interpolácia"

Photopea
Online nástroj ako ekvivalent Photoshopu. Umožňuje jednoduché, ale aj zložité operácie s obrázkami, podporuje mnoho formátov importu i exportu. Pri zväčšení obrázka máme na výber celkom 3 metódy, ktoré vieme použiť za predpokladu zapnutej funkcie Resample, keďže sa bude meniť počet pixelov a tie je potrebné prepočítať.

K dispozícii sú aj základné algoritmy, napr. "Nearest Neighbor" pre jednoduché zväčšenie, presne to, čo umožňuje Skicár ešte vo Windowse XP. Výber metódy realizujeme skrz hornú záložku, kde vyberieme Obraz --> Veľkosť obrazu, alebo cez klávesovú skratku Alt + Ctrl + I (ako Igor). Zobrazí sa kontextové okno s aktuálnou veľkosťou obrázka, jeho DPI a tiež možnosť výberu príslušného algoritmu.

Originál

2-násobné zväčšenie - "Nearest Neighbor"

4-násobné zväčšenie - "Nearest Neighbor"


Ďalšie dva algoritmy umožňujú dosiahnutie vyhlazovania. Je tu dostupný "Bilinear", ktorý funguje na princípe bilineárnej interpolácie, ktorá využíva celkom 4 susedné pixely, ktoré priemeruje  (vážený priemer) a ich hodnotu nastavuje na pixel. To zaručí lepší prechod a menej kockovaný priebeh v porovnaní so zväčšovaním obrázku skrz "Nearest Neighbor" algoritmus.

Originál

2-násobné zväčšenie - "Bilinear"

4-násobné zväčšenie - "Bilinear"

Posledným algoritmom, ktorý Photopea pre zväčšenie obrázka ponúka je "Bicubic Sharper". Využíva bikubickú interpoláciu spolu s dodatočným doostrovaním po resamplingu. Pre farbu pixelu sa využíva až 16 susedných pixelov, čo zaručuje dobrý kontrast., hladké prechody aj pri väčšom zväčšení pôvodného obrázka. 

Originál

2-násobné zväčšenie - "Bicubic Sharper"


4-násobné zväčšenie - "Bicubic Sharper"

MATLAB je univerzálny nástroj, ktorý sa dá použiť na čokoľvek. Obsahuje metódy aj na prácu s obrázkami, vrátane zväčšenia obrázka s aplikáciou určitého algoritmu, ktoré natívne ponúka. Pre prácu s MATLAB-om nemusíte byť len študent univerzity. Nemusíte si ho ani kupovať, nakoľko základný MATLAB je dostupný aj on-line na stránkach Mathworksu, pričom má obmedzenie na mesačné použitie maximálne 20 hodín, čo na občasné použitie úplne postačuje.

Využijeme algoritmus Lanczos3, ktorý je jeden z najlepších algoritmov najmä na obrázky, kde sa vyžaduje zachovanie dobrých prechodov, ale aj ostrých hrán, napríklad texty a pod, čím sa zaručuje ich čitateľnosť aj po zväčšení. Využíva 6x6 susedných pixelov (celkom teda 36), pričom každý pixel má svoju samostatnú váhu podľa funkcie (Lanczos / windowed sinc), teda bližší pixel v rade má vyššiu váhu ako vzdialenejší, ktorý je tiež zahrnutý. To zaručuje plynulejší prechod a menej kockovaný výsledok. Ako možnú nevýhodu môžeme u Lanczos3 algoritmu spomenúť, že sa tu môže objavovať tzv. halo efekt okolo hrán, čo je ale efekt vychádzajúci priamo z podstaty algoritmu, nie je to chyba.

2-násobné zväčšenie - Lanczos3 v MATLABE

4-násobné zväčšenie - Lanczos3 v MATLABE

Aby sme nezabudli aj na AI nástroje, využil som online službu Bigjpg, ktorá umožňuje 2 aj 4-násobné zväčšenia brázka, pričom ponúka aj algoritmus na redukciu šumu. Využil som teda 2 aj 4-násobné zväčšenie pôvodného obrázka, vrátane maximálneho potlačenia šumu. V oboch prípadoch bolo potrebné počkať násobne dlhší čas v porovnaní s inými algoritmami a metódami, ktoré sme predtým používali.

Originál


2-násobné zväčšenie - Bigjpg (maximálna redukcie šumu)

4-násobné zväčšenie - Bigjpg (maximálna redukcie šumu)

Výsledné porovnanie
Je ťažké na základe obrázkov v článku určiť, nakoľko sú zhodné s pôvodným - originálnom obrázkom aj po zväčšení. Využijeme preto MATLAB a zistíme pri porovnaní obrázkov percentuálnu zhodu SSIM + technické metriky PSNR / MSE, ktoré nám lepšie povedia, ako veľmi sú obrázky zhodné. Zmenšenie zväčšených obrázkov vykonáme rovnakým algoritmom u všetkých a to bicubic, pričom chyba spôsobená algoritmom bude ekvivalentná u všetkých.

SSIM – Structural Similarity Index porovná jas (luminance), kontrast, štruktúru (tvary, hrany), teda metóda najbližšie ľudskému vnímaniu obrazu a rozdielov medzi nimi. Preto obrázky v MATLAB scripte prevedieme do grayscale režimu (odtieňov sivej). Výstupné rozsahy: 0.98–1.00 takmer identické 0.95–0.98 veľmi dobrý upscale, 0.90–0.95 viditeľné rozdiely, < 0.90 degradácia detailov (zlá kvalita).

MSE je strednou kvadratickou chybou, ktorá určí priemernú kvadratickú chybu medzi pixelmi, matematickú chybu, výsledkom bude 0 pre zhodnosť, alebo väčšie číslo, tým väčšia odchýlka. PSNR – Peak Signal-to-Noise Ratio je logaritmickou verziou MSE a prepočíta ho na decibely (dB), kde rozsahy reprezentujú: > 40 dB takmer identické, 30–40 dB dobré, < 30 dB viditeľná strata.

Skicár - "edge-aware adaptívna interpolácia":
2x
SSIM: 0.9948  (99.48 %)
PSNR: 40.34 dB
MSE : 0.000092

4x
SSIM: 0.9948  (99.48 %)
PSNR: 40.45 dB
MSE : 0.000090

Photopea - "Nearest Neighbor"
2x
SSIM: 0.9972  (99.72 %)
PSNR: 42.93 dB
MSE : 0.000051

4x
SSIM: 0.9967  (99.67 %)
PSNR: 41.78 dB
MSE : 0.000066

Photopea - "Bilinear"

2x
SSIM: 0.9873  (98.73 %)
PSNR: 36.32 dB
MSE : 0.000233

4x
SSIM: 0.9894  (98.94 %)
PSNR: 36.96 dB
MSE : 0.000201


Photopea - "Bicubic Sharper"
2x
SSIM: 0.9896  (98.96 %)
PSNR: 37.38 dB
MSE : 0.000183

4x
SSIM: 0.9904  (99.04 %)
PSNR: 37.55 dB
MSE : 0.000176

MATLAB - "Lanczos3"
2x
SSIM: 0.9936  (99.36 %)
PSNR: 41.80 dB
MSE : 0.000066

4x
SSIM: 0.9962  (99.62 %)
PSNR: 42.92 dB
MSE : 0.000051

Bigjpg - online AI nástroj (maximálna redukcia šumu)
2x
SSIM: 0.9786  (97.86 %)
PSNR: 33.04 dB
MSE : 0.000497

4x
SSIM: 0.9798  (97.98 %)
PSNR: 39.33 dB
MSE : 0.000117

Záver
Ani jeden z použitých algoritmov nie je bezstratový, to je logické z pohľadu pixelovej grafiky. U všetkých algoritmov ale môžeme konštatovať veľmi dobré vlastnosti a uspokojivý výsledok. Aj pri zväčšení pôvodného obrázku na veľkosť pozadia pracovnej plochy bude obrázok relatívne ostrý bez ohľadu na použitú metódu, algoritmus.

Najhoršie z testovaných obstál AI nástroj Bigjpg, ktorý značne zaostával za priemerom a je prezentovaný ako "Bigjpg - AI Super-Resolution lossless image enlarging / upscaling tool using Deep Convolutional Neural Networks". Vŕtalo mi to v hlave a tak som skúsil ešte jeden test s týmto nástrojom. Upscaling prebehol rovnako, avšak zvolil som možnosť nepoužívať redukciu šumu. Výsledky boli diametrálne odlišné:

2x - Bigjpg (bez redukcie šumu)
SSIM: 0.9976  (99.76 %)
PSNR: 48.20 dB
MSE : 0.000015

4x - Bigjpg (bez redukcie šumu)
SSIM: 0.9984  (99.84 %)
PSNR: 47.16 dB
MSE : 0.000019

Bigjpg vystrelil z posledného miesta na prvé. V takomto nastavení Bigjpg môžeme hovoriť o najlepšej dosiahnutej kvalite. Redukcia šumu sa ukázala ako kameň úrazu. Častokrát býva u podobných nástrojov nutnosť sa zaregistrovať, či si dokonca službu predplatiť. V tomto prípade Bigjpg neukladá obrázky v prípade, ak nie ste zaregistrovaný. Teda pri opätovnej návšteve webu nástroja musíte znova zadať vstupný obrázok a nechať ho prekonvertovať na predvolenú veľkosť. Bigjpg tak hodnotím veľmi pozitívne.

Z pohľadu ostatných nástrojov si veľmi dobre viedol MATLAB spolu s algoritmom Lanczos3, veď práve na takýto účel je navrhnutý. U Photopea nástroja a algoritmu Nearest Neighbor som očakával ďaleko horšie výsledky. Pravdepodobne nešlo o čistý algoritmus, ale aj nejaký sekundárny nástroj, či vyhladenie hrán.

MATLAB script pre upscale obrázka s algoritmom Lanczos3: 
https://github.com/martinius96/MATLAB-scripty/blob/main/Praca_s_obrazkami/Upscale_lanczos3.m

MATLAB script pre porovnanie obrázkov SSIM, PSNR, MSE: 
https://github.com/martinius96/MATLAB-scripty/blob/main/Praca_s_obrazkami/Porovnanie_SSIM_PSNR_MSE.m

 



Prístupov 43
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDOVAŤ
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Zväčšenie fotografie = strata kvality?
[ 25.12.2025] (príspevkov 0)
Výber 12V gélovej batérie pre zálohu obe...
[ 17.12.2025] (príspevkov 0)
Ako zostaviť DIY kit RFID DOMINATOR 2.0?
[ 17.11.2025] (príspevkov 0)
ThingsBoard - generátor dát, HTTP reques...
[ 13.11.2025] (príspevkov 0)
GPS LoRa monitoring - ThingsBoard
[ 9.11.2025] (príspevkov 0)
Nie je Li-Ion, ako Li-Ion...
[ 3.11.2025] (príspevkov 0)
ThingSpeak - Watmonitor integrácia
[ 28.10.2025] (príspevkov 0)
Ubidots - Watmonitor integrácia
[ 26.10.2025] (príspevkov 0)
Čo som postrehol v Thajsku?
[ 20.10.2025] (príspevkov 0)
ThingsBoard - Watmonitor HTTP integrácia
[ 18.10.2025] (príspevkov 0)