Вычислить насколько белая картинка, прогеры welcome

Bot_Sculptor

Client
Регистрация
11.06.2012
Сообщения
787
Благодарностей
236
Баллы
43
делал кое-что на питоне, там была часть разбивал изображение на пиксели и получал цвет RGB каждого пикселя. ну как-бы все ок вопрос закрыт.

Но мимолетно упоминалось там кое-что по поводу анализа картинки, насколько она белая, т.е приближенная к 255,255,255 в Процентах это все как-то отобразить.

У кого-то есть идеи с ходу вот так подсказать, в какую сторону гуглить)?
Чисто интересно стало просто...
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
Ну тогда это уже будут оттенки серого, не белого.
function isWhited(r, g, b){ return r > 240 && g > 240 && b > 240 }
Вот функция определения серого.
 
  • Спасибо
Реакции: Bot_Sculptor

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
Допустим на вход пришло три переменные. 245,248,255,
245х33.3%/255+248х33.3%/255+33.3%=98.32%

То есть данный цвет (245,248,255). На ~98 процентов белый
 
  • Спасибо
Реакции: Bot_Sculptor

Bot_Sculptor

Client
Регистрация
11.06.2012
Сообщения
787
Благодарностей
236
Баллы
43
Допустим на вход пришло три переменные. 245,248,255,
245х33.3%/255+248х33.3%/255+33.3%=98.32%

То есть данный цвет (245,248,255). На ~98 процентов белый
хм, занимательно )
я закидываю пикчу 5000 * 5000 пикселей. 70мб
получаю 25kk вот такого добра:
Код:
0 0 175 175 162
0 1 167 173 160
0 2 177 179 170
0 3 180 180 179
0 4 177 175 170
0 5 173 175 170
0 6 172 177 172
0 7 168 175 172
0 8 172 177 173
0 9 175 179 175
0 10 185 182 185
0 11 182 180 180
0 12 172 168 165
0 13 179 182 179
0 14 173 175 172
0 15 182 189 180
0 16 182 185 168
0 17 167 170 153
0 18 167 168 158
0 19 165 172 165
0 20 148 155 147
0 21 168 175 168
0 22 162 163 158
0 23 175 179 172
0 24 167 168 163
0 25 172 173 163
первые 2 цифры это координаты пикселя, а дальше r g b
теперь по твоему примеру я получу % каждого пикселя, а дальше просто средним арифметическим получу общий процент для всего изображения, так? точнее ничего нету ?
 
Последнее редактирование:

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

AForge.NET
http://www.aforgenet.com/framework/docs/html/e0afa487-2abc-1f34-554a-b18406058f24.htm

C#:
using System.Drawing;
using AForge;
using AForge.Imaging;


namespace ImageCount {
    class Program {
        static void Main(string[] args) {
            Bitmap img = new Bitmap("white.jpg");
            // gather statistics
            ImageStatistics stat = new ImageStatistics(img);
            // get red channel's histogram
            Histogram red = stat.Red;
            // check mean value of red channel
            Console.WriteLine(String.Format("Mean: {0}; Percent of White: {1}", red.Mean, red.Mean * 100 / 255));
            Console.ReadKey();
        }
    }
}


без фреймворков
http://stackoverflow.com/questions/1068373/how-to-calculate-the-average-rgb-color-values-of-a-bitmap

RedGreenBlueRGB valueColor
25500255Red
0255065280Green
0025516711680Blue
025525516776960Cyan
255025516711935Magenta
255255065535Yellow
25525525516777215White
1281281288421504Gray
0000Black
[TBODY] [/TBODY]
 
Последнее редактирование:
  • Спасибо
Реакции: Bot_Sculptor

Bot_Sculptor

Client
Регистрация
11.06.2012
Сообщения
787
Благодарностей
236
Баллы
43
AForge.NET
http://www.aforgenet.com/framework/docs/html/e0afa487-2abc-1f34-554a-b18406058f24.htm

C#:
using System.Drawing;
using AForge;
using AForge.Imaging;


namespace ImageCount {
    class Program {
        static void Main(string[] args) {
            Bitmap img = new Bitmap("white.jpg");
            // gather statistics
            ImageStatistics stat = new ImageStatistics(img);
            // get red channel's histogram
            Histogram red = stat.Red;
            // check mean value of red channel
            Console.WriteLine(String.Format("Mean: {0}; Percent of White: {1}", red.Mean, red.Mean * 100 / 255));
            Console.ReadKey();
        }
    }
}


без фреймворков
http://stackoverflow.com/questions/1068373/how-to-calculate-the-average-rgb-color-values-of-a-bitmap

RedGreenBlueRGB valueColor
25500255Red
0255065280Green
0025516711680Blue
025525516776960Cyan
255025516711935Magenta
255255065535Yellow
25525525516777215White
1281281288421504Gray
0000Black
[TBODY] [/TBODY]
ахренеть, вот это да) спасибо!
 

Bot_Sculptor

Client
Регистрация
11.06.2012
Сообщения
787
Благодарностей
236
Баллы
43
Допустим на вход пришло три переменные. 245,248,255,
245х33.3%/255+248х33.3%/255+33.3%=98.32%

То есть данный цвет (245,248,255). На ~98 процентов белый
сделал этим методом на питоне, вроде все верно показывает) ну закинул картинку белую , оно и показало 100%
и тестировал на больших светлых такого рода , правда это только кусочек картинки

показывает 90,5% (на полной картинке 5k*5k p)
т.е. вполне не плохо.

Завтра еще ради интереса сравню по примеру 7make на c#
одну и туже картинку.


PS: вот конкретно этот кусок картинки = 89.4%
 
Последнее редактирование:

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

для этой:
Mean: 226,889824127662; Percent of White: 88,976401618691
 
  • Спасибо
Реакции: Bot_Sculptor

Bot_Sculptor

Client
Регистрация
11.06.2012
Сообщения
787
Благодарностей
236
Баллы
43

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
796
Баллы
113
Умножать каждую компоненту на 33,3% — безумие, в плане скорости это будет просто жесть. Правильно вам говорят, просто складывайте значения по RGB и делите на 16777215
 

Bot_Sculptor

Client
Регистрация
11.06.2012
Сообщения
787
Благодарностей
236
Баллы
43
Умножать каждую компоненту на 33,3% — безумие, в плане скорости это будет просто жесть. Правильно вам говорят, просто складывайте значения по RGB и делите на 16777215
ну не знаю ) на скорость грех жаловаться... к примеру картинка 5000*5000 пикселей. размером 70мб обрабатывается около 30 сек или меньше.
это все в куче т.е.: разбитие картинки на 25000000 пикселей и получение цвета RGB каждого пикселя. ну и вычисление процента белого..\

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

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
Надо же хоть чем то проц забивать) а то озу да озу
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

при таких картинках 5000*5000 я бы не все пиксели брал.
бери каждую 5-10 строку по ширине и высоте.
будет 6-3 с.

п.с. ресайз приблизительно так и работает.

Возможно быстрее будет, если сначала делать ресайз, а потом определять % белого.
 
Последнее редактирование:

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
742
Баллы
113
AForge.NET
http://www.aforgenet.com/framework/docs/html/e0afa487-2abc-1f34-554a-b18406058f24.htm

C#:
using System.Drawing;
using AForge;
using AForge.Imaging;


namespace ImageCount {
    class Program {
        static void Main(string[] args) {
            Bitmap img = new Bitmap("white.jpg");
            // gather statistics
            ImageStatistics stat = new ImageStatistics(img);
            // get red channel's histogram
            Histogram red = stat.Red;
            // check mean value of red channel
            Console.WriteLine(String.Format("Mean: {0}; Percent of White: {1}", red.Mean, red.Mean * 100 / 255));
            Console.ReadKey();
        }
    }
}


без фреймворков
http://stackoverflow.com/questions/1068373/how-to-calculate-the-average-rgb-color-values-of-a-bitmap

RedGreenBlueRGB valueColor
25500255Red
0255065280Green
0025516711680Blue
025525516776960Cyan
255025516711935Magenta
255255065535Yellow
25525525516777215White
1281281288421504Gray
0000Black
[TBODY] [/TBODY]
Раскажите пожалуйста, как этим кодом воспользоваться? Имею цвет 1,9,15 нужно узнать какой
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)