Вопрос

Любые предложения о том, как я могу пойти построению цветового пространства RGB как 2-D Matrix? Мне нужно теоретическое описание того, что происходит; Образец кода или псевдокод будет полезен, но не требуется. Спасибо!

Это было полезно?

Решение

Если вы хотите представлять каждый цвет в пространстве RGB в 2D сетке, в результате в результате невозможно избежать разрывов / резких границ. Но некоторые методы сопоставления будут выглядеть лучше, чем другие.

Примеры от возможностиwrong.wordpress.com ALLRGB: Гильбертные кривые и случайные охватывающие деревья:

  • Пересекайте пиксели изображения с помощью двухмерного (порядка 12) кривой Гильберта, в то же время, проходящие куб RGB COBE с помощью трехмерного (порядка 8) кривой Гильберта, присваивая каждый пиксель в свою очередь. hilbert RGB 3D- loading=2D">

  • «Широчная обход случайного охватывающего дерева пикселей, присвоение цвета в порядке кривой Гильберта». Breadth-first traversal of random spanning tree of pixels, assigning colors in Hilbert curve order.

Также проверьте allrgb.com., «Цель ALLRGB проста: создать изображения с одним пикселем для каждого цвета RGB (16777216); не один цвет отсутствует, а не один цвет.

Другие советы

Если вы не хотите терять информацию, вам нужно будет использовать три измерения. Если вы можете потерять некоторую мерную информацию, то это легко. Просто делай это:

// or HSV
int [256*256][256] colorMatrix;
for (int r = 0; r < 256; r++) {
    for (int r = 0; r < 256; r++) {
        for (int r = 0; r < 256; r++) {
            colorMatrix[256*r+g][b] = color(r, g, b);
        }
    }
}

На самом деле нет хорошего ответа на 2D, потому что вам действительно нужно 3 измерения. Конечно, вы можете проецировать 3D-пространство на 2D, но чтобы сохранить значимое количество информации, которую вам почти нужно предоставить обычные 3D-манипулирования, поэтому вы можете увидеть проекцию, просмотренную из различных разных углов и такого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top