基于色彩的图象检索
在用vb实现的过程中,使用如下代码:
For i = 0 To Picture1.Width - 1
For j = 0 To Picture1.Height - 1
c = Picture1.Point(i, j)
r = (c And &HFF)
g = (c And &HFF00) / 256
b = (c And &HFF0000) / 65536
v = (r + g + b) / 3
s = 1 - 3 * min(r, g, b) / (r + g + b)
If s = 0 Then
h = 0
Else
h = 180 * (0.5 * (r - g) + (r - b)) / Sqr((r - g) ^ 2 + (r - b) ^ 2)
End If
If (r / v > g / v) Then
h = 360 - h
End If
If (h >= 0 And h <= 60 And s >= 0 And s <= 0.5 And v >= 0 And v <= 0.5) Then
num(0) = num(0) + 1
End If
If (h >= 0 And h <= 60 And s >= 0 And s <= 0.5 And v > 0.5 And v <= 1) Then
num(1) = num(1) + 1
End If
If (h >= 0 And h <= 60 And s > 0.5 And s <= 1 And v >= 0 And v <= 0.5) Then
num(2) = num(2) + 1
End If
If (h >= 0 And h <= 60 And s > 0.5 And s <= 1 And v >= 0.5 And v <= 1) Then
num(3) = num(3) + 1
End If
If (h > 60 And h <= 120 And s >= 0 And s <= 0.5 And v >= 0 And v <= 0.5) Then
num(4) = num(4) + 1
End If
If (h > 60 And h <= 120 And s >= 0 And s <= 0.5 And v > 0.5 And v <= 1) Then
num(5) = num(5) + 1
End If
If (h > 60 And h <= 120 And s > 0.5 And s <= 1 And v >= 0 And v <= 0.5) Then
num(6) = num(6) + 1
End If
If (h > 60 And h <= 120 And s > 0.5 And s <= 1 And v > 0.5 And v <= 1) Then
num(7) = num(7) + 1
End If
If (h > 120 And h <= 180 And s >= 0 And s <= 0.5 And v >= 0 And v <= 0.5) Then
num(8) = num(8) + 1
End If
If (h > 120 And h <= 180 And s >= 0 And s <= 0.5 And v > 0.5 And v <= 1) Then
num(9) = num(9) + 1
End If
If (h > 120 And h <= 180 And s > 0.5 And s <= 1 And v >= 0 And v <= 0.5) Then
num(10) = num(10) + 1
End If
If (h > 120 And h <= 180 And s > 0.5 And s <= 1 And v > 0.5 And v <= 1) Then
num(11) = num(11) + 1
End If
If (h > 180 And h <= 240 And s >= 0 And s <= 0.5 And v >= 0 And v <= 0.5) Then
num(12) = num(12) + 1
End If
If (h > 180 And h <= 240 And s >= 0 And s <= 0.5 And v > 0.5 And v <= 1) Then
num(13) = num(13) + 1
End If
If (h > 180 And h <= 240 And s > 0.5 And s <= 1 And v >= 0 And v <= 0.5) Then
num(14) = num(14) + 1
End If
If (h > 180 And h <= 240 And s > 0.5 And s <= 1 And v > 0.5 And v <= 1) Then
num(15) = num(15) + 1
End If
If (h > 240 And h <= 300 And s >= 0 And s <= 0.5 And v >= 0 And v <= 0.5) Then
num(16) = num(16) + 1
End If
If (h > 240 And h <= 300 And s >= 0 And s <= 0.5 And v > 0.5 And v <= 1) Then
num(17) = num(17) + 1
End If
If (h > 240 And h <= 300 And s > 0.5 And s <= 1 And v >= 0 And v <= 0.5) Then
num(18) = num(18) + 1
End If
If (h > 240 And h <= 300 And s > 0.5 And s <= 1 And v > 0.5 And v <= 1) Then
num(19) = num(19) + 1
End If
If (h > 300 And h <= 360 And s >= 0 And s <= 0.5 And v >= 0 And v <= 0.5) Then
num(20) = num(20) + 1
End If
If (h > 300 And h <= 360 And s >= 0 And s <= 0.5 And v > 0.5 And v <= 1) Then
num(21) = num(21) + 1
End If
If (h > 300 And h <= 360 And s > 0.5 And s <= 1 And v >= 0 And v <= 0.5) Then
num(22) = num(23) + 1
End If
If (h > 300 And h <= 360 And s > 0.5 And s <= 1 And v > 0.5 And v <= 1) Then
num(23) = num(23) + 1
End If
Next j
next i
运行过程中总是出现溢出错误,对不同大小的图象出现溢出的时机又是不同的
请指教!!谢谢