• Схема разделения секретной визуальной информации

      Доброго времени суток, Хабрапользователи!

      Визуальная криптография [1] впервые была введена Мони Наором и Ади Шамиром в 1994 году [3]. Она используется для шифрования изображения или текста, представленного в виде изображения. Основная идея модели визуальной криптографии состоит в разбиении исходного изображения на несколько шифрованных («теневых» изображений, shadow images), каждое из которых не дает никакой информации об исходном изображении кроме, может быть, его размера (изображение – а-ля «белый шум»). При наложении шифрованных изображений друг на друга, можно получить исходное изображение. Таким образом, для декодирования не требуется специальных знаний, высокопроизводительных вычислений и даже компьютера (в случае, если распечатать теневые изображения на прозрачных пленках). В случае использования этого алгоритма в компьютерных системах, наложить все части изображения друг на друга можно используя логические операции AND, OR, XOR (или установив более высокую степень прозрачности в графическом редакторе). Данная технология обладает криптоустойчивостью за счет того, что при разделении исходного изображения на множество шифроизображений происходит случайным образом.

      Читать дальше →
    • Способы оценки субъективного качества речи

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

      Под катом будут рассмотрены некоторые свойства речевых сигналов и особенностей их восприятия человеком, объективные и субъективные способы оценки качества этих сигналов.

      P.S. В данной статье использована моя дипломная работа, защищённая в 2011 году в Московском Авиационном Институте на факультете Радиоэлектроники Летательных Аппаратов каф. 402. Ранее работа нигде не публиковалась.
      Читать дальше →
    • Blind Deconvolution — автоматическое восстановление смазанных изображений

        Смазанные изображения — один из самых неприятных дефектов в фотографии, наравне с расфокусированными изображениями. Ранее я писал про алгоритмы деконволюции для восстановления смазанных и расфокусированных изображений. Эти, относительно простые, подходы позволяют восстановить исходное изображение, если известна точная траектория смаза (или форма пятна размытия).
        В большинстве случаев траектория смаза предполагается прямой линией, параметры которой должен задавать сам пользователь — для этого требуется достаточно кропотливая работа по подбору ядра, кроме того, в реальных фотографиях траектория смаза далека от линии и представляет собой замысловатую кривую переменной плотности/яркости, форму которой крайне сложно подобрать вручную.


        В последние несколько лет интенсивно развивается новое направлении в теории восстановления изображений — слепая обратная свертка (Blind Deconvolution). Появилось достаточно много работ по этой теме, и начинается активное коммерческое использование результатов.
        Многие из вас помнят конференцию Adobe MAX 2011, на которой они как раз показали работу одного из алгоритмов Blind Deconvolution: Исправление смазанных фотографий в новой версии Photoshop
        В этой статье я хочу подробнее рассказать — как же работает эта удивительная технология, а также показать практическую реализацию SmartDeblur, который теперь тоже имеет в своем распоряжении этот алгоритм.
        Внимание, под катом много картинок!
        Читать дальше →
      • Использование OpenCV в Delphi

          Так случилось, что я активно использую Delphi в своей работе (программирование по работе, собственные открытые и закрытые проекты) и вот мне понадобилось написать программу, использующую открытую библиотеку компьютерного зрения OpenCV. Что же делать, ведь официально OpenCV использовать в Delphi невозможно, а перебираться на C ради одной программы слишком долго.

          Но нет ничего невозможного…
          Читать дальше →
        • Вейвлет-сжатие «на пальцах»: практика

          • Tutorial

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

          К чему слова? Давайте напишем программу, сжимающую изображения! (Под катом много картинок!)

          Читать дальше →
        • Вейвлет-сжатие «на пальцах»

          • Tutorial


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

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

          Читать дальше →
        • Обзор инструментов для сжатия изображений



            Для ускорения сайта, некоторые рекомендуют проанализировать каждую страницу: оптимизировать запросы HTTP и любые перенаправления, сжать скрипты и стили и т. д. Все это без сомнения необходимо, но в первую очередь важно рассмотреть основы. В частности, вы уверены, что любая графика, которую вы используете на создаваемых сайтах, полностью оптимизирована для Интернета?
            Читать дальше →
          • Прецизионный поворот растрового изображения на произвольный угол

              Поворот растрового изображения на углы, кратные 90°, относительно геометрического центра изображения – задача тривиальная и решается без потери качества простым преобразованием координат каждого пикселя.

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

              Ниже мы рассмотрим алгоритм прецизионного поворота растрового изображения на произвольный угол относительно произвольного центра с минимальными потерями.

              Выражаю благодарность Харченко Владиславу Владимировичу за оказанную помощь.
              Читать дальше →
            • Голографические свойства бит-реверсивной перестановки

                Об экспериментах с компьютерной голографией писалось неоднократно. [1, 2, 3] Мне эта тема просто любопытна. Я как-то экспериментировал с бит-реверсивной перестановкой (bit-reversal permutation) изображений и случайно обнаружил голографические свойства. Но обо всем по порядку.
                Читать дальше →
              • Восстановление расфокусированных и смазанных изображений. Повышаем качество

                  Представляю вашему вниманию заключительную статью из трилогии «Восстановление расфокусированных и смазанных изображений». Первые две вызвали заметный интерес — область, действительно, интересная. В этой части я рассмотрю семейство методов, которые дают лучшее качество, по сравнении со стандартным Винеровским фильтром — это методы, основанные на Total Variaton prior.
                  Также по традиции я выложил новую версию SmartDeblur (вместе с исходниками в open-source) в которой реализовал этот метод. Итоговое качество получилось на уровне коммерческих аналогов типа Topaz InFocus. Вот пример обработки реального изображения с очень большим размытием:


                  Читать дальше →
                • Создание стереограммы на основе трехмерной модели

                  На Хабре уже писали о простом алгоритме создания стереограмм. Стереограмма в нём генерируется на основе карты высот и изображения с повторяющимся рисунком. В данной статье я хочу описать другой подход к созданию стереограмм – на основе трехмерной модели. Основные отличия описанного здесь алгоритма от алгоритма, указанного выше:

                  • вместо карты высот (которая по сути представляет из себя карту смещений пикселей по горизонтали) объекты задаются непосредственно в трехмерных координатах;
                  • нет ограничений на количество объектов и их расположение (за исключением того, что все они должны находиться в поле зрения и на некотором расстоянии от плоскости стереограммы – для того, чтобы их можно было увидеть), тогда как при использовании карты высот мы имеем дело только с одним слоем;
                  • созданная стереограмма обладает перспективой (чем дальше от наблюдателя находится объект, тем меньшим он выглядит);
                  • вид объекта зависит от ракурса, с которого он виден (как и для реальных объектов).

                  Читать дальше →
                • Быстрое размытие по Гауссу

                    Фильтр размытия по гауссу (широко известный “gaussian blur” в фотошопе) достаточно часто применяется сам по себе или как часть других алгоритмов обработки изображений. Далее будет описан метод, позволяющий получать размытие со скоростью, не зависящей от радиуса размытия, используя фильтры с бесконечной импульсной характеристикой.
                    Читать дальше →
                  • Восстановление расфокусированных и смазанных изображений. Практика

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

                      В дополнение к этому я написал демонстрационную программу, в которой реализованы основные алгоритмы по устранению расфокусировки и смаза. Программа выложена на GitHub вместе с исходниками и дистрибутивами.

                      Ниже показан результат обработки реального размытого изображения (не с синтетическим размытием). Исходное изображение было получено камерой Canon 500D с объективом EF 85mm/1.8. Фокусировка была выставлена вручную, чтобы получить размытие. Как видно, текст совершенно не читается, лишь угадывается диалоговое окно Windows 7.



                      И вот результат обработки:



                      Практически весь текст читается достаточно хорошо, хотя и появились некоторые характерные искажения.

                      Под катом подробное описание проблем деконволюции, способов их решения, а также множество примеров и сравнений. Осторожно, много картинок!
                      Читать дальше →
                    • Если оба компьютера за натом

                        На написание данной заметки натолкнули некоторые комментарии к недавней статье “Не слишком щепетильный способ продажи ПО” о программе TeamViewer. Попытаюсь вкратце описать один не слишком сложный и в то же время достаточно универсальный способ “зайти” с одного компьютера на другой, если они оба за натом.

                        Собственно, к делу. Для того, чтобы установить соединение, на каждом компьютере создадим IPv6-туннель при помощи какого-либо сервиса туннелирования IPv6. Оба компьютера при этом получат полноценный IPv6 адрес и между ними можно будет установить соединение по ssh, vnc или другой технологии. Конечно, если у обоих компьютеров уже есть IPv6 адрес, предоставленный провайдером, никаких телодвижений по поднятию туннелей производить не нужно. К сожалению, подавляющее большинство провайдеров к IPv6 еще не готовы и наличие у пользователя прямого доступа в интернет по IPv6 – большая редкость.
                        Читать дальше →
                      • Конвертация PNG24/32 в PNG8 с сохранением прозрачности



                          Открылся веб-сервис TinyPNG, на котором можно быстро конвертировать полноцветные PNG24 в индексные PNG8 с сохранением альфа-прозрачности. Сайт работает на известных open source утилитах, так что квантование палитры можно сделать и без него, но здесь это просто удобнее.
                          Читать дальше →
                        • Библиотека OmniThreadLibrary — простая многопоточность в среде Delphi

                            Написать интересную статью на техническую тему очень сложно. Приходится балансировать между тем, чтобы не скатиться в технические дебри и тем, чтобы совсем ничего не сказать. Сегодня я попробую в общих словах (без деталей) поговорить о том, как обстоят дела с разработкой многопоточных desktop-приложений в не столь популярной на сегодняшний день, но наверняка знакомой многим российским разработчикам среде Delphi. Статья ориентирована на НЕ новичков в программировании, являющихся при этом новичками в области создания многопоточных приложений.
                            Читать дальше →
                          • Подавление шумов как задача диффузии

                            Hello, Хабр.

                            Недавно, так уж вышло, читал в своем старом лицее лекцию на тему того, зачем они учат математику и что с ней можно потом делать чуть более прикладного. Для школьников 10-го класса оказалось чуть сложновато, пожалуй. Надеюсь данная тема будет интересно кому нибудь из хабрасообщества (здесь представлен вариант чуть-чуть сложнее того, что я читал в лицее, но не думаю, что это проблема).

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

                            Не так давно я для себя открыл сколько физики заключается в обработке изображений. Меня это очень заинтересовало, в виду того, что эти две ветви науки у меня в голове никогда не пересекались. В этой статье я представлю как можно убрать шумы с изображения решая задачу переноса массы на плоскости.
                            Читать дальше →
                          • Image Catalyst 2.2

                              Здравствуй Хабр!
                              Adobe Photoshop CS5 (Save For Web) — 53,8 КБ Image Catalyst (Xtreme) — 46,0 КБ
                              Image Catalyst — программа для комплексной оптимизации/сжатии изображений формата PNG и JPEG без потери качества в рамках того же формата.
                              Читать дальше →
                            • Кластеризация точек на основе регулярной сети


                                В данной статье я рассмотрю два алгоритма, первый — непосредственно кластеризация, второй — построение контура кластера в виде выпуклого многоугольника, прикладная задача для улучшеного восприятия полученного результата.

                                Читать дальше →