Colors 图像形成

Colors 图像形成,colors,Colors,如何在matlab中制作一幅(510*510的)图像,上面一行是红色、绿色、bue,下面一行是青色、品红色和黄色,比例相等。你的问题有点模糊,但我想我知道你在问什么。HSV图像的色调通道通常被认为是介于0到360度之间的,因为它是一个渐变通道。但是,对于您的图像,色调通道的值可能在0到1之间,这是您从函数中获得的输出,如果这是您用于获取HSV贴图的值的话 所以,如果你想改变你的色调120度,你必须改变你的范围1/3。换句话说,假设正位移为120度,则0到1/3之间的值应更改为1/3到2/3之间的

如何在matlab中制作一幅(510*510的)图像,上面一行是红色、绿色、bue,下面一行是青色、品红色和黄色,比例相等。

你的问题有点模糊,但我想我知道你在问什么。HSV图像的色调通道通常被认为是介于0到360度之间的,因为它是一个渐变通道。但是,对于您的图像,色调通道的值可能在0到1之间,这是您从函数中获得的输出,如果这是您用于获取HSV贴图的值的话

所以,如果你想改变你的色调120度,你必须改变你的范围1/3。换句话说,假设正位移为120度,则0到1/3之间的值应更改为1/3到2/3之间的值。您可以通过以下功能实现这一点:

H = rem(H + 1/3, 1);
对于120度的负偏移,只需应用240度的等效正偏移,如下所示:

H = rem(H + 2/3, 1);

对于一个穷人版本的@gnovice的答案,我建议简单地交换R、G和B通道,正如@JasonD所建议的那样

假设您有一个n×m×3的RGB图像存储在数组
img
中。然后,按如下方式移动通道

shiftedImg = img(:,:,[2 3 1]);


对于120度,不能直接交换r、g和b吗?请参阅以直接旋转RGB色调。+1获得正确答案。根据@Rabeel的评论,我怀疑这可能是一个关于数组重新排序的Matlab初学者练习。@Rabeel:我的解决方案根本不使用内置函数。除非将访问数组元素计算为内置函数,否则您将无法使用Matlab。
shiftedImg = img(:,:,[3 1 2]);