0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 14

Расчет дисперсии фрагмента изображения

24.04.2016, 12:05. Показов 2860. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Хочется обратиться к вам за подсказкой. Мне нужно осуществить сегментацию изображения для отделения основной части рисунка от фона. Для этого нужно у каждого сегмента найти дисперсию и сравнить ее с пороговым значением. Сначала хотела просто попробовать найти дисперсию заданного сегмента с координатами (х1,у1)-верхний левый угол, (х2,у2)-правый нижний, но опять столкнулась со своим незнанием. Есть формула для расчета дисперсии, но как определить в ней просто численное значение цвета пикселя I(i,j) для дальнейшего расчета в формуле? какая функция это делает?
т.к. новенькая в с++, если можно, хоть частичку кода
прикрепила картинкой формулу дисперсии
Миниатюры
Расчет дисперсии фрагмента изображения  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.04.2016, 12:05
Ответы с готовыми решениями:

Искажения фрагмента изображения при копировании или записи
Добрый день, Знатоки! Помогите пожалуйста с проблемой! Пытаюсь вырезать заданный фрагмент из хорошего файла изображения и записать в...

Расчёт дисперсии
Как в данном случае вычислить дисперсию? (файл main.c со строки 420) Исходный коды:...

Расчёт дисперсии
Привет! У меня возникла странная проблема - при считывании столбца данных из текстового файла (данных около 20 000) и расчёта дисперсии...

10
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 14
24.04.2016, 12:20  [ТС]
P.S: изображение черно-белое

Добавлено через 1 минуту
W*W - размеры сегмента
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,026
25.04.2016, 18:04
Краткое руководство по работе с классом TCanvas для начинающих (конец поста №3)
Миниатюры
Расчет дисперсии фрагмента изображения  
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,026
26.04.2016, 07:15
https://ru.wikipedia.org/wiki/... 0%B3%D0%BE (оттенки серого)

Пример:
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
34
35
36
37
38
  const W = 50;
  unsigned long color, M, V;
  Byte R, G, B, F;
 
  Image2->Canvas->FillRect(Image2->Canvas->ClipRect);
 
  for (int I = 0; I < Image1->Width / W; I++)
    for (int J = 0; J < Image1->Height / W; J++)
    {
      M = 0;
      for (int i = 0; i < W; i++)
        for (int j = 0; j < W; j++)
        {
          color = Image1->Canvas->Pixels[i+I*W][j+J*W];
          R = GetRValue(color);
          G = GetGValue(color);
          B = GetBValue(color);
          M += 0.299*R + 0.587*G + 0.114*B;
        }
      M /= W*W;
 
      V = 0;
      for (int i = 0; i < W; i++)
        for (int j = 0; j < W; j++)
        {
          color = Image1->Canvas->Pixels[i+I*W][j+J*W];
          R = GetRValue(color);
          G = GetGValue(color);
          B = GetBValue(color);
          // замечание: R = G = B для черно-белого изображения и
          // хватит одной составляющей вместо среднего значения F
          F = (R + G + B) / 3;
          V += (F - M) * (F - M);
        }
      V /= W*W;
 
      Image2->Canvas->TextOutW(I*W, J*W, V);
    }
Миниатюры
Расчет дисперсии фрагмента изображения  
1
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
26.04.2016, 14:08
Любопытства ради - почему когда считаем сумму для участка используем "яркость" а когда считаем отклонение от среднего простую среднюю по компонентам цвета?
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,026
26.04.2016, 14:25
Почему среднее значение оттенка серого M(k) и яркость - см. ссылку выше. Это, насколько я понял, одно и то же.
Для отклонения от среднего используется цвет пикселя. Для черно-белого изображения значения компонент (R, G, B) одинаковые. Поэтому берем любую из них или среднее. В общем виде (для цветной картинки) такой способ может быть ошибочен. Для нашего же случая это считаю вполне допустимым.
Замечание: M(k) принимает значения от 0 до 255 включительно.
Значение цвета имеет тип unsigned long, поэтому используется значение компонент (диапазон как у M(k), 0-255).
Тут уже в ход пошла простая логика. Надеюсь, что она меня не подвела.
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
26.04.2016, 15:45
Цитата Сообщение от gunslinger Посмотреть сообщение
В общем виде (для цветной картинки) такой способ может быть ошибочен.
Конечно, допустим что вся картинка зеленая (R=0, G=255, B=0), что получится?
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,026
27.04.2016, 02:32
Да это понятно. Тогда нужны уточнения, в каком виде цвет брать в зависимости от постановки задачи.
Для данной задачи уточнение тоже не помешало бы, если честно. Гадать можно долго, попадая пальцем в небо.
Логика логикой, а нюансы каждый по своему может понимать, когда четко не прописано.
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
27.04.2016, 05:18
Просто, в обоих циклах цвет нужно брать одинаково или 0.299*R + 0.587*G + 0.114*B или (R + G + B) / 3
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
27.04.2016, 09:35
Цитата Сообщение от gumi250 Посмотреть сообщение
Просто, в обоих циклах цвет нужно брать одинаково или 0.299*R + 0.587*G + 0.114*B или (R + G + B) / 3
во во и я об этом спросил но ответ не понял поэтому сижу думаю что же со мной не так
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,026
27.04.2016, 14:52
gumi250, возможно, прав, но тогда первая формула должна быть.
А почему возможно - для меня, допустим, "значение цвета" и "оттенок серого (яркость)" вовсе не равнозначные понятия (даже для черно-белого изображения).
Лучше пусть ТС все разъяснит, если в курсе.
Пикачу goodnastya, я вызываю тебя.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.04.2016, 14:52
Помогаю со студенческими работами здесь

Расчет времени выполнения команд фрагмента кода (MCS51)
Доброго времени суток, уважаемые коллеги! У начинающего программиста возникла банальная проблема с подсчетом времени выполнения кусочка...

Поиск фрагмента изображения.
Доброго дня! Подскажите, как найти часть картинки на изображении? т.е. имеется фрагмент изображения, его надо найти на общей картинке....

выделение фрагмента изображения
несколько чайниковый вопрос: кто может подкинет фрагмент кода (примерчик) - выделение фрагмента изображения (с компонентой TImage), с...

Копирование фрагмента изображения
Здравствуйте. Нужно скопировать выделенный фрагмент изображения из QPixmap в другое место формы. То есть перенести кусок изображение в...

Обработка фрагмента изображения
Как в данном квадратном изображении выделить фрагмент (центр которого совпадает с центром изображения) и обработать его отдельно от...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru