Масштабування зображення
Масштабува́ння зобра́ження — зміна розміру зображення зі збереженням пропорцій. Під масштабуванням мається на увазі як збільшення (англ. scaling up), так і зменшення (англ. scaling down) масштабу зображення. Це поняття широко застосовується в комп'ютерній графіці, обробці відео, зокрема, реалізується на апаратному рівні в телевізорах і відеопрогравачах.
При цьому, залежно від типу графіки (растрова, векторна), масштабування проводиться різними алгоритмами. Масштабування векторних зображень відбувається без втрат якості зображення, але при збільшенні растрових зображень може відбуватися втрата якості: можливі суттєві викривлення геометрії дрібних деталей і поява помилкових візерунків на текстурах. Тому при масштабуванні растрових зображень використовуються спеціалізовані алгоритми, що згладжують небажані ефекти.
Масштабування зображень у математиці
Масштабування зображень можна трактувати як форму передискретизації зображення, або реконструкції зображення з точки зору теореми про вибірку Найквіста. Згідно з теоремою, зменшення вибірки для зображення меншого розміру порівняно з оригіналом з більшою роздільною здатністю, може бути здійснено лише після застосування відповідного 2D фільтра згладжування для запобігання згладжування артефактів. Зображення зводиться до інформації, яку може нести менше зображення. У інших випадках фільтр відновлення замінює фільтр згладжування.
- Оригінальне зображення розміру 160х160 пікселів
- Вихідне зображення в просторово-частотній області
- Зображення із застосованим до нього двовимірним фільтром низьких частот, розміру 160х160 пікселів
- Зображення із накладеним фільтром у просторово-частотній області
- Низькочастотне зображення із накладеним на нього фільтром, зменшене до розміру 40x40 пікселів.
- Зображення оброблене методом Фур’є, розміру 160x160 пікселів (правильна реконструкція)
- Зображення оброблене методом Фур’є, розміру 160x160 пікселів (з аліасингом)
Алгоритми масштабування
Детальніші відомості з цієї теми ви можете знайти в статті Порівняльна галерея алгоритмів масштабування зображень.
Розмір зображення можливо змінювати за допомогою таких алгоритмів:
Інтерполяція методом найближчого сусіда
Одним із найпростіших методів збільшення розміру зображення є інтерполяція методом найближчого сусіда, який замінює кожен піксель кількома пікселями одного кольору: отримане зображення більше, ніж оригінал, і зберігає всі деталі оригіналу, але має (як правило, небажані) зубці. Діагональні лінії, наприклад, показуються «сходинками».
Білінійні та бікубічні алгоритми
Білінійна інтерполяція згладжує значення кольорів пікселів, навіть якщо оригінальне зображення має дискретні переходи. Алгоритм зменшує контраст зображення. Найкраще підходить для зображень з неперервним тоном. Бікубічна інтерполяція дає істотно кращі результати у порівнянні з попереднім методом.
Інтерполяційна формула Віттекера — Шеннона та фільтр Ланцоша
Інтерполяційна формула Віттекера — Шеннона забезпечує найкращу з можливих реконструкцій для абсолютно обмеженої смуги сигналу. На практиці, реальні цифрові зображення не повністю відповідають припущенням, пов’язаним із повторною дискретизацією. Фільтр Ланцоша дозволяє отримувати зображення високої чіткості, але час обробки значно збільшується. Також при обробці можлива поява небажаних артефактів типу «дзвону». Якщо при білінійній інтерполяції для кожного нового пікселя ми розглядали 4 вихідних пікселі, то тепер їх може бути 9 (3x3), 25 (5x5), 49 (7x7) і т.д. Оптимальними за якістю і швидкістю є розміри 2 і 3.
Box sampling
Однією зі слабких сторін білінійних, бікубічних та пов'язаних з ними алгоритмів є те, що вони відбирають певну кількість пікселів. При зменшенні масштабу нижче певного порогу, наприклад, більше, ніж удвічі, для всіх алгоритмів двовибіркової вибірки, алгоритми відбиратимуть сусідні пікселі, що призводить до втрати даних та спричинення грубих результатів. Тривіальним розв'язанням цієї проблеми є вибірка блоком, яка полягає в тому, щоб розглянути цільовий піксель блоком на вихідному зображенні та відібрати всі пікселі всередині нього. Це гарантує, що всі вхідні пікселі роблять внесок у вихід. Основна слабкість цього алгоритму полягає в тому, що його важко оптимізувати.
MIP-текстурування
Метод текстурування, що використовує кілька копій однієї текстури з різною деталізацією. Алгоритм MIP-текстурування є досить швидким і його легко оптимізувати. Використовується у багатьох платформах, наприклад OpenGL. Недоліком є збільшення розміру зображення.
Методи перетворення Фур'є
Метод інтерполяції, заснований на перетворенні Фур'є. Накладає частотну область на нульові компоненти тим самим зменшуючи артефакти дзвінка. Окрім доброго збереження (або відновлення) деталей, недоліком є поява артефактів від лівої межі до правої межі (і навпаки).
Кутова інтерполяція
Алгоритми кутової інтерполяції спрямовано на збереження країв зображення після масштабування, на відміну від інших алгоритмів, які можуть вводити небажані артефакти. До прикладів алгоритмів для цього завдання належать New Edge-Directed Interpolation (NEDI)[1][2], Edge-Guided Image Interpolation (EGGI)[3], Iterative Curvature-Based Interpolation (ICBI)[4], та Directional Cubic Convolution Interpolation (DCCI)[5]. Аналіз 2013 року показав, що DCCI мав найкращі результати ніж PSNR та SSIM на серії тестових зображень.[6]
HQX
Для збільшення зображень з низькою роздільною здатністю та/або кількома кольорами (як правило, від 2 до 256 кольорів) кращі результати можуть бути досягнуті за допомогою алгоритмів масштабування hqx (англ. high quality scale) або інших алгоритмів масштабування піксельних зображень. Вони згладжують гострі краї та зберігають високий рівень деталізації.
Векторизація
Векторизація пропонує інший підхід. Спочатку створюється незалежне від зображення векторне представлення графіки для масштабування. Після масштабування векторне зображення конвертується в растрове з бажаною роздільною здатністю. Цей метод використовують Adobe Illustrator, Live Trace та Inkscape[7]. Масштабована векторна графіка добре підходить для простих геометричних зображень, тоді як фотографії погано справляються з векторизацією через свою складність.
Глибинні згорткові нейронні мережі
Цей метод використовує машинне навчання для отримання детальніших та чіткіших зображень, таких як фотографії та складні ілюстрації. Програми, що використовують цей метод: waifu2x, Reshade.
Застосування
Загальні
Масштабування зображень використовується, серед інших програм, у веббраузерах[8], редакторах зображень, засобах перегляду зображень та файлів, програмних лупах, цифровому збільшенні, процесі генерації ескізів та при виведенні зображень через екрани або принтери.
Відео
Збільшення зображень використовують для домашніх кінотеатрів, а саме для пристроїв виводу, готових до HDTV, із вмістом із роздільною здатністю PAL, наприклад з DVD-програвачем. Збільшення масштабу виконується в режимі реального часу, і вихідний сигнал не зберігається.
Масштабування в стилі піксель-арт
Оскільки піксельна графіка зазвичай має низьку роздільну здатність, вона покладається на ретельне розміщення окремих пікселів, часто з обмеженою палітрою кольорів. Це призводить до графіки, яка спирається на стилізовані візуальні сигнали для визначення складних фігур з невеликою роздільною здатністю, аж до окремих пікселів. Це робить масштабування піксельних зображень особливо складною проблемою.
Для роботи з піксельною графікою було розроблено спеціалізовані алгоритми[9], оскільки традиційні алгоритми масштабування не враховують перцептивні сигнали.
Оскільки типовим застосуванням є покращення зовнішнього вигляду відеоігор на емуляторах аркад та консолей, багато алгоритмів призначено для роботи в режимі реального часу з невеликими вхідними зображеннями зі швидкістю 60 кадрів в секунду.
На потужному обладнанні ці алгоритми підходять для ігор та іншої обробки зображень у режимі реального часу. Алгоритми забезпечують чітку графіку, мінімізуючи розмиття. Художні алгоритми масштабування реалізовані в широкому діапазоні емуляторів, таких як HqMAME та DOSBox, а також у 2D-ігрових рушіях та ігрових процесорах, таких як ScummVM. Вони отримали визнання у геймерів, для яких ці технології сприяли відродженню ігрового досвіду 1980-х та 1990-х років.
Наразі такі фільтри використовуються в комерційних емуляторах на Xbox Live, Virtual Console та PSN, щоб класичні ігри з низькою роздільною здатністю були візуально більш привабливими на сучасних HD-дисплеях. Нещодавно випущені ігри, що включають ці фільтри: Sonic's Ultimate Genesis Collection, Castlevania: The Dracula X Chronicles, Castlevania: Symphony of the Night та Akumajō Dracula X Chi no Rondo.
Примітки
- Edge-Directed Interpolation. chiranjivi.tripod.com. Процитовано 5 травня 2021.
- Wayback Machine. web.archive.org. 14 лютого 2016. Процитовано 5 травня 2021.
- Zhang, Lei; Wu, Xiaolin (2006-08-XX). An edge-guided image interpolation algorithm via directional filtering and data fusion. IEEE Transactions on Image Processing (англ.) 15 (8). с. 2226–2238. ISSN 1057-7149. doi:10.1109/TIP.2006.877407. Процитовано 5 травня 2021.
- K.Sreedhar Reddy; Dr.K.Rama Linga Reddy "Enlargement of Image Based Upon Interpolation Techniques".
- Image Zooming Using Directional Cubic Convolution Interpolation. www.mathworks.com (англ.). Процитовано 5 травня 2021.
- Computer Science. arxiv.org. Процитовано 5 травня 2021.
- Depixelizing Pixel Art. archive.is. 1 вересня 2015. Процитовано 5 травня 2021.
- How web browsers resize images. www.entropymine.com. Процитовано 5 травня 2021.
- Pixel Scalers. www.datagenetics.com (англ.). Процитовано 5 травня 2021.
Джерела
- General Scaling — Leptonica
- FreeImage Display Demo
- 2D Image Filters at code.google.com including Hqnx-family, SaI, Eagle, EPX, XBR, XBRz, Lanczos, etc.
- xBRZ Scaler Comparison and Testing Tool at SourceForge
- C Library implementing the xBR pixel art scaling algorithm at GitHub
- https://annimon.com/article/3647