Анализ методов реконструкции искаженных пикселей изображений

Объект исследования: методы восстановления потерянных и искаженных участков изображений.

Результаты, полученные лично автором: проведен анализ методов реконструкции искаженных пикселей изображений.

Задача реконструкции утраченных значений пикселей является наиболее важной и трудоемкой при восстановлении изображения. Существует немало методов реставрации отсутствующих участков изображения. Рассмотрим некоторые из них.

метод основанный на минимизации энтропии дискретного косинусного преобразования блока изображения;

метод на основе синтеза текстур;

метод на основе на основе изотропной диффузионной модели.

Метод, основанный на минимизации энтропии дискретного косинусного преобразования блока изображения (ДКП). Главной идеей данного метода является минимизация энтропии коэффициентов дискретно косинусных преобразований с помощью изменения значения заданного пикселя.

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

Наиболее существенными недостатками являются плохое сохранение границ и малоразмерных объектов, появление ореола вокруг резких границ на изображении, т.н. эффектов Гиббса, плохое сохранение текстуры, в случае выбора завышенного порога фильтрации.

анализ методов реконструкции искаженных пикселей изображений - student2.ru

Рис. 1. Результат восстановления методом ДКП.

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

Предложенный метод имеет преимущество при реконструкции как границ, так и мелких деталей изображения. Особенно это преимущество проявляется для структуры, которая характеризуется перепадами яркости, границами и контурами. Анализ результатов обработки показывает, что предлагаемый метод позволяет синтезировать текстуру с одновременным восстановлением структуры изображения, при этом метод является робастным к размеру, форме, геометрическим особенностям области восстановления и имеет устойчивые характеристики (незначительную зависимость эффективности обработки от геометрической формы удаляемого объекта), а также наблюдается отсутствие артефактов, возникающих при замене блоков целиком.

Существенным недостатком предлагаемого подхода является нерекуррентность процедур и, как следствие – высокие требования к вычислительным ресурсам ЭВМ.

анализ методов реконструкции искаженных пикселей изображений - student2.ru

Рис. 2. Результат восстановления методом синтеза текстуры.

Метод на основе на основе изотропной диффузионной модели. Метод осуществляется с помощью изотропной диффузия внутри поврежденного участка на основе данных изображения и маски поврежденной области.

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

анализ методов реконструкции искаженных пикселей изображений - student2.ru

Рис. 3. Результат восстановления методом изотропной диффузионной модели.

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

Материал поступил в редколлегию 28.04.2017

УДК 004.056, 004.62

Г.В. Праскура

Научный руководитель: доцент кафедры «Информатика и программное обеспечение», к.т.н., А.О. Трубаков

[email protected]

АНАЛИЗ РАЗЛИЧНЫХ ORM ДЛЯ NODE.JS В РАМКАХ СОЗДАНИЯ СЕРВИСА УЧЁТА ДОСТИЖЕНИЙ СТУДЕНТОВ

Объект исследования: опулярные ORM-библиотеки для платформы Node.js.

Результаты, полученные лично автором: предложена методика выбора ORM для платформы Node.js.

ORM (Object-relational mapping) – это технология, позволяющая отображать сущности информационной системы как из базы данных, так и в обратном направлении. Эта технология существенно облегчает работу с базами данных, избавляя программиста от необходимости вручную писать все требуемые запросы к базе.

В реализацию моего дипломного проекта входит сервис учёта достижений студентов, работающий в среде кафедральной информационной системы на базе связующего программного обеспечения. Для реализации была выбрана платформа Node.js. Соответственно, под рассмотрение попали самые популярные ORM-библиотеки для Node.js: Sequelize.js, Bookshelf.js, ORM2.

Сравнение производится по нескольким критериям, а именно: читаемость кода, безопасность, скорость исполнения операций, размер сообщества, то есть, популярность. В качестве оценок использована система баллов, при которой лучшая из ORM получает 3 балла по критерию, средняя – 2, наименее соответствующая критерию – 1 балл. Считается, что все критерии являются в равной степени значимыми. По сумме баллов определяется конечный выбор.

Читаемость кода. Для примера сравнения кода использованы операции создания подключения к СУБД и стандартные CRUD-операции (Create, Read, Update, Delete) с сущностью, в данном случае, конференции.

В Sequelize.js подключение к СУБД осуществляется одной строкой кода с указанием строки подключения. Создание сущности происходит путём вызова метода define, в который передаётся JavaScript-объект, с парами «имя свойства – тип данных». Операции создания, чтения, модификации и удаления исполняются при помощи механизма promise’ов: вначале вызывается метод синхронизации с БД или поиска нужного набор данных, а при успешном его завершении запускается promise, в котором, в свою очередь, вызывается соответствующий CRUD-метод.

В Bookshelf.js для инициализации подключения необходимо отдельно передать объект с полями адреса хоста, имен базы данных, пользователя и пароля. Согласно синтаксису, для CRUD-операций необходимо каждый раз создавать новый объект и к нему применять соответствующий метод. Это может ввести в заблуждение при чтении кода.

ORM2 поддерживает подключение с помощью одной строки. Создание сущности происходит аналогично таковому в Sequelize.js, а CRUD-операции происходят через вызов метода у ранее определённого экземпляра сущности. Таким образом, по критерию читаемости кода распределение баллов можно распределить так: Sequelize.js – 3 балла, ORM2 – 2 балла, Bookshelf.js – 1 балл.

Безопасность. Для ORM безопасность является также важным свойством, так как синхронизация с СУБД – это тонкое место в процессе взаимодействия приложения с базой данных.

Sequelize.js позиционируется как основанная на promise’ах ORM. Это значит, что для всех операций обращения к СУБД будет произведён контроль их успешного или, наоборот, неуспешного завершения. Bookshelf,js применяет механизм promise’ов не во всех случаях, в ORM2 же этот механизм отсутствует вовсе, все действия выполняются посредством простой передачи анонимной функции в метод соответствующей операции. То есть, Sequelize.js получает 3 балла, Bookshelf.js – 2 и ORM2 – 1 балл.

Скорость работы. Для определения результатов по этому критерию несколько 500 раз были произведены CRUD-операции различных сущностей и синхронизация с СУБД MySQL. Время засекалось с помощью методов console для работы со временем. Позднее было посчитано среднее значение для каждой из ORM. Результаты приведены в табл. 1.

Таблица 3

Результаты испытания на скорость работы

ORM Время выполнения (мс)
Sequelize.js
Bookshelf.js
ORM2

Таким образом, ORM2 – 3 балл, Sequelize.js – 2 балла, Bookshelf.js – 1 балл.

Популярность. Популярность библиотеки определяется количеством установок через менеджер пакетов NPM и количеством успоминаний на GitHub. По данным npmjs.org, Sequelize.js имеет более 320 тысяч установок за прошедший месяц и более 800 упоминаний. Bookshelf.js: более 80 тысяч установок и 412 упоминаний, ORM2 – более 5 тысяч установок и 203 упоминания. Таком образом, 3 балла за популярность у Sequelize.js, 2 – у Bookshelf.js и 1 у ORM2.

Сложив баллы, получим, что выгоднее всего использовать Sequelize.js (11 баллов). На втором месте – ORM2 (7 баллов), на третьем – Bookshelf.js (6 баллов).

Материал поступил в редколлегию 28.04.2017

УДК 331.56

Г.В. Праскура

Научный руководитель: доцент кафедры «Информатика и программное обеспечение», к.т.н., Д.В. Титарёв

[email protected]

Наши рекомендации