我需要一种算法或函数来将可见光谱范围的每个波长映射到其等效的RGB值.RGB系统和灯的波长之间是否存在任何结构关系?喜欢这个图像: 替代文字http://www1.appstate.edu/~kms/classes/psy3203/Color/spectrum5.gif 抱歉,如果这是无关紧要的: - ]
我正在尝试创建一个类似于罪恶之城或其他电影的效果,除了图像中的所有颜色之外,它们都会删除所有颜色.
我有一个RGB图像,我想转换为灰度,但我想保持一种颜色.
这是我的照片:

我想保持红色.其余的应该是灰度的.
这是我的代码输出到目前为止(你可以看到区域是正确的,我不知道为什么它们是白色而不是红色):

到目前为止,这是我的代码:
filename = 'roses.jpg';
[cdata,map] = imread( filename );
% convert to RGB if it is indexed image
if ~isempty( map )
cdata = idx2rgb( cdata, map );
end
%imtool('roses.jpg');
imWidth = 685;
imHeight = 428;
% RGB ranges of a color we want to keep
redRange = [140 255];
greenRange = [0 40];
blueRange = [0 40];
% RGB values we don't want to convert to grayscale
redToKeep = zeros(imHeight, imWidth);
greenToKeep …Run Code Online (Sandbox Code Playgroud) 我们有一个想要显示的热图.构成显示值的数字是未知的(除了它们是正整数).数字的范围也是未知的(再次,除了它们将是正整数).范围可以介于0到200或578和1M之间.这取决于数据,这是未知的.
我们想要获取未知范围的正整数并将其转换为缩放(压缩)范围,以在热图中使用RGB值显示.我希望这是有道理的.谢谢!
我想澄清一下min/max值需要"插入"论坛.
是否有算法在给定色调值(0度到360度)之间找出颜色的波长.MATLAB中是否有任何内置函数?
我正试图在openGL中绘制一个彩虹色的情节传奇.这是我到目前为止所得到的:
glBegin(GL_QUADS);
for (int i = 0; i != legendElements; ++i)
{
GLfloat const cellColorIntensity = (GLfloat) i / (GLfloat) legendElements;
OpenGL::pSetHSV(cellColorIntensity*360.0f, 1.0f, 1.0f);
// draw the ith legend element
GLdouble const xLeft = xBeginRight - legendWidth;
GLdouble const xRight = xBeginRight;
GLdouble const yBottom = (GLdouble)i * legendHeight /
(GLdouble)legendElements + legendHeight;
GLdouble const yTop = yBottom + legendHeight;
glVertex2d(xLeft, yTop); // top-left
glVertex2d(xRight, yTop); // top-right
glVertex2d(xRight, yBottom); // bottom-right
glVertex2d(xLeft, yBottom); // bottom-left
}
glEnd();
Run Code Online (Sandbox Code Playgroud)
legendElements是构成"彩虹"的离散方块的数量. …
我必须实现的任务是将24位BMP转换为该绘图仪的指令集.在绘图仪中,我可以改变16种常见颜色.我面临的第一个复杂性是颜色减少.我面临的第二个复杂性是如何将像素转换为一组绘图指令.
作为使用油漆的绘图工具刷将被使用.这意味着绘图仪绘制线不会那么小,而且它们会相对较短.
请提出可用于解决此图像数据转换问题的算法?
一些初步结果: