【发布时间】:2012-12-27 16:13:40
【问题描述】:
如何在matlab中用红色,绿色,bue在上排,青色洋红色和黄色在下排制作一个图像(510 * 510),所有图像的比例相等。
【问题讨论】:
-
120度,r、g、b不能互换吗?
-
请参阅stackoverflow.com/a/8510751/5987 以直接旋转 RGB 色调。
标签: colors
如何在matlab中用红色,绿色,bue在上排,青色洋红色和黄色在下排制作一个图像(510 * 510),所有图像的比例相等。
【问题讨论】:
标签: colors
你的问题有点含糊,但我认为我知道你在问什么。 HSV 图像的色调通道通常被认为是从 0 到 360 度,因为它是一个cylindrical-coordinate representation of points in an RGB color model。但是,对于您的图像,色调通道的值可能介于 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);
【讨论】:
对于@gnovice 答案的穷人版本,我建议按照@JasonD 的建议简单地交换 R、G 和 B 频道
假设您有一个 n×m×3 RGB 图像存储在数组 img 中。然后,您按如下方式转换频道
shiftedImg = img(:,:,[2 3 1]);
或
shiftedImg = img(:,:,[3 1 2]);
【讨论】: