[問題] 把RGB轉成HSI
將圖從RGB轉HSI
我跑出來是一個很奇怪顏色的圖
不知道是不是公式打錯了?!
請問要怎麼解決呢?? 拜託了 >"< 感謝
附上程式碼
for(j=0;j < info.height;j++)
{
for(i=0;i < info.width;i++)
{
fread(&color,1,3,left);
intensity = (color.R + color.G + color.B) / 3;
if ((color.R + color.G + color.B) == 765)
{
saturation = 0;
hue = 0;
}
minmum (color.R, color.G, color.B);
if (intensity > 0)
{
did = minmum (color.R, color.G, color.B)/ intensity;
saturation = 1 - did;
}
else if (intensity == 0)
{
saturation = 0;
}
color123 = (color.R*color.R) + (color.G*color.G) +
(color.B*color.B) - (color.R*color.G) -
(color.R*color.B) - (color.G*color.B);
sqrt2 = (double) sqrt (color123);
temp = (color.R - (color.G/2) - (color.B/2)) / ( sqrt2 );
if (color.G >= color.B)
{
hue = acos(temp);
}
else if (color.B > color.G)
{
hue = 360 - acos(temp);
}
fwrite(&hue,1,1,lena);
fwrite(&intensity,1,1,lena);
fwrite(&saturation,1,1,lena);
}
}
附上轉換公式 http://ppt.cc/2PBT
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.152.145
※ 編輯: unixxxx 來自: 140.115.152.145 (11/03 16:03)
※ 編輯: unixxxx 來自: 140.115.152.145 (11/03 16:08)
→
11/03 16:33, , 1F
11/03 16:33, 1F
→
11/03 17:04, , 2F
11/03 17:04, 2F
→
11/03 17:05, , 3F
11/03 17:05, 3F
→
11/03 17:32, , 4F
11/03 17:32, 4F
我前面有打double intensity
和 struct Color{
unsigned double B;
unsigned double G;
unsigned double R;
}
應該沒錯吧?!
※ 編輯: unixxxx 來自: 140.115.152.145 (11/03 19:24)
推
11/03 20:04, , 5F
11/03 20:04, 5F
→
11/03 20:05, , 6F
11/03 20:05, 6F
→
11/03 20:06, , 7F
11/03 20:06, 7F
→
11/03 20:07, , 8F
11/03 20:07, 8F
→
11/03 20:10, , 9F
11/03 20:10, 9F
→
11/03 20:12, , 10F
11/03 20:12, 10F
→
11/03 20:13, , 11F
11/03 20:13, 11F
我又試了一下 圖的輪廓出來了 不過顏色不對...
所以我角度公式有問題 要改成pi ?!
照Ed大改後 沒問題了 感謝!!
※ 編輯: unixxxx 來自: 140.115.152.145 (11/04 17:08)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章