Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 13.11.2015
Сообщений: 56
1

Расчет среднего значения цвета пикселей в цикле

05.12.2017, 23:58. Показов 1834. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер! Остался день до сдачи курсового, а заткнулся на самом, казалось бы, простом месте.

Идея состоит в том, что есть изображение в Image1, размером 380х360. Его я делю областями 10х10 (размеры 38х36 соответственно). Набросал блок-схему, сделал циклы в цикле, чтобы одним разом пройтись по всем пикселям, посчитать сумму значений (определяю R составляющую цвета, диапазон 0-255 естественно) и разделить на количество точек в квадрате (38*36=1368). Все абсолютно кажется просто и чисто логически должно работать, но проблема заключается в том, что когда перехожу к последующим квадратам среднее значение уходит далеко за вообще допустимые пределы, более сотни тысяч. Сижу, ищу ошибку, не могу понять в чем дело, башка уже не варит. Может подскажете где мог что-то упустить, пожалуйста?

C++
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
30
31
32
33
int R,G,B,i,j;
double p_value=0;   // временная переменная суммы значений квадрата пикселей
int cx=38;          // константа ширины квадрата
int cy=36;          // константа высоты квадрата
int kvx=1;           // счетчик рассчитуемого квадрата по горизонтали
int kvy=1;          // счетчик рассчитуемого квадрата по вертикали
int a=0;           // ячейки SG2
int b=0;           // ячейки SG2
int i_s=0;         // начальная точка квадрата по х
int j_s=0;         // начальная точка квадрата по у
 
 
//for (kvy = 1; kvy < 11; kvy++) {                временно отказался от перехода по y квадратам
        for (kvx = 1; kvx < 11; kvx++) {   // цикл начинается с расчета первого квадрата по горизонтали
            for (i = i_s; i < cx; i++) {      // начиная с нулевого пикселя и до граничного в квадрате по иксу...
                for (j = j_s; j < cy; j++) {  // начиная с нулевого пикселя и до граничного в квадрате по игрику...
                    p_value = p_value+GetRValue(Form2->Image1->Picture->Bitmap->Canvas->Pixels[i][j]); // суммируем значение R составляющей
                }
            }
        p_value=p_value/1368;  // получаем среднее значение R в пройденном квадрате
        Form2->StringGrid2->Cells[a][b]=p_value; // записываем полученное среднее
        p_value=0; // обнуляем временную переменную суммирования
        i_s=cx;      // смещаем начало следующего квадрата по горизонтали
        cx=cx+cx; // смещаем конец следующего квадрата по горизонтали
        b++; // следующее значение в соседнюю ячейку StringGrid
        }
    /*i_s=0; // аналогичный цикл, который смещает расчет квадратов вниз, по игрику
    cx=38;
    b=0;
    a++;
    j_s=cy;
    cy=cy+cy;
    }      */
Для себя уже расписал прям каждую строчку, кажется должно работать ведь. Пробовал разные изображения уже, ошибка видимо точно в алгоритме

Добавлено через 16 минут
Ура, нашел ошибку! В строке:
C++
1
cx=cx+cx; // смещаем конец следующего квадрата по горизонтали
Происходило постоянное смещение за рабочую область, все заработало при:
C++
1
cx=cx+38; // смещаем конец следующего квадрата по горизонтали
Извиняюсь за невнимательность!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2017, 23:58
Ответы с готовыми решениями:

Расчет среднего значения в колонке ListView с учетом значения в ComboBox
Помогите решить такую задачу.Пользователь заполняет таблицу ListView данными о моторах, включающими...

Расчет среднего значения помесячно
Доброго времени суток. Вопрос. Как можно посчитать среднее &quot;помесячное&quot; значение за год, не...

Расчет среднего значения помесячно за год
Всем привет. Подскажите, как можно посчитать средние помесячные траты за год в MySQL. Пробую...

Расчёт среднего значения цифр в числе
Вводится последовательность из N целых элементов. Для каждого элемента последовательности найти...

0
05.12.2017, 23:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2017, 23:58
Помогаю со студенческими работами здесь

Расчет среднего значения для конкретного столбца матрицы
Добрый день! Имеется матрица из нескольких столбцов. Расчет среднего значения для конкретного...

Автоматический расчет среднего значения после указания периода времени
Здравствуйте! Помогите пожалуйста сделать автоматический расчет среднего значения из имеющихся...

Excel. Автоматический расчет среднего значения после указания периода времени
Здравствуйте! Помогите пожалуйста сделать автоматический расчет среднего значения из имеющихся...

Расчет среднего значения по динамическому диапазону. Excel 2016, без макросов
Есть таблица с числовыми значениями, нужно вытаскивать средние значения с определенным периодом. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru