Если мы сместим оттенок на 2*pi/3, что изменится R, G, B, гистограммы?

Если мы сместим оттенок на 2*pi/3, что изменится R, G, B, гистограммы?

Как я могу проверить это? У меня есть доступ к фотошопу, так есть ли способ проверить это и найти ответ?

3 ответа

Решение

Согласно формуле преобразования HSV в RGB (ее часть):

Сдвиг HUE на 120° поменяет местами гистограммы каналов:

  • + 120°: R ->G->B-> R
  • -120°: B<- R <- G <- B

Чтобы проверить это в GIMP,- откройте гистограмму изображения в Colors \ Info \ Histogram,
Выберите красный, зеленый или синий канал, чтобы увидеть его гистограмму, а затем откройте диалоговое окно.
Colors \ Hue-Saturation а затем отрегулируйте оттенок на + - 120 градусов и увидите живой эффект в окне гистограммы.

Я не думаю, что есть общий ответ на этот вопрос, поскольку результат зависит от цветов изображения, а не только от гистограмм R,G,B. Вам нужно:

  1. вычислять гистограммы
  2. конвертировать RGB в HSV
  3. добавить оттенок и закрепить его на угловом интервале
  4. преобразовать обратно в RGB
  5. вычислять гистограммы

Я не пользуюсь фотошопом, но думаю , что там должны присутствовать № 1, № 2, № 4, № 5. №3 тоже должен быть там (в каком-то фильтре, который манипулирует яркостью, гаммой и т. д.), но трудно сказать, будет ли добавление к оттенку ограничено только ограничивающим углом или оно будет обрабатывать его как периодическое значение. В первом случае вам нужно исправить результаты:

  1. вычислять гистограммы
  2. конвертировать в HSV
  3. результат клонирования A на второе изображение B
  4. добавить A.hue+=pi/3 и **B.hue-=2*pi/3

    A держит незафиксированные цвета и B цвета, которые были зажаты в A смещено в правильное положение оттенка.

  5. в A перекрасить все пиксели с оттенком ==pi2 с указанным цветом

    pi2 должно быть значение, в котором ваш инструмент зафиксировал оттенки выше pi2, чтобы оно могло быть равно нулю, pi2 или на один шаг меньше, чем pi2. Это позволит как позже игнорировать зажатые значения.

  6. в B перекрасить все пиксели с оттенком ==0 с указанным цветом
  7. конвертировать A,B в RGB
  8. вычислять гистограммы, игнорируя указанный цвет
  9. объединить гистограммы A,B

    просто добавьте значения графика вместе.

И теперь вы можете сравнить гистограммы, чтобы оценить изменения на некоторых образцах изображений.

В любом случае вы можете сделать все это на любом языке программирования. Например, большинство необходимых операций присутствуют в большинстве обработчиков изображений, а библиотеки компьютерного зрения, такие как OpenCV, и добавление к оттенку - всего 2 вложенных. for сложение петель и одиночные if утверждение как:

for (y=0;y<ys;y++)
 for (x=0;x<xs;x++)
  {
  pixel[y][x].h+=pi2/3.0;
  if (pixel[y][x].h>=pi2)
   pixel[y][x].h-=pi2;
  }

из грубых большинства форматов пикселей HSV, которые я использовал, не используют плавающие значения, поэтому оттенок может быть представлен, например, 8-битным целым числом без знака, и в этом случае код будет выглядеть так:

for (y=0;y<ys;y++)
 for (x=0;x<xs;x++)
  pixel[y][x].h=(pixel[y][x].h+(256/3))&255;

Если вам нужно реализовать преобразования RGB/HSV, посмотрите здесь:

Я думаю, что это может вас заинтересовать

Глядя на это с математической точки зрения 2×pi/3 с pi = 3,14, вы получаете 2 × pi, что является "областью действия" круга. Разделенный на 3 означает, что у вас треть круга или просто 120°

Другие вопросы по тегам