Ответы пользователя по тегу Обработка изображений
  • Есть библиотека/плагин с таким функционалом?

    @nirvimel
    Какой Angular? Какой JQuery?
    Поворот, увеличение/уменьшение и обрезка делаются на чистом CSS вообще безо всяких скриптов.
    Ответ написан
    3 комментария
  • Как можно оптимизировать изображения без потерь в Java?

    @nirvimel
    Попробую угадать как работает этот TinyJPG:
    1. Берется некоторое начальное значение уровня сжатия (не так важно какое).
    2. Задается некоторый целевой порог допустимых потерь (эта константа предварительно обкатывается в A/B тестах).
    3. На каждом шаге итерации высчитывается среднеквадратическое отклонение значений всех пикселов сжатого изображения (от оригинального), и сравнивается с пороговым знанием.
    4. Бинарным поиском находится минимальное значение уровня сжатия при котором выполняется условие (3).


    Те, кто не заметил разницы в A/B тестах, не заметят разницы и в любых изображениях, сжатых по этому алгоритму.
    Ответ написан
    Комментировать
  • Какие установить правила для загрузки фото на сайт?

    @nirvimel
    Как реализовать функцию автоматического уменьшения / оптимизации фотографии если пользователь загружает фотографию больше установленного на сайте размера?

    При аплоде изображение (вместе с пометкой от кого оно пришло) ставится в очередь на обработку. В фоне (с низким приоритетом) крутится скрипт, который по одному забирает изображения из очереди конвертирует их (через ImageMagick, например) и прописывает в профиль (ну или куда там у вас) того юзера, который загрузил оригинал. После того как изображение получено, но до того как оно обработано на том месте можно показывать заглушку: "подождите (несколько секунд/часов/дней), идет обработка".
    Ответ написан
    6 комментариев
  • Существуют ли библиотеки для сравнения изображений, аналог Google Image?

    @nirvimel
    digiCam умеет искать дубликаты изображений в коллекции при помощи нечеткого сравнения (слепки со всей коллекции создаются на некотором этапе этого процесса). Я проверял (когда-то давно), она действительна способна найти различные изображения, отфотошопленные из одного, или разные кадры, снятые один за другим. Конечно, ложноположительные срабатывания случаются, но уровень "похожести" при поиске можно задавать. На каких библиотеках все это построено, думаю, станет понятно после чтения исходников (opensource же).
    Ответ написан
    1 комментарий
  • Вписать в квадрат окружность и закрасить цветом все, что вне окружности - есть простой способ?

    @nirvimel
    1. Нарисовать сплошной черный квадрат.
    2. Нарисовать сплошной белый круг поверх него.
    3. (по уточненным условиям задачи) Использовать полученное однобитное изображение в качестве маски для исходного изображения. Есть много вариантов реализации этого.

    Оказалось, что задача состоит в наложении на имеющееся изображение маски в виде прозрачного круга в центре и непрозрачной по краям. D' Normalization дал верный ответ в комментах.
    Ответ написан
    7 комментариев
  • Поиск сдвига одного изображения относительно другого?

    @nirvimel
    Про OpenCV не подскажу, но я бы написал это вручную. Идея простая: Задаем функцию которая проверяет истинность (точнее обратное ей значение, типа "ложность") гипотезы что второе изображение является первым изображением, сдвинутым по осям ровно на значения X, Y. Эта функция рассчитывается (например) как сумма квадратов разностей значений соответствующих пикселов первого изображения и второго, сдвинутого на -X, -Y. Имея такую функцию дальше просто находим ее минимум методом градиентного спуска (начальные значения X=0, Y=0), полученные X, Y и будут рассчитанными значениями смещения второго изображения от первого.
    С поворотом все аналогично, только добавляется еще одна одна переменная - градус поворота. Но функция проверки гипотезы становится значительно тяжелее в вычислительном плане: на каждый пиксел пойдет минимум одна тригонометрическая функция (относительно тяжелая для CPU), плюс этим обламывается SIMD оптимизация, которая дает многократное ускорение для первого варианта без поворота.
    Ответ написан
    1 комментарий
  • Что случилось с фотографией?

    @nirvimel
    Заголовок JPEG отсутствует, то есть на его месте мусор. Если даже дальнейшее содержимое файла является телом JPEG (энтропия данных очень высокая (файл практически не сжимается) как у сжатого тела JPEG, или, например, генератора случайных чисел), то без заголовка восстановить в любом случае невозможно. В заголовке содержатся основные параметры изображения, без которых, остальное тело (если это оно) не имеет смысла.
    Смотрите дату последнего изменения файла и вспоминайте что вы (или кто мог иметь доступ к вашей машине) делали в системе примерно в то время.
    Ответ написан
    2 комментария
  • Как реализовать разборку/сборку картинки в одномерный массив?

    @nirvimel
    Не может быть никакой разборки/сборки, потому что картинка - это и есть одномерный массив, индексация в котором происходит по двум переменным image_data_ptr[x + y * width]

    Если у вас картинка (массив пикселов) имеет другой тип, то просто приводим его к char *, например:
    char * _1d_image_data_ptr = (char *) image_data_ptr;
    Ответ написан
    Комментировать
  • Насколько адекватна реализация алгоритма детектора углов FAST?

    @nirvimel
    pastebin.com/E5bzULQq - перед нами эталонный пример индусского кода. Сколько бы автор не называл свой размазанный шоколад academic work, это не меняет сути. Если бы любой джуниор показал такой код своему тимлиду, это был бы последний день его работы. Странно, но в академиях, такой код прокатывает, как видно.

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

    @nirvimel
    На все вопросы о пакетном преобразовании изображений один ответ - Imagemagick.
    Конкретно в вашем случае может помочь: convert -resize 600x600\> filename.jpg
    Более подробна эта проблема разбиралась тут.
    Ответ написан
    Комментировать