powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Определить основной цвет фона.
25 сообщений из 158, страница 1 из 7
Определить основной цвет фона.
    #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
Определить основной цвет фона.
    #40087923
Ну тут говорят использовать среднее. Ну и иметь какое-то позволительное от него отклонение. Соответственно все цвета от [mean - threshold, mean + threshold] считать фоном.

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

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

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

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

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

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

Идея об усилении влияния краёв на цвет фона - это да. Возьму на вооружение. Пожалуй мне пока хватит
информации. Тут - самое сложное это сделать макет.
...
Рейтинг: 0 / 0
Определить основной цвет фона.
    #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
Определить основной цвет фона.
    #40087985
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И картинка. Интересно что зелень не так ярко выражена.
...
Рейтинг: 0 / 0
Определить основной цвет фона.
    #40087986
private
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот прикольная штука https://github.com/lokesh/color-thief
Как работает не знаю, но походу тоже кластеры ищет
...
Рейтинг: 0 / 0
Определить основной цвет фона.
    #40087987
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

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

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

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



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

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



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

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

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


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