| 문제 다음 8 x 8 block image로부터 DCT 계수를 얻은 후에, DCT 계수 값을 print 해보세요 --------------------------------------------------------------------------------------------------------------- #define PI (3.14) // 8 x8 Y pixel value BYTE ff[8][8] ={ {137, 139, 139, 136, 134, 137, 145, 152 }, {137, 137, 138, 138, 135, 136, 143, 152 }, {137, 139 ,140, 139 ,134, 144, 145, 150 }, {134, 140, 140, 138 ,140, 144, 145, 146}, {137, 139, 141 ,136 ,134, 137, 145, 140 }, {137, 139, 140, 140 ,144, 146, 144, 133}, {140, 140, 142, 146, 148, 143, 134 ,128 }, {142, 139, 139, 145, 149, 143, 132, 128 }} ; --------------------------------------------------------------------------------------------------------------- ff는 위의 grayscale data임 \(\boldsymbol{F(u,v) = \sum_{i=0}^{7}\sum_{j=0}^{7}f(i,j)cos(\frac{(2i+1)u\pi }{16})cos(\frac{(2j+1)u\pi }{16})}\) DCT 계수 값은? |
1. 코드
#define PI (3.14)
int u, v;
float F[8][8];
// 8 x8 Y pixel value
BYTE ff[8][8] = { {137, 139, 139, 136, 134, 137, 145, 152 },
{137, 137, 138, 138, 135, 136, 143, 152 },
{137, 139 ,140, 139 ,134, 144, 145, 150 },
{134, 140, 140, 138 ,140, 144, 145, 146},
{137, 139, 141 ,136 ,134, 137, 145, 140 },
{137, 139, 140, 140 ,144, 146, 144, 133},
{140, 140, 142, 146, 148, 143, 134 ,128 },
{142, 139, 139, 145, 149, 143, 132, 128 } };
for (u = 0; u < 8; u++) {
for (v = 0; v < 8; v++) {
F[u][v] = 0.0;
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
F[u][v] += ff[i][j] * cos((2 * i + 1) * u * PI / 16) * cos((2 * j + 1) * v * PI / 16);
}
}
printf("%.0f ", F[u][v]);
}
printf("\n");
}
2. 결과
8960 -46 -12 -4 -25 8 -4 3
9 -73 97 -63 -2 2 4 -6
-10 29 -19 8 33 -8 3 -2
-7 -0 7 -1 -14 9 -10 13
-16 -0 13 -6 -2 -4 -4 6
27 0 -19 6 -5 -9 3 -5
7 -11 3 12 -13 3 3 -5
-4 13 13 -11 -2 10 4 -3'영상처리' 카테고리의 다른 글
| [영상처리] Entropy (0) | 2022.11.18 |
|---|---|
| [영상처리] 상관성(Correlation) (0) | 2022.11.18 |
| [영상처리] 차영상의 Histogram (0) | 2022.11.17 |
| [영상처리] 영상 확대 (0) | 2022.11.16 |
| [영상처리] Edge 검출을 위해서 Sobel Edge 연산자를 이용 (0) | 2022.11.16 |