Algorithms for most-accurate upscaling images without AI and neural network
Русский язык
(gray or color / smooth, sharpness, semi-sharpness, monochrome or bold / fast or accuracy variants available)
Free and Open Source Image Upscaler
scaleSmooth lets you enlarge and enhance low-resolution images (up to 234 megapixels, e.g. 20420x11486 for 16:9) with any integer scale factor using only math.
Enlarge images and get more quality without losing accuracy (in some cases, reverse adjustment is required) and hallucinations. It's just math!
scaleSmooth is a windows application on .NET 8.0 on Visual Studio C#, but we'll be glad, if you create your repository for other platforms and languages (write me and I'll attach link to your repository) or commit here updates for translations for other languages, optimization, batch, interface or more accuracy. If you want improve anything we'll be glad for pull request, if you disagree with something boldly fork to your own repository
Threshold, autoThreshold, Mean Curvatute Blur, Median Blur, adjustment by Lanczos, Antiringing and other tools, which can help you get more usefull results for your specific needs are NOT included!
(required Windows 7?-10.0.19041+ x64, .NET 8.0+)
|
- Just copy necessary function and it's subfunctions (f.e. ScaleSmoothGray / ScaleSmoothColor / ScaleRoughGray and S255 / ScaleRoughColor and S255 / ScaleFurryGray and S255 / ScaleFurryColor and S255 / ContrastBoldScaleGray and S255f / ContrastBoldScaleColor and S255f / BoldScaleGray and S255f / BoldScaleColor and S255f / ScaleSeparateGray, Quadrilateral and Bilinear / ScaleSeparateColor, Quadrilateral and Bilinear / ScaleBilinearApproximationGray[GPU/Auto], Dist4 and Bilinear / ScaleBilinearApproximationColor[GPU/Auto], Dist4 and Bilinear) (for GPU version install and
Using
ILGPU and ILGPU.Algorithms nuget packets (desirable ver.1.5.1)) (you can harmless remove ProgressText from code) - Call it with parameters (image as type Image, int scale, int accuracy - where 0 is fast, 100 is accurate)
- It returns new image as type Image
-
Smooth
Most accurate for scenes where objects are completely in the image, but little bit blurred (much less than any interpolation) and grid structure is still visible
Very fast - Slow, and you can process multiple images at the same time without losing speed (just run function in other thread or run .exe one more time) -
SmoothContinuous
Most accurate for scenes where objects extend beyond the boundaries of the image, but little bit blurred (much less than any interpolation) and grid structure is still visible
Very fast - Slow, and you can process multiple images at the same time without losing speed (just run function in other thread or run .exe one more time) -
SmoothContrast
Very smooth, after reverse adjustment - most accurate for any scenes, but very contrast and grid structure is still visible
Slow?, but you can process multiple images at the same time without losing speed (just run function in other thread or run .exe one more time) -
Bold
Grid structure, little bit noisy and contrasty (for accuracy, subsequent reverse correction is desirable) and too small details may lost
Very fast - Very very slow, but you can process multiple images at the same time without losing speed -
ContrastBold
Perfect result, but too contrasty (for accuracy, subsequent reverse correction is required) and too small details are lost
Very fast - Very very slow, but you can process multiple images at the same time without losing speed -
Furry
Beautiful and detailed result, but only if bigger version must be monochrome image (only pure black and white, or for color - only pure red, black, green, yellow, fuchsia, blue, cyan and white)
Very slow - Very very slow, but you can process multiple images at the same time without losing speed -
Rough
Typographic raster stylization, but if bigger version must be monochrome image it gives acceptable upscaling
Very slow, but you can process multiple images at the same time without losing speed -
Separate
Gives beatiful, but almost monochrome result and there are Gibbs ringing artifacts (to avoid you can try several times x2-x4)
Very very fast - fast, but you can't process multiple images at the same time without losing speed -
BA
A clearly defined grid structure and may be present Gibbs ringing artifacts, but it's better than nearest neighbour
Very very fast - Very slow, and you can't process multiple images at the same time without losing speed -
BAContrast
Defined grid structure, little contrasty and may be present Gibbs ringing artifacts
Very very fast - Very slow, and you can't process multiple images at the same time without losing speed -
BASmoothContrast
Сontrasty and may be present grid structure
Very very fast - Very slow, and you can't process multiple images at the same time without losing speed -
BAmonochrome
Smooth, curve and same time sharpness result, but monochrome (colors may be distorted)
Very slow, and you can't process multiple images at the same time without losing speed -
BAmonochrome2
Sharpness edges, but colors may be distorted
Very slow, and you can't process multiple images at the same time without losing speed -
BAExtremum
Sharpen edges, but contrasty (for accuracy required reverse adjustment) and many Gibbs ringing artifacts
Very very fast - Very slow, and you can't process multiple images at the same time without losing speed -
255BA
Vaguely, but not blurry, may need back(reverse) adjustment
Very very slow and you can't process multiple images at once -
Thin255BA
Makes objects thinner and more colorful
Very slow and you can't process multiple images at once -
DerivativeBA
Much Gibbs ringing afrtifacts in the grid structure, contrasty but sharp edges
Very fast - Very slow and you can't process multiple images at once -
SmoothCAS
Smooth, clear, a little contrasty and the grid structure is visible, but accurate even without reverse correction
Fast, and you can process multiple images at the same time without losing speed -
AntiBicubic
Sharp and there is no grid structure, but a bit noisy and a halo may be present
Slow and you can't process multiple images at once -
FastNearestNeighbour
Grid only
The fastest method, but you can't process multiple images at once without losing a lot of speed
You can increase speed instead of accuracy and vice versa
Алгоритмы для максимально точного масштабирования изображений без ИИ и нейронных сетей
Доступно множество различных вариантов (серый или цветной / гладкий, резкий, полурезкий, монохромный или жирный / быстрый или точный)
Мои эксперименты с изображениями
Объяснение принипа работы, визуализация и больше примеров и сравнений в видео FullHD: #1, #2
Теория и объяснение в тексте и картинках: #1, #2
Бесплатный и открытый исходный код для масштабирования изображений
scaleSmooth позволяет увеличивать и улучшать изображения с низким разрешением на любой целочисленный масштаб вплоть до 234 мегапикселей (например, 20420х11486 для 16:9), используя только математику.
Увеличивайте изображения и получайте больше качества без потери точности (в некоторых случаях требуется обратная корректировка) и галлюцинаций. Это просто математика!
scaleSmooth - это приложение Windows на .NET 8.0 на Visual Studio C#, но мы будем рады, если вы создадите свой репозиторий для других платформ и языков (напишите мне, и я прикреплю ссылку на ваш репозиторий) или закоммитите здесь обновления для переводов на другие языки, оптимизации, пакетной обработки, интерфейса или большей точности. Если вы хотите что-то улучшить, мы будем рады pull request, а если вы с чем-то не согласны, смело делайте fork в свой собственный репозиторий
Порог, Авто-порог, Размытие по средней кривизне, Медианный фильтр, Корректировка Ланцошем, Антизвон и другие инструменты, которые могут помочь вам получить более полезные результаты для ваших конкретных нужд, НЕ включены!
🏃 Запустить:
(требуется Windows 7?-10.0.19041+ x64, .NET 8.0+)
- Загрузить релиз
- Извлечь
- Запустить .exe
🛠 Использование в ваших проектах
- Просто скопируйте необходимую функцию и ее подфункции (например, ScaleSmoothGray / ScaleSmoothColor / ScaleRoughGray и S255 / ScaleRoughColor и S255 / ScaleFurryGray и S255 / ScaleFurryColor и S255 / ContrastBoldScaleGray и S255f / ContrastBoldScaleColor и S255f / BoldScaleGray и S255f / BoldScaleColor и S255f / ScaleSeparateGray, Quadrilateral и Bilinear / ScaleSeparateColor, Quadrilateral и Bilinear / ScaleBilinearApproximationGray[GPU/Auto], Dist4 и Bilinear / ScaleBilinearApproximationColor[GPU/Auto], Dist4 и Bilinear) (для использования версии для видеокарт установите nuget пакеты ILGPU и ILGPU.Algorithms (желательно версии 1.5.1) и вставьте
Using
на них) (вы можете безвредно удалить ProgressText из кода) - Вызовите функцию с параметрами (Image изображение, int масштаб, int точность - где 0 - быстро, 100 - точно)
- Функция вернёт Вам новое изображение (с повышенным разрешением) как тип Image
ℹ️ Описание методов
-
Smooth
Наиболее точный метод для сцен, где объекты полностью находятся на изображении, но результат немного размыт (гораздо меньше, чем при любой интерполяции) и структура сетки все еще видна
Очень быстро - Медленно, и вы можете обрабатывать несколько изображений одновременно, не теряя скорости (просто запустите функцию в другом потоке или запустите .exe еще раз) -
SmoothContinuous
Наиболее точный метод для сцен, где объекты выходят за границы изображения, но результат немного размыт (гораздо меньше, чем при любой интерполяции) и структура сетки все еще видна
Очень быстро - Медленно, и вы можете обрабатывать несколько изображений одновременно, не теряя скорости (просто запустите функцию в другом потоке или запустите .exe еще раз) -
SmoothContrast
Очень плавно-гладко-размыто, но после обратной корректировки - наиболее точный для любых сцен, но очень контрастный и структура сетки кое-где все еще видна Медленно?, но вы можете обрабатывать несколько изображений одновременно, не теряя скорости (просто запустите функцию в другом потоке или запустите .exe еще раз) -
Bold
Сетчатая структура, немного шумно и контрастно (для точности желательно последующее обратная корректировка), и слишком мелкие детали могут быть потеряны
Очень быстро - Очень очень медленно, но вы можете обрабатывать несколько изображений одновременно без потери скорости -
ContrastBold
Идеальный результат, но слишком контрастный (для точности требуется последующее обратное исправление), и слишком мелкие детали теряются
Очень быстро - Очень очень медленно, но вы можете обрабатывать несколько изображений одновременно без потери скорости -
Furry
Красивый и детализированный результат, но только если большая версия должна быть монохромным изображением (только чисто черно-белым, или для цветного - только чисто красным, черным, зеленым, желтым, фуксией, синим, голубым и белым)
Очень медленно - Очень очень медленно, но Вы можете обрабатывать несколько изображений одновременно без потери скорости -
Rough
Типографская растровая стилизация, но если большая версия должна быть монохромным изображением, то дает приемлемый результат для масштабирования
Очень медленно, но вы можете обрабатывать несколько изображений одновременно без потери скорость -
Separate
Дает красивый, но почти монохромный результат и есть артефакты звона (чтобы избежать, можно попробовать несколько x2-x4)
Очень очень быстро - быстро, но Вы не можете обрабатывать несколько изображений одновременно без потери скорости -
BA
Четко определенная структура сетки и могут присутствовать артефакты звона Гиббса, но это лучше, чем ближайшим соседом
Очень очень быстро - Очень медленно, и Вы не можете обрабатывать несколько изображений одновременно без потери скорости -
BAContrast
Видна сеточная структура, немного контрастно и могут присутствовать артефакты звона
Очень очень быстро - Очень медленно, и Вы не можете обрабатывать несколько изображений одновременно без потери скорости -
BASmoothContrast
Контрастно и может быть видна сеточная структура
Очень очень быстро - Очень медленно, и Вы не можете обрабатывать несколько изображений одновременно без потери скорости -
BAmonochrome
Гладкий, криволинейный и в то же время чёткий результат, но монохромный (вследствие чего цвета могут искажаться)
Очень медленно, и Вы не можете обрабатывать несколько изображений одновременно -
BAmonochrome2
Чёткие границы, но цвета могут искажаться
Очень медленно, и Вы не можете обрабатывать несколько изображений одновременно -
BAExtremum
Чёткие края, но контрастно (для точности необходима обратная корректировка) и присутствует большой звон
Очень очень быстро - Очень медленно, и Вы не можете обрабатывать несколько изображений одновременно -
255BA
Расплывчато, но не размыто, возможно будет нужна обратная корректировка
Очень очень медленно, и Вы не можете обрабатывать несколько изображений одновременно -
Thin255BA
Утоньшает объекты и делает их красочнее
Очень медленно, и Вы не можете обрабатывать несколько изображений одновременно -
DerivativeBA
Большой звон в сеточной структуре, контрастно, но чёткие края
Очень быстро - Очень медленно, и Вы не можете обрабатывать несколько изображений одновременно -
SmoothCAS
Гладко, чётко, немного контрастно и видна сеточная структура, но точно даже без обратной корректировки
Быстро, и Вы можете обрабатывать одновременно несколько изображений без потери скорости -
AntiBicubic
Резко и отсутствует сеточная структура, но немного шумно и может присутствовать гало
Медленно, и Вы не можете обрабатывать несколько изображений одновременно -
FastNearestNeighbour
Только сеточная структура
Самый быстрый метод, но Вы не можете обрабатывать несколько изображений одновременно без большой потери скорости
Можно увеличить скорость за счёт точности и наоборот