분류 | 게시판 |
베스트 |
|
유머 |
|
이야기 |
|
이슈 |
|
생활 |
|
취미 |
|
학술 |
|
방송연예 |
|
방송프로그램 |
|
디지털 |
|
스포츠 |
|
야구팀 |
|
게임1 |
|
게임2 |
|
기타 |
|
운영 |
|
임시게시판 |
|
lena512_GRAY.raw 파일을 DCT하는 코드를 작성했습니다.
그런데
파란색으로 체크한 부분처럼 출력이 되고 이미지도 저렇게 나와야하는데 빨간색처럼 출력이 됩니다..
어디를 손대야할지 감이 안잡혀서 질문드립니다ㅠ
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#define WIDTH 512
#define HEIGHT 512
#define PI 3.141592
int main() {
FILE* fp;
unsigned char* buf;
unsigned char* output;
buf = (unsigned char*)malloc(WIDTH * HEIGHT);
output = (unsigned char*)malloc(WIDTH * HEIGHT);
double dct1 = 0;
fopen_s(&fp, "lena512_GRAY.raw", "rb");
fread(buf, 1, WIDTH * HEIGHT, fp);
fclose(fp);
for (int h = 0; h < HEIGHT; h += 8) {
for (int w = 0; w < WIDTH; w += 8) {
for (int u = 0; u < 8; u++) {
for (int v = 0; v < 8; v++) {
double cu, cv;
for (int x = 0; x < 8; x++) {
for (int y = 0; y < 8; y++) {
dct1 += (buf[h * HEIGHT + w + x * HEIGHT + y] - 128) * cos((2 * x + 1) * u * PI / 16) * cos((2 * y + 1) * v * PI / 16);
}
}
if (u == 0) {
cu = 1 / sqrt(2);
}
else {
cu = 1;
}
if (v == 0) {
cv = 1 / sqrt(2);
}
else {
cv = 1;
}
printf("%6.2f\t", cu * cv / 4 * dct1);
output[h * HEIGHT + w + u * HEIGHT + v] = cu * cv / 4 * dct1;
dct1 = 0;
}
printf("\n");
}
}
}
fopen_s(&fp, "output.raw", "wb");
fwrite(output, 1, WIDTH * HEIGHT, fp);
fclose(fp);
return 0;
}
죄송합니다. 댓글 작성은 회원만 가능합니다.
번호 | 제 목 | 이름 | 날짜 | 조회 | 추천 | |||||
---|---|---|---|---|---|---|---|---|---|---|
▶ | 학부수준 질문드립니다. [2] | se1251 | 20/11/17 00:29 | 185 | 0 | |||||
7 | 파이썬 질문입니다. | se1251 | 20/10/16 20:28 | 112 | 0 | |||||
6 | 리눅스 gcc 질문드립니다... [1] | zzzjinwook | 18/04/09 21:06 | 48 | 0 | |||||
5 | strcpy_s ..? [3] | zzzjinwook | 17/11/19 20:12 | 69 | 0 | |||||
4 | strcmp 질문 드립니다... [5] | zzzjinwook | 17/10/16 16:42 | 59 | 0 | |||||
3 | 특정 수 출력 코드 질문드립니다 [8] | zzzjinwook | 17/09/18 22:14 | 34 | 0 | |||||
2 | c++ 특정 숫자 출력 질문 드립니다.. [9] | zzzjinwook | 17/09/18 14:36 | 63 | 0 | |||||
1 | c언어 초보 좀 도와주십쇼... [12] | zzzjinwook | 17/06/10 17:32 | 87 | 0/7 | |||||
|
||||||||||
[1] | ||||||||||