Если мы сместим оттенок на 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. Вам нужно:
- вычислять гистограммы
- конвертировать RGB в HSV
- добавить оттенок и закрепить его на угловом интервале
- преобразовать обратно в RGB
- вычислять гистограммы
Я не пользуюсь фотошопом, но думаю , что там должны присутствовать № 1, № 2, № 4, № 5. №3 тоже должен быть там (в каком-то фильтре, который манипулирует яркостью, гаммой и т. д.), но трудно сказать, будет ли добавление к оттенку ограничено только ограничивающим углом или оно будет обрабатывать его как периодическое значение. В первом случае вам нужно исправить результаты:
- вычислять гистограммы
- конвертировать в HSV
- результат клонирования A на второе изображение B
добавить A.hue+=pi/3 и **B.hue-=2*pi/3
A
держит незафиксированные цвета иB
цвета, которые были зажаты вA
смещено в правильное положение оттенка.в A перекрасить все пиксели с оттенком ==pi2 с указанным цветом
pi2
должно быть значение, в котором ваш инструмент зафиксировал оттенки выше pi2, чтобы оно могло быть равно нулю, pi2 или на один шаг меньше, чем pi2. Это позволит как позже игнорировать зажатые значения.- в B перекрасить все пиксели с оттенком ==0 с указанным цветом
- конвертировать A,B в RGB
- вычислять гистограммы, игнорируя указанный цвет
объединить гистограммы 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°