ippiRGBToHSV_8u_C3R函数参数

alexander_david 2010-03-18 05:21:51
输入图像是RGB数据,3个通道,每个通道是8bit,将RGB色彩空间转换到HSV色彩空间,这个函数的目标空间也是8个bit的,这个就让人难以理解了:H(色调)的取值是0到360之间的整数,S(饱和度)的取值是0到1之间的小数,这两个数值怎么能用一个字节的空间来存储呢?

请高人指点。
...全文
211 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
alexander_david 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hyhyj 的回复:]
这是因为在IPP图像库中做了一些尺度变换。比如:
S'=s*MAX_VAL.
H'=s*MAX_VAL/360.
Max_Val in 8bit unsigned is 255.
结果RGB 3x8bit to HSV 变换后仍保存为HSV 3x8bit 0-255.

有些软件用直接用16位的整数表示H,浮点数表示S, 不过有些软件也会像IPP一样做尺度调整。
RGB to……
[/Quote]
非常感谢。
hyhyj 2010-04-14
  • 打赏
  • 举报
回复
这是因为在IPP图像库中做了一些尺度变换。比如:
S'=s*MAX_VAL.
H'=s*MAX_VAL/360.
Max_Val in 8bit unsigned is 255.
结果RGB 3x8bit to HSV 变换后仍保存为HSV 3x8bit 0-255.

有些软件用直接用16位的整数表示H,浮点数表示S, 不过有些软件也会像IPP一样做尺度调整。
RGB to HSV 基本变换公式是一样的 (从ipp manual中拷贝的)
// Value:
V = max(R,G,B);
// Saturation:
temp = min(R,G,B);
if V = 0 then // achromatics case
S = 0// H = 0
else // chromatics case
S = (V - temp)/V
// Hue:
Cr = (V - R) / (V - temp)
Cg = (V - G) / (V - temp)
Cb = (V - B) / (V - temp)
if R = V then H = Cb - Cg
if G = V then H = 2 + Cr - Cb
if B = V then H = 4 + Cg - Cr
H = 60*H
if H < 0 then H = H + 360。 

The computed H,S,V values are scaled to the full range of the destination data type (see Table
2-2 in Chapter 2).

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧