M = 8
Làm tròn:
H8, W8 chia hết cho 8:
H8 = H; If H Mod M <> 0 Then H8 = (H / M + 1) * M
W8 = H: If W Mod M <> 0 Then W8 = (W / M + 1) * M
Đặt bằng 0 phần mở rộng của ảnh f(i,j):
For i = 1 To H8
For j = W+1 To W8
f(i, j) = 0
For j = 1 To W8
For j = H+1 To H8
f(i, j) = 0
Tính hàm au(u):
where u = 0, 1, ..,7; v = 0, 1, ..,7
and
omegaM = 3.14 / (2 * M)
au(0) = (1 / M) ^ (1 / 2)
For u = 1 To M - 1: au(u) = (2 / M) ^ (1 / 2): Next
Biến đổi cosine
For u = 0 To (H8 - 1) / M
For v = 0 To (W8 - 1) / M
For p = 0 To M - 1
For q = 0 To M - 1
fcos(u * M + p, v * M + q) = 0
For Y = 0 To M - 1
For X = 0 To M - 1
alphaX = omegaM * (2 * X + 1) * p
alphaY = omegaM * (2 * Y + 1) * q
fc(u * M + p, v * M + q) = fc(u * M + p, v * M + q) + f(u * M + X, v * M + Y) * Cos(alphaX) * Cos(alphaY)
Next X: Next Y
fc(u * M + p, v * M + q) = au(p) * au(q) * fc(u * M + p, v * M + q)
Next q: Next p
Next v: Next u
'Bien doi cosin nguoc
For i = 0 To (H8 - 1) / M
For j = 0 To (W8 - 1) / M
For X = 0 To M - 1
For Y = 0 To M - 1
dc = 0
For u = 0 To M - 1
For v = 0 To N - 1
alphaX = omegaM * (2 * X + 1) * u
alphaY = omegaM * (2 * Y + 1) * v
dc = dc + au(u) * au(v) * fc(i * M + u, j * M + v) * Cos(alphaX) * Cos(alphaY)
Next v
Next u
fx(i * M + X, j * N + Y) = Round(dc) Mod 256
Next: Next
Next j: Next i
Chia sẻ với bạn bè của bạn: |