-1

如何在matlab中制作一个图像(510 * 510),上排为红色,绿色,bue,下排为青色洋红色和黄色,所有图像均等。

4

2 回答 2

2

你的问题有点模糊,但我我知道你在问什么。HSV 图像的色调通道通常被认为是 0 到 360 度的范围,因为它是RGB 颜色模型中点的柱坐标表示。但是,对于您的图像,色调通道的值可能介于 0 到 1 之间,这就是您从函数RGB2HSV获得的输出,如果这是您用来获取 HSV 贴图的输出。

因此,如果您想将色调移动 120 度,则必须将范围移动 1/3。换言之,假设正偏移 120 度,应将范围从 0 到 1/3 的值更改为从 1/3 到 2/3 的范围。您可以使用REM函数来实现这一点,如下所示:

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

对于 120 度的负位移,您可以应用等效的 240 度正位移,如下所示:

H = rem(H + 2/3, 1);
于 2012-12-27T16:34:59.483 回答
2

对于@gnovice 答案的穷人版本,我建议按照@JasonD 的建议简单地交换 R、G 和 B 频道

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

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

或者

shiftedImg = img(:,:,[3 1 2]);
于 2012-12-27T17:23:11.140 回答