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

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

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

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

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

Розмір зображення можна змінити кількома способами:

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

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

Білінійні та бікубічні алгоритми

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

Фільтр Ланцоша

Застосування цього фільтра дозволяє отримати зображення високої чіткості, але при обробці можлива поява небажаних артефактів типу «дзвону».

MIP-текстурування

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

hqx

Для збільшення зображень з низькою роздільною здатністю та/або кількома кольорами (як правило, від 2 до 256 кольорів) кращі результати можуть бути досягнуті за допомогою алгоритмів масштабування hqx або інших алгоритмів масштабування піксельної графіки. Вони згладжують гострі краї і зберігають високий рівень деталізації.

Векторизація

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

Згорткові нейронні мережі

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

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