(f: number[][], size: number)
| 161 | } |
| 162 | |
| 163 | function applyDCT(f: number[][], size: number) { |
| 164 | const N = size; |
| 165 | const F: number[][] = []; |
| 166 | |
| 167 | for (let u = 0; u < N; u++) { |
| 168 | const row = []; |
| 169 | for (let v = 0; v < N; v++) { |
| 170 | let sum = 0; |
| 171 | for (let i = 0; i < N; i++) { |
| 172 | for (let j = 0; j < N; j++) { |
| 173 | sum += |
| 174 | Math.cos(((2 * i + 1) / (2.0 * N)) * u * Math.PI) * |
| 175 | Math.cos(((2 * j + 1) / (2.0 * N)) * v * Math.PI) * |
| 176 | f[i]![j]!; |
| 177 | } |
| 178 | } |
| 179 | |
| 180 | sum *= (c[u]! * c[v]!) / 4; |
| 181 | row[v] = sum; |
| 182 | F[u] = row; |
| 183 | } |
| 184 | } |
| 185 | |
| 186 | return F; |
| 187 | } |
| 188 | |
| 189 | export default ImagePHash; |
no outgoing calls
no test coverage detected
searching dependent graphs…