Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Определить основной цвет фона. / 25 сообщений из 158, страница 1 из 7
02.08.2021, 17:29
    #40087919
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
Вот на картинке - фон неба является как-бы доминирующим.



Допустим у вас есть картинка в виде BufferedImage
Код: java
1.
2.
3.
4.
5.
6.
7.
if (miniMatcher.matches() && miniMatcher.group("suffix") == null) {
            logger.info("deep dive into jpeg file {}", file);
            readImageStopWatcher.resume();
            BufferedImage image = ImageIO.read(file);
            readImageStopWatcher.suspend();
            int x = image.getWidth();
            int y = image.getHeight();


И как-бы вы искали этот яркий синий цвет?

Взятие среднего цвета меня не устраивает. Грязь получается.
...
Рейтинг: 0 / 0
02.08.2021, 17:38
    #40087923
Определить основной цвет фона.
Ну тут говорят использовать среднее. Ну и иметь какое-то позволительное от него отклонение. Соответственно все цвета от [mean - threshold, mean + threshold] считать фоном.

Но на твоей картинке есть море, которое похоже на небо. Мне кажется это будет большой проблемой..

Я так понимаю у тебя нет задачи сделать что-то профессиональное (для этого наверно нужен будет разбираться с DSP), и ты пытаешься сделать что-то простое?

UPD: хотя счас перечитываю ответы, и че-т не понял где я там увидел про среднее :) Нас наверно мода интересует?
...
Рейтинг: 0 / 0
02.08.2021, 17:42
    #40087924
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
Нет. Просто так.

Тут если посмотреть глазом художника. Можно найти примерно 3 базовых цвета(или тона). Море+небо.
Пальма. Песок. Тоесть если все {r,g,b} векторы разложить по кластерам из расчета что число кластеров
будет небольшое (я вангую 3 - 4 кластера) то один из них точно упадет на синее небо.

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

Этот второй ход - спорный. Но я готов проверить на практике.
...
Рейтинг: 0 / 0
02.08.2021, 17:54
    #40087930
Определить основной цвет фона.
Ну вот тут чел реализовал что-то похожее на твою идею. Говорит, на его картинках фон часто либо 1ый либо 2ой по мощности получается. Наверно уже не плохо. Но выходит такие алгоритмы всегда самый большой объект будут считать фоном.
...
Рейтинг: 0 / 0
02.08.2021, 17:59
    #40087937
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
Спасибо. Это да. Близко к тому о чем я думал.

Идея об усилении влияния краёв на цвет фона - это да. Возьму на вооружение. Пожалуй мне пока хватит
информации. Тут - самое сложное это сделать макет.
...
Рейтинг: 0 / 0
02.08.2021, 19:29
    #40087982
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
Для картинки с морем и 4х кластеров вышли вот такие центры. Вещественные числа - это тройки rgb.

Код: java
1.
2.
3.
4.
5.
[INFO ] deep dive into jpeg file d:\www\more.jpg
[INFO ] centroid : [0.014503958111282333, 0.3971523133232788, 0.7814258647392994]
[INFO ] centroid : [0.9016215016768606, 0.7777823230018119, 0.518393124910854]
[INFO ] centroid : [0.13086001016253684, 0.20413363821139488, 0.05828304340026354]
[INFO ] centroid : [0.35836446218671053, 0.5249663996686114, 0.5807036415462928]



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
  public List<CentroidCluster> clusterize() {
        // Euclidian distance
        // TODO: Implement R:G:B color ratio
        DistanceMeasure distance = new EuclideanDistance();

        KMeansPlusPlusClusterer kMeansPlusPlusClusterer = new KMeansPlusPlusClusterer(clusters, maxIterations, distance);
        // Generate n clusters
        Collection<DoublePoint> points = new ArrayList();
        for (int y = 0; y < bufferedImage.getHeight(); y++) {
            for (int x = 0; x < bufferedImage.getWidth(); x++) {
                int rgb = bufferedImage.getRGB(x, y);
                DoublePoint doublePoint = new DoublePoint(new double[]{
                        ImageUtils.getRPixel(rgb) / 255.0,
                        ImageUtils.getGPixel(rgb) / 255.0,
                        ImageUtils.getBPixel(rgb) / 255.0,
                });
                points.add(doublePoint);
            }
        }
        // Find most popular cluster

        List<CentroidCluster> centroidClusters = kMeansPlusPlusClusterer.cluster(points);

        centroidClusters.forEach((item) -> {
            logger.info("centroid : {}", item.getCenter());
        });

        return centroidClusters;
    }



Генератор полосатой картинки.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
    public BufferedImage generateClusteredBars(BufferedImage original, List<CentroidCluster> clusters) {
        int x = original.getWidth();
        int y = original.getHeight();
        BufferedImage bars = new BufferedImage(x, y, BufferedImage.TYPE_INT_RGB);
        Graphics graphics = bars.getGraphics();
        int barsCnt = clusters.size();
        int barHeight = y / barsCnt;
        for (int i = 0; i < barsCnt; i++) {
            CentroidCluster cluster = clusters.get(i);
            Clusterable center = cluster.getCenter();
            graphics.setColor(new Color(
                    (float) center.getPoint()[0],
                    (float) center.getPoint()[1],
                    (float) center.getPoint()[2]));
            graphics.fillRect(0, i * barHeight, x, barHeight);
        }
        return bars;
    }
...
Рейтинг: 0 / 0
02.08.2021, 19:31
    #40087985
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
И картинка. Интересно что зелень не так ярко выражена.
...
Рейтинг: 0 / 0
02.08.2021, 19:32
    #40087986
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
Вот прикольная штука https://github.com/lokesh/color-thief
Как работает не знаю, но походу тоже кластеры ищет
...
Рейтинг: 0 / 0
02.08.2021, 19:34
    #40087987
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
mayton,

Ты в курсе как определяют цвет чтобы блокировать контент "до 16ти"?))))
...
Рейтинг: 0 / 0
02.08.2021, 19:35
    #40087988
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
Понятия не имею. Но это наверное близко к свёрточным нейро-сетям (convolution nn).
...
Рейтинг: 0 / 0
02.08.2021, 19:54
    #40087994
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
mayton,
Какие нейросети))
Ищут телесный цвет. Сиськи))
...
Рейтинг: 0 / 0
02.08.2021, 20:04
    #40087997
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
Для блондинистых шведок и мулатистых негритяок???
...
Рейтинг: 0 / 0
02.08.2021, 20:10
    #40087998
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
Basil A. Sidorov,
Их тогда не было))))
В версии 1альфа)))
...
Рейтинг: 0 / 0
02.08.2021, 22:48
    #40088023
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
PetroNotC Sharp
mayton,
Какие нейросети))
Ищут телесный цвет. Сиськи))

Фигня полная. Может такое было лет 10 назад.
...
Рейтинг: 0 / 0
03.08.2021, 06:53
    #40088049
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
mayton,
Ну подставь в свой алгоритм. Или ты думаешь "зелень" по другому находится.
...
Рейтинг: 0 / 0
03.08.2021, 09:50
    #40088101
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
Ты озвучил более сложную задачу. Классификацию видео. Другая цель. Улавливаешь?
...
Рейтинг: 0 / 0
03.08.2021, 11:24
    #40088136
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
mayton
Ты озвучил более сложную задачу. Классификацию видео. Другая цель. Улавливаешь?
не видео а картинки.
Цель другая. Методика расчета схожая.
Именно на этом я поставил акцент.
...
Рейтинг: 0 / 0
03.08.2021, 12:24
    #40088165
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
Ну хорошо. Пускай будет алгоритм детектирования порнухи. Просто делаю тебе уступку чтоб закрыть этот вопрос.
...
Рейтинг: 0 / 0
03.08.2021, 20:07
    #40088371
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
mayton,

зря закрыл ....
...
Рейтинг: 0 / 0
03.08.2021, 23:32
    #40088441
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
Хм... а на некоторых картинках природы есть ярко выраженный горизонт. И если красить
thumnail не в генерализованный цвет фона а в градиент хотя-бы в 3-4 цвета то получится
вполне себе приличная информация.



Только нужно какое-то название. Типа такая себе векторная мини-превьюшка. Без линков
на jpg, и без embed base64 файлов внутри. Кажется градиент достигается функциями
canvas или svg.

Вобщем пускай такая векторная превьюшка называется дудл. Doodle. Как Гугл.
...
Рейтинг: 0 / 0
03.08.2021, 23:41
    #40088444
Определить основной цвет фона.
Ну дудлов хватает. Даже есть Google Doodle :)
...
Рейтинг: 0 / 0
04.08.2021, 07:52
    #40088478
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
mayton
Хм... а на некоторых картинках природы есть ярко выраженный горизонт. И если красить
thumnail не в генерализованный цвет фона а в градиент хотя-бы в 3-4 цвета то получится
вполне себе приличная информация.



Только нужно какое-то название. Типа такая себе векторная мини-превьюшка. Без линков
на jpg, и без embed base64 файлов внутри. Кажется градиент достигается функциями
canvas или svg.

Вобщем пускай такая векторная превьюшка называется дудл. Doodle. Как Гугл.

Не понял.
Фото выше стилизованное на thumnail никак не тянет.
...
Рейтинг: 0 / 0
04.08.2021, 07:59
    #40088479
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
mayton,
И понятие превьюшка ортогональна понятию дудл.
Есть третий вариант. Не знаю как называется. Когда буква имени на рандомном цвете в андроиде в контактах. Если фотки контакта нет.
...
Рейтинг: 0 / 0
04.08.2021, 08:53
    #40088485
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
при таких ядовитых цветах будет рябить в глазах и трудно будет сфокусироваться на остальных фотках.
...
Рейтинг: 0 / 0
04.08.2021, 10:50
    #40088519
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить основной цвет фона.
Забейте на частный случай. Я просто заметил что иногда в бытовых фотках природы преобладает горизонт.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Определить основной цвет фона. / 25 сообщений из 158, страница 1 из 7
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]