Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7   вперед  Ctrl      все
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
Яж говорю. Филтр - привязан к конкретной фотокамере.
8 ноя 19, 13:22    [22012282]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
Я так и не нашел название этого алгоритма. Искусственное растягивание canvas.
При сохранении центра картинки. По сути - воссоздать бордюр.

Это иногда видно на видеохостингах когда 3:4 растягивают на 16:9 или вертикально ориентированный
кадр публикуют в youtube.

Это не scaling. Это именно искусственное дополнение несуществующей части canvas.
30 ноя 19, 15:53    [22029478]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
Alibek B.
Member

Откуда:
Сообщений: 3721
По-моему называть это алгоритмом будет преувеличение.
Видео масштабируется до полного заполнения всего кадра с сильным размытие, затем поверх него выводится исходное видео.
Что-то вроде улучшенного ambient light.
30 ноя 19, 16:22    [22029479]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
Alibek B., это я видел.

Но края внутреннего изображения не стыкуются с бордюром. Там глазом видно разрыв производных.

Я собственно искал способ делать поиск картинки в картинке. Но параллельно понял что без
искуссвтенного extend большой картинки этот метод - неполноценный.

Пока мне пришло в голову делать фильтр гаусса для каждого пиксела бордюра с расчетом
только известных пикселов. Фильтр получается рекурсивный. Чем больше уровней мы расчитаем - тем
дальше будет закрашен бордюр.
30 ноя 19, 16:26    [22029480]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
Чорт с этим Гауссом я надолго завяз. Все беда в том что я - торопыжка.
Сделал пока фильтр среднего по 3м соседним пикселам. Наподобие матричного.
Это только левая сторона бордюра.

Сообщение было отредактировано: 1 дек 19, 17:31
30 ноя 19, 20:45    [22029554]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
Вот как-то так получилось. Такая себе Лизавета Джоконда внутри калейдоскопа.

На углах конечно некрасиво получилось. Что поделать. Фильтр такой.

К сообщению приложен файл. Размер - 122Kb
30 ноя 19, 23:51    [22029612]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
Ну с этой теткой все равно неочевидно преимущество т.к. реальный холст был больше.

А вот рисунок Рубенса. В нем действительно габариты холста расширены.
+

Картинка с другого сайта.
1 дек 19, 00:20    [22029623]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
exp98
Member

Откуда:
Сообщений: 2699
Цели действия я не понял, видосами и технологиями фильтров не интересовался.
По фильтру. Оба Г, 3х3 ? А если матрицу 5х5? Не понятно, в чём не устраивает результат?

Вообще у Г слишком быстро для робастности убывает хвост. Правда здесь о хвостах речи нет.
2 дек 19, 14:54    [22030386]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
Поясню. Вот видос со "смишьными енотами и котами". Частично снят мобилой.
Мобила снимает с неверным форматом экрана. Не соотвествует youtube. Формат
искусственно расширен до рамки 16:9

Края - автоматически заполнены исходным изображением с блуром. С размытием.

Мне это не понравилось. И я хотел сделать свой метод.

К сообщению приложен файл. Размер - 100Kb
2 дек 19, 15:22    [22030415]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
exp98
Цели действия я не понял, видосами и технологиями фильтров не интересовался.
По фильтру. Оба Г, 3х3 ? А если матрицу 5х5? Не понятно, в чём не устраивает результат?

Изначально я хотел сделать регулируемую матрицу до 128х128. Но крепко задумался о самом методе.
На момент применения матричного фильтра к угловым пикселам - частично информации нет для 75%
исходных данных.

Для краевых (left/right/top/bottom) линий не хватает 50% исходных данных. Следовательно в матрицу надо
вносить какую-то поправку. Чтоб выровнять баланс по среднему.

Вот на этом я и завис.

Упростил алгоритм до матрицы
0.0 0.0 0.333
0.0 0.0 0.333
0.0 0.0 0.333

для крайней левой плоскости и соотв для всех остальных также. Берем три соседних пиксела. Суммируем и делим на 3.
Соседи - 8-связные.
2 дек 19, 15:26    [22030419]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
exp98
Member

Откуда:
Сообщений: 2699
И всё равно, ускользает критерий приемлемости рез-та.
Баланс балансом, но при матрице-константе почти всегда угол будет с разрывом. Да, не существует 2-мерной производной в углу. Выход - динамическая миатрица, либо разные методы по секторам.

Я не любитель заимствовать чужие алгоритмы. Так, неск. мыслей по поводу.
Есть задача гладкого продолжения 2-мерной ф-ции. Насколько гадкого? до 1-й произв-й (без изломов)?, до 2-й (кривизна поверхности)? Дальше наверное не надо.

С другой стороны существуют методы экстраполяции сплайнами с граничными условиями гладкости.
2 дек 19, 19:30    [22030682]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
exp98, да ты прав. Тут нет научного критерия. Но тебе что больше глаз радует? Картинка с автобусом.
Или картины Рубенса и Да-Винчи с матричным фильтром границ.
2 дек 19, 19:33    [22030686]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
exp98
Member

Откуда:
Сообщений: 2699
Продолжение мыслей по поводу.
Вопрос не только в гладком продолжении. Каким ещё св-вам д. удовлет-ть рез-т?
Например.
Нужна в каком-то смысле размытость.
Отсутствие точек перегиба на границах либо наоборот - обязательный перегиб.
1-мерные производные на периметре д. ==0.
.......
2 дек 19, 19:38    [22030693]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
exp98
Member

Откуда:
Сообщений: 2699
mayton, мне - Р. И хотя "Р. на всех не хватит")) , порою кажется, что холст по периметру как мвысушенная мокрая бумага - волнами.
2 дек 19, 19:40    [22030696]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
exp98
Member

Откуда:
Сообщений: 2699
Хотя бы качественный, но критерий надо озвучить (для себя). Иначе в одних случ-х хорошо, в других плохо, и не узнать заранее в каких.

Пробую подойти научно. Смотрим один угол рисунка, прав-верхн.
...а б в
...г д е
...ё ж з

Как его продолжить? Имеем
б в
д е
Три точки определяют плоскость. У нас 2-хскатная крыша (бвд) и (вде), и конёк крышы (вд).
Можно их продолжать гладко и сгладко же стыковать с продолжением от (а) и от (з).

Это как пример.
2 дек 19, 19:48    [22030706]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
exp98
Member

Откуда:
Сообщений: 2699
Выше было для гладкости 1-х производных в углу.
Для 2-х пр-х в углу надо продолжать матрицу 3х3 - гладко продолжить кривизну.

Остался вопрос стыковки крыши на "коньке". Второй проход по нему ? почему нет?
2 дек 19, 19:51    [22030707]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
exp98
Продолжение мыслей по поводу.
Вопрос не только в гладком продолжении. Каким ещё св-вам д. удовлет-ть рез-т?
Например.
Нужна в каком-то смысле размытость.
Отсутствие точек перегиба на границах либо наоборот - обязательный перегиб.
1-мерные производные на периметре д. ==0.
.......

Вариант. 1

Есть две рамки. Из проволоки.
Одна - прямоугольная большая. Это внешняя граница с бордюрами. И есть внутри
нее - другая рамка. Гнутая в плоскости Z малая рамка. Это и есть края картинки.
Далее - мы погружаем обе рамки в мыльный раствор. И на ней после поднятия
образуется плёнка. Глубина цвета по каждому каналу RGB.

Вариант. 2

На границах картинки применяем Фурье или Вейвлет. И просто достраиваем несуществующие
части картинки по коэффицнетам которые расчитали. Тут наверное будет много регулировок.

Вариант. 3.

Просто зеркально повторить картинку мозаикой (слева справа сверху и снизу). И прогнать разные ФНЧ.

Во всех трех вариантах в окрестности границы пиксели бордюра не должны сильно отличаться от пикселов картинки.
2 дек 19, 20:04    [22030712]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
Вариант 3 насколько прост что я возможно сегодня его сделаю.
2 дек 19, 20:05    [22030714]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
exp98
Member

Откуда:
Сообщений: 2699
Можно угловую точку сглаживать матрицей с тупым углом. Да даже и её соседей можно. Постепенно увеличивая размерность м-цы пропорционально росту углового квадрата.

Больше навскидку в голову не приходит. Влюбом случае корреляционные св-ва размытостей будут сильно отличаться от оригинала.
2 дек 19, 20:07    [22030715]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
exp98
Member

Откуда:
Сообщений: 2699
mayton
Вариант 3 насколько прост что я возможно сегодня его сделаю.
За вар.1 вам к господину АТ.Фоменко - он же проблему мыльных плёнок дорешил.
2 дек 19, 20:11    [22030720]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
Вот сорц. Дарю всем. Берите. Копируйте сколько угодно. Можете изменять.

Посте стикера "TODO" надо добавить функционал для сглаживания уголков.
+


public class CanvasExtenderSimpleFilter extends GenericRasterFilter {

    static Logger logger = LoggerFactory.getLogger(CanvasExtenderSimpleFilter.class);

    @Override
    public BufferedImage doFilter(@NotNull BufferedImage src, @Nullable Map<String, Object> parameters) {
        int bs = (Integer) parameters.get("borderSize");
        checkArgument(bs > 0);
        int x = src.getWidth();
        int y = src.getHeight();
        logger.trace(":: detect input image size : {} x {} and colorModel = {}",x, y, src.getColorModel());
        int xr = x + 2 * bs;
        int yr = y + 2 * bs;
        BufferedImage dest = new BufferedImage(xr, yr, BufferedImage.TYPE_INT_ARGB);
        Raster.copyImageIntoPos(src, dest, bs, bs);
        // Left
        for (int j = bs; j > 0; j--) {
            for (int i = 1; i < yr - 1; i++) {
                int pixel1 = dest.getRGB(j, i - 1);
                int pixel2 = dest.getRGB(j, i);
                int pixel3 = dest.getRGB(j, i + 1);
                int res = Raster.avgPixel(pixel1, pixel2, pixel3);
                dest.setRGB(j - 1, i, res);
            }
        }

        // Right
        for (int j = bs + x - 1; j < xr - 1; j++) {
            for (int i = 1; i < yr - 1; i++) {
                int pixel1 = dest.getRGB(j, i - 1);
                int pixel2 = dest.getRGB(j, i);
                int pixel3 = dest.getRGB(j, i + 1);
                int res = Raster.avgPixel(pixel1, pixel2, pixel3);
                dest.setRGB(j + 1, i, res);
            }
        }

        // Top
        for (int i = bs; i > 0; i--) {
            for (int j = 1; j < xr - 1; j++) {
                int pixel1 = dest.getRGB(j - 1, i);
                int pixel2 = dest.getRGB(j,     i);
                int pixel3 = dest.getRGB(j + 1, i);
                int res = Raster.avgPixel(pixel1, pixel2, pixel3);
                dest.setRGB(j, i - 1, res);
            }
        }

        // Bottom
        for (int i = y + bs; i < yr; i++) {
            for (int j = 1; j < xr - 1; j++) {
                int pixel1 = dest.getRGB(j - 1, i - 1);
                int pixel2 = dest.getRGB(j,     i - 1);
                int pixel3 = dest.getRGB(j + 1, i - 1);
                int res = Raster.avgPixel(pixel1, pixel2, pixel3);
                dest.setRGB(j, i, res);
            }
        }


        // TODO: Implement all border directions
        return dest;
    }

}


public static void copyImageIntoPos(@NotNull BufferedImage source, @NotNull BufferedImage dest, int xpos, int ypos) {
        checkArgument(source.getWidth() <= dest.getWidth() + xpos);
        checkArgument(source.getHeight() <= dest.getHeight() + ypos);
        for (int y = 0; y < source.getHeight(); y++) {
            for (int x = 0; x < source.getWidth(); x++) {
                dest.setRGB(x + xpos, y + ypos, source.getRGB(x, y));
            }
        }
    }


    /**
     * Returns average color of 3 pixels without alfa
     * @param color1
     * @param color2
     * @return
     */
    public static int avgPixel(int color1, int color2, int color3) {
        return getPixel((getRPixel(color1) + getRPixel(color2) + getRPixel(color3)) / 3,
                        (getGPixel(color1) + getGPixel(color2) + getGPixel(color3)) / 3,
                        (getBPixel(color1) + getBPixel(color2) + getBPixel(color3)) / 3);
    }
2 дек 19, 20:12    [22030721]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
exp98
Member

Откуда:
Сообщений: 2699
mayton
зеркально повторить картинку мозаикой (слева справа сверху и снизу)
1) Угловые квадраты - не совсем зеркально))
2) Нужна ли периодичность, если оригинал в неск. раз мельче.
2 дек 19, 20:16    [22030725]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
exp98
mayton
Вариант 3 насколько прост что я возможно сегодня его сделаю.
За вар.1 вам к господину АТ.Фоменко - он же проблему мыльных плёнок дорешил.

Я вот подумал. Насчет мыльных пузырей. Херня получается. У нее
же с производной плохо. На краях рамки она-то неопределена.

Вобщем отложим мыльные пузыри пока.
2 дек 19, 20:17    [22030727]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
exp98
Member

Откуда:
Сообщений: 2699
mayton
...же с производной плохо. На краях рамки она-то неопределена
Сейчас власти во всю юзают переходные периоды.
2 дек 19, 20:42    [22030738]     Ответить | Цитировать Сообщить модератору
 Re: Наложение серии изображений  [new]
mayton
Member

Откуда: loopback
Сообщений: 49745
Вот перец в Adobe After Eff показывает как фиксить Vertial Video Footage. Херня какая-то. И что среди адобовских
эффектов не было готового решения для этого?

2 дек 19, 21:14    [22030760]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7   вперед  Ctrl      все
Все форумы / Программирование Ответить