Skip to content

Totktonada/ImageProcessor

Repository files navigation

Задание

Задание: 1 / редактор изображений. http://courses.graphicon.ru/main/cg/2012/assignment01

Обязательная часть задания

Линейное растяжение гистограммы яркости [] Поканальное растяжение гистограммы [] Оттенки серого [] Серый мир [] Медианный фильтр [] Фильтр Гаусса [] Выделение границ оператором Собеля [] Произвольное линейное преобразование [] Поворот [] Масштабирование []

Дополнительная часть задания

Обработка региона интереса [] Сепарабельный фильтр Гаусса [] Спецэффект «Волны» [] Спецэффект «Стекло» [] Декоративный фильтр с выделением краёв [+]

Дополнительное от себя

Выделение горизонтальных и вертикальных границ (среднее квадратичное) Повышение резкости Максимум по области окна

Примечания

---- Сборка ----

Зависимости: Qt.

$ qmake $ make

---- Интерфейс ----

Отличия опций в фильтрах из обязательной программы следующие: * не ноль, а два параметра у фильтров autolevels и autocontrast; * не ноль, а два параметра у фильтра Собеля (-s, --sobel); Формат опций можно посмотреть в help’е (-h, --help).

С консоли можно задавать несколько фильтров подряд, они будут применяться последовательно. Если destination (и, возможно, source) не указан, то запускается GUI, иначе работа происходит в консольном (неинтерактивном) режиме. Если задан source и один или несколько фильтров, но destination не указан, то будет выведено сообщение об ошибке.

Регионом интереса считается область строго внутри отображаемой рамки. Когда регион интереса не задан, им считается всё изображение. Поэтому вокруг изображения оставляется рамка в один пиксель, изображению не принадлежащая. Возможность выбора региона интереса недоступна с консоли.

Стандартные для Qt-приложения хоткеи (открыть, сохранить, сохранить как, выйти) не назначены, поскольку заняты хоткеями под фильтры. Последние соответствуют коротким опциям командной строки (Ctrl + клавиша). Также есть хоткеи перемещения по истории изображений (Ctrl + Left, Ctrl + Right). Все хоткеи указаны в меню на соответствующих пунктах.

При вводе дробных чисел в соответствующие графические поля ввода при установленной русской системной локали разделитель целой и дробной частей числа можно ввести только как запятую. Хотя согласно документации к классу QDoubleValidator возможность ввода чисел в формате C гарантируется, на деле это не так. Рекомендую запускать программу с локалью C или вводить запятую в качестве разделителя.

---- Фильтры ----

При уменьшении размера часть информации теряется. Лучшего качества изображения можно достичь, если предварительно сгладить изображение соответствующего размера фильтром Гаусса. Радиус можно расчитать исходя из формулы: wRadius = ( (1 / ratio) - 1 ) / 2. Программа не применяет сглаживание фильтром Гаусса или другие техники для улучшения уменьшаемого изображения, кроме, разве что, билинейной интерполяции, которой при уменьшении более, чем в два раза (ratio == 0.5) недостаточно. Тем не менее, функциональности это не ограничивает, т.к. фильтр Гаусса можно применить вручную перед уменьшением размера.

Также, если уменьшать размер не сразу на большую величину, а в несколько итераций не более, чем в два раза (ratio = 0.5), то качество изображения страдает меньше.

В медианном фильтре используются два способа нахождения медианы: для окна 3x3 — сортировка сетью, для больших размеров — гистограммная сортировка. Это в разы быстрее, чем применение функции qSort из Qt.

About

Image processor with CLI and GUI. University task.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published