Масштабування зображення

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Зображення, масштабоване алгоритмом «найближчий сусід» (зліва) і 2×SaI (справа).

Масштабува́ння зобра́ження — зміна розміру зображення зі збереженням пропорцій. Під масштабуванням мається на увазі як збільшення (англ. scaling up), так і зменшення (англ. scaling down) масштабу зображення. Це поняття широко застосовується в комп'ютерній графіці, обробці відео, зокрема, реалізується на апаратному рівні в телевізорах і відеопрогравачах.

При цьому, залежно від типу графіки (растрова, векторна), масштабування проводиться різними алгоритмами. Масштабування векторних зображень відбувається без втрат якості зображення, але при збільшенні растрових зображень може відбуватися втрата якості: можливі суттєві викривлення геометрії дрібних деталей і поява помилкових візерунків на текстурах. Тому при масштабуванні растрових зображень використовуються спеціалізовані алгоритми, що згладжують небажані ефекти (Апскейлінг).

Масштабування зображень у математиці[ред. | ред. код]

Масштабування зображень можна трактувати як форму передискретизації зображення, або реконструкції зображення з точки зору теореми про вибірку Найквіста. Згідно з теоремою, зменшення вибірки для зображення меншого розміру порівняно з оригіналом з більшою роздільною здатністю, може бути здійснено лише після застосування відповідного 2D фільтра згладжування для запобігання згладжування артефактів. Зображення зводиться до інформації, яку може нести менше зображення. У інших випадках фільтр відновлення[en] замінює фільтр згладжування.


Алгоритми масштабування[ред. | ред. код]

Детальніші відомості з цієї теми ви можете знайти в статті Порівняльна галерея алгоритмів масштабування зображень[en].

Розмір зображення можливо змінювати за допомогою таких алгоритмів:

Інтерполяція методом найближчого сусіда[ред. | ред. код]

Одним із найпростіших методів збільшення розміру зображення є інтерполяція методом найближчого сусіда, який замінює кожен піксель кількома пікселями одного кольору: отримане зображення більше, ніж оригінал, і зберігає всі деталі оригіналу, але має (як правило, небажані) зубці. Діагональні лінії, наприклад, показуються «сходинками».

Білінійні та бікубічні алгоритми[ред. | ред. код]

Білінійна інтерполяція згладжує значення кольорів пікселів, навіть якщо оригінальне зображення має дискретні переходи. Алгоритм зменшує контраст зображення. Найкраще підходить для зображень з неперервним тоном. Бікубічна інтерполяція[en] дає істотно кращі результати у порівнянні з попереднім методом.

Інтерполяційна формула Віттекера — Шеннона та фільтр Ланцоша[ред. | ред. код]

Інтерполяційна формула Віттекера — Шеннона забезпечує найкращу з можливих реконструкцій для абсолютно обмеженої смуги сигналу. На практиці, реальні цифрові зображення не повністю відповідають припущенням, пов’язаним із повторною дискретизацією. Фільтр Ланцоша[en] дозволяє отримувати зображення високої чіткості, але час обробки значно збільшується. Також при обробці можлива поява небажаних артефактів типу «дзвону». Якщо при білінійній інтерполяції для кожного нового пікселя ми розглядали 4 вихідних пікселі, то тепер їх може бути 9 (3x3), 25 (5x5), 49 (7x7) і т.д. Оптимальними за якістю і швидкістю є розміри 2 і 3.

Box sampling[ред. | ред. код]

Однією зі слабких сторін білінійних, бікубічних та пов'язаних з ними алгоритмів є те, що вони відбирають певну кількість пікселів. При зменшенні масштабу нижче певного порогу, наприклад, більше, ніж удвічі, для всіх алгоритмів двовибіркової вибірки, алгоритми відбиратимуть сусідні пікселі, що призводить до втрати даних та спричинення грубих результатів. Тривіальним розв'язанням цієї проблеми є вибірка блоком, яка полягає в тому, щоб розглянути цільовий піксель блоком на вихідному зображенні та відібрати всі пікселі всередині нього. Це гарантує, що всі вхідні пікселі роблять внесок у вихід. Основна слабкість цього алгоритму полягає в тому, що його важко оптимізувати.

MIP-текстурування[ред. | ред. код]

Метод текстурування, що використовує кілька копій однієї текстури з різною деталізацією. Алгоритм MIP-текстурування є досить швидким і його легко оптимізувати. Використовується у багатьох платформах, наприклад OpenGL. Недоліком є збільшення розміру зображення.

Методи перетворення Фур'є[ред. | ред. код]

Метод інтерполяції, заснований на перетворенні Фур'є. Накладає частотну область на нульові компоненти тим самим зменшуючи артефакти дзвінка[en]. Окрім доброго збереження (або відновлення) деталей, недоліком є поява артефактів від лівої межі до правої межі (і навпаки).

Кутова інтерполяція[ред. | ред. код]

Алгоритми кутової інтерполяції спрямовано на збереження країв зображення після масштабування, на відміну від інших алгоритмів, які можуть вводити небажані артефакти. До прикладів алгоритмів для цього завдання належать 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[en] (англ. high quality scale) або інших алгоритмів масштабування піксельних зображень[en]. Вони згладжують гострі краї та зберігають високий рівень деталізації.

Векторизація[ред. | ред. код]

Векторизація пропонує інший підхід. Спочатку створюється незалежне від зображення векторне представлення графіки для масштабування. Після масштабування векторне зображення конвертується в растрове з бажаною роздільною здатністю. Цей метод використовують Adobe Illustrator, Live Trace та Inkscape[7]. Масштабована векторна графіка добре підходить для простих геометричних зображень, тоді як фотографії погано справляються з векторизацією через свою складність.

Глибинні згорткові нейронні мережі[ред. | ред. код]

Цей метод використовує машинне навчання для отримання детальніших та чіткіших зображень, таких як фотографії та складні ілюстрації. Програми, що використовують цей метод: waifu2x[en], Reshade.

Демонстрація традиційного збільшення масштабу проти масштабування Waifu2x зі зменшенням шуму, використовуючи деталі Phosphorus and Hesperus Евеліни де Морган. Натисніть, щоб побачити у повному розмірі.
Оригінальне зображення
Зображення збільшене на 200% використовуючи Corel Paint Shop Pro
Зображення збільшене на 200% використовуючи waifu2x[en] у режимі фото із середнім зменшенням шуму
Зображення збільшене на 400% використовуючи Topaz A.I. Gigapixel з низьким рівнем шумозаглушення
Зображення збільшене на 400% використовуючи RealSR DF2K-JPEG

Застосування[ред. | ред. код]

Загальні[ред. | ред. код]

Масштабування зображень використовується, серед інших програм, у веббраузерах[8], редакторах зображень, засобах перегляду зображень та файлів, програмних лупах, цифровому збільшенні, процесі генерації ескізів та при виведенні зображень через екрани або принтери.

Відео[ред. | ред. код]

Збільшення зображень використовують для домашніх кінотеатрів, а саме для пристроїв виводу, готових до HDTV, із вмістом із роздільною здатністю PAL, наприклад з DVD-програвачем. Збільшення масштабу виконується в режимі реального часу, і вихідний сигнал не зберігається.

Масштабування в стилі піксель-арт[ред. | ред. код]

Оскільки піксельна графіка зазвичай має низьку роздільну здатність, вона покладається на ретельне розміщення окремих пікселів, часто з обмеженою палітрою кольорів. Це призводить до графіки, яка спирається на стилізовані візуальні сигнали для визначення складних фігур з невеликою роздільною здатністю, аж до окремих пікселів. Це робить масштабування піксельних зображень особливо складною проблемою.

Для роботи з піксельною графікою було розроблено спеціалізовані алгоритми[9], оскільки традиційні алгоритми масштабування не враховують перцептивні сигнали.

Оскільки типовим застосуванням є покращення зовнішнього вигляду відеоігор на емуляторах аркад та консолей, багато алгоритмів призначено для роботи в режимі реального часу з невеликими вхідними зображеннями зі швидкістю 60 кадрів в секунду.

На потужному обладнанні ці алгоритми підходять для ігор та іншої обробки зображень у режимі реального часу. Алгоритми забезпечують чітку графіку, мінімізуючи розмиття. Художні алгоритми масштабування реалізовані в широкому діапазоні емуляторів, таких як HqMAME та DOSBox, а також у 2D-ігрових рушіях та ігрових процесорах, таких як ScummVM. Вони отримали визнання у геймерів, для яких ці технології сприяли відродженню ігрового досвіду 1980-х та 1990-х років.

Наразі такі фільтри використовуються в комерційних емуляторах на Xbox Live, Virtual Console та PSN, щоб класичні ігри з низькою роздільною здатністю були візуально більш привабливими на сучасних HD-дисплеях. Нещодавно випущені ігри, що включають ці фільтри: Sonic's Ultimate Genesis Collection[en], Castlevania: The Dracula X Chronicles[en], Castlevania: Symphony of the Night та Akumajō Dracula X Chi no Rondo[en].

Примітки[ред. | ред. код]

  1. Edge-Directed Interpolation. chiranjivi.tripod.com. Архів оригіналу за 5 травня 2021. Процитовано 5 травня 2021.
  2. Wayback Machine (PDF). web.archive.org. 14 лютого 2016. Архів оригіналу (PDF) за 14 лютого 2016. Процитовано 5 травня 2021.
  3. 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. doi:10.1109/TIP.2006.877407. ISSN 1057-7149. Архів оригіналу за 28 жовтня 2021. Процитовано 5 травня 2021.
  4. K.Sreedhar Reddy; Dr.K.Rama Linga Reddy "Enlargement of Image Based Upon Interpolation Techniques" (PDF). Архів оригіналу (PDF) за 7 травня 2021. Процитовано 5 травня 2021.
  5. Image Zooming Using Directional Cubic Convolution Interpolation. www.mathworks.com (англ.). Архів оригіналу за 7 травня 2021. Процитовано 5 травня 2021.
  6. Computer Science. arxiv.org. Архів оригіналу за 7 травня 2021. Процитовано 5 травня 2021.
  7. Depixelizing Pixel Art. archive.is. 1 вересня 2015. Архів оригіналу за 1 вересня 2015. Процитовано 5 травня 2021.
  8. How web browsers resize images. www.entropymine.com. Архів оригіналу за 20 квітня 2021. Процитовано 5 травня 2021.
  9. Pixel Scalers. www.datagenetics.com (англ.). Архів оригіналу за 5 травня 2021. Процитовано 5 травня 2021.

Джерела[ред. | ред. код]