Skip to content

no4ni/scaleSmooth

Repository files navigation

scaleSmooth

Algorithms for most-accurate upscaling images without AI and neural network


Русский язык (gray or color/ smooth, rough, furry, separate, approximation, bold or contrastBold / fast or accuracy variants available)



Free and Open Source Image Upscaler

scaleSmooth lets you enlarge and enhance low-resolution images 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!

🏃 Run

(required Windows 7?-10.0.19041 x64, .NET 8.0 )

  • Download release
  • Extract
  • Run .exe

🛠 Using in your projects

  • 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 packet) (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

ℹ️ Description of methods

  • scaleSmooth
    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)

  • scaleSmoothContinuous
    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)

  • scaleSmoothContrast
    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)

  • boldScale
    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

  • contrastBoldScale
    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

  • scaleFurry
    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

  • scaleRough
    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

  • scaleSeparate
    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

  • scaleBilinearApproximation
    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

  • scaleBAContrast
    Defined grid structure, little contrasty and may be present Gibbs ringing artifacts\r\n\r\nVery very fast - Very slow, and you can't process multiple images at the same time without losing speed
    Very very fast - Very slow, and you can't process multiple images at the same time without losing speed

You can increase speed instead of accuracy and vice versa


Алгоритмы для максимально точного масштабирования изображений без ИИ и нейронных сетей

Мои эксперименты с изображениями
Объяснение принипа работы, визуализация и больше примеров и сравнений в видео FullHD: #1, #2
Теория и объяснение в тексте и картинках: #1, #2

Бесплатный и открытый исходный код для масштабирования изображений

scaleSmooth позволяет увеличивать и улучшать изображения с низким разрешением, используя только математику.
Увеличивайте изображения и получайте больше качества без потери точности (в некоторых случаях требуется обратная корректировка) и галлюцинаций. Это просто математика!

scaleSmooth это приложение Windows на .NET 8.0 на Visual Studio C#, но мы будем рады, если вы создадите свой репозиторий для других платформ и языков (напишите мне, и я прикреплю ссылку на ваш репозиторий) или закоммитите здесь обновления для переводов на другие языки, оптимизации, пакетной обработки, интерфейса или большей точности. Если вы хотите что-то улучшить, мы будем рады pull request, а если вы с чем-то не согласны, смело делайте fork в свой собственный репозиторий

Порог, Авто-порог, Размытие по средней кривизне, Медианный фильтр, Корректировка Ланцошем, Антизвон и другие инструменты, которые могут помочь вам получить более полезные результаты для ваших конкретных нужд, НЕ включены!

🏃 Запустить:
(требуется Windows 7?-10.0.19041 x64, .NET 8.0 )

  • Загрузить релиз
  • Извлечь
  • Запустить .exe

🛠 Использование в ваших проектах

  1. Просто скопируйте необходимую функцию и ее подфункции (например, 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) (вы можете безвредно удалить ProgressText из кода)
  2. Вызовите функцию с параметрами (Image изображение, int масштаб, int точность - где 0 - быстро, 100 - точно)
  3. Функция вернёт Вам новое изображение (с повышенным разрешением) как тип Image

ℹ️ Описание методов

scaleSmooth
Наиболее точный метод для сцен, где объекты полностью находятся на изображении, но результат немного размыт (гораздо меньше, чем при любой интерполяции) и структура сетки все еще видна
Очень быстро - Медленно, и вы можете обрабатывать несколько изображений одновременно, не теряя скорости (просто запустите функцию в другом потоке или запустите .exe еще раз)

scaleSmoothContinuous
Наиболее точный метод для сцен, где объекты выходят за границы изображения, но результат немного размыт (гораздо меньше, чем при любой интерполяции) и структура сетки все еще видна
Очень быстро - Медленно, и вы можете обрабатывать несколько изображений одновременно, не теряя скорости (просто запустите функцию в другом потоке или запустите .exe еще раз)

scaleSmoothContrast
Очень плавно-гладко-размыто, но после обратной корректировки - наиболее точный для любых сцен, но очень контрастный и структура сетки кое-где все еще видна Медленно?, но вы можете обрабатывать несколько изображений одновременно, не теряя скорости (просто запустите функцию в другом потоке или запустите .exe еще раз)

boldScale
Сетчатая структура, немного шумно и контрастно (для точности желательно последующее обратная корректировка), и слишком мелкие детали могут быть потеряны
Очень быстро - Очень очень медленно, но вы можете обрабатывать несколько изображений одновременно без потери скорости

contrastBoldScale
Идеальный результат, но слишком контрастный (для точности требуется последующее обратное исправление), и слишком мелкие детали теряются
Очень быстро - Очень очень медленно, но вы можете обрабатывать несколько изображений одновременно без потери скорости

scaleFurry
Красивый и детализированный результат, но только если большая версия должна быть монохромным изображением (только чисто черно-белым, или для цветного - только чисто красным, черным, зеленым, желтым, фуксией, синим, голубым и белым)
Очень медленно - Очень очень медленно, но Вы можете обрабатывать несколько изображений одновременно без потери скорости

scaleRough
Типографская растровая стилизация, но если большая версия должна быть монохромным изображением, то дает приемлемый результат для масштабирования
Очень медленно, но вы можете обрабатывать несколько изображений одновременно без потери скорость

scaleSeparate
Дает красивый, но почти монохромный результат и есть артефакты звона (чтобы избежать, можно попробовать несколько x2-x4)
Очень очень быстро - быстро, но Вы не можете обрабатывать несколько изображений одновременно без потери скорости

scaleBilinearApproximation
Четко определенная структура сетки и могут присутствовать артефакты звона Гиббса, но это лучше, чем ближайшим соседом
Очень очень быстро - Очень медленно, и Вы не можете обрабатывать несколько изображений одновременно без потери скорости

scaleBAContrast
Видна сеточная структура, немного контрастно и могут присутствовать артефакты звона
Очень очень быстро - Очень медленно, и Вы не можете обрабатывать несколько изображений одновременно без потери скорости

Можно увеличить скорость за счёт точности и наоборот