영상처리에서 dct알고리즘 구현할 때 실행에러가 나네요..;;
가온길
dct알고리즘에서 왜 결과가 안나올까요?질문 요약 :빌드는 되는데 실행에서 에러가 나네요. 왜 그렇죠?질문 내용 : dct알고리즘 실행하는 중 에러발생합니다.
빌드나 컴파일시에 오류나는 건 아니구요.
영상의 raw파일을 하나 생성하는데, 문제가 있는거 같아요. 코드 첨부하겠습니다.
========================================================================
#include stdio.h
#include stdlib.h
#include memory.h
#include math.h
typedef unsigned char BYTE;
#define WIDTH 256 //width size of input image
#define HEIGHT 256 //height size of input image
#define pi 3.141592
#define N 8 //blocksize
//Define Local Funtion
//Define Global Variables
void main()
{
//Local variables
FILE* fpRead = NULL;
FILE* fpWrite = NULL;
int iH = 0, iW = 0;
float temp=0;
float B[N][N] = {(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0)};
BYTE* p1DInput = NULL; // 1-dimension input buffer array
BYTE* p1DOutput = NULL; // 1-dimension output buffer array
BYTE* p1DOutput_B1 = NULL; // 1-dimension output buffer array
BYTE** p2DInput = NULL; // 2-dimension input buffer array
BYTE** p2DOutput = NULL; // 2-dimension output buffer array
BYTE** p2DOutput_B1 = NULL; // 2-dimension output buffer array
//Memory Allocation for Image Buffer
p1DInput = (BYTE *)calloc(WIDTH*HEIGHT, sizeof(BYTE));
p1DOutput = (BYTE *)calloc(WIDTH*HEIGHT, sizeof(BYTE));
p1DOutput_B1 = (BYTE *)calloc(WIDTH*HEIGHT, sizeof(BYTE));
p2DInput = (BYTE **)calloc(HEIGHT,sizeof(BYTE*));
p2DOutput = (BYTE **)calloc(HEIGHT,sizeof(BYTE*));
p2DOutput_B1 = (BYTE **)calloc(HEIGHT,sizeof(BYTE*));for(iH = 0; iH HEIGHT; iH++)
{
p2DInput[iH] = &(p1DInput[iH*WIDTH]);
p2DOutput[iH] = &(p1DOutput[iH*WIDTH]);
p2DOutput_B1[iH] = &(p1DOutput_B1[iH*WIDTH]);
}
//File Open for Image Reading and Writing
fpRead = fopen(Peppers.raw,r+b);
if(fpRead == NULL)
{
printf(Read file open error!\n);
return;
}
fpWrite = fopen(Peppers_DCT.raw,w+b);
if(fpWrite == NULL)
{
printf(Write file open error!\n);
return;
}
//Read the Input Image
fread(p1DInput, sizeof(BYTE), WIDTH*HEIGHT, fpRead);
/////////////////////////////////////////////////////////////////
///Image Processing
/////////////////////////////////////////////////////////////////// horizontal & vertical process
for(iH = 0; iH HEIGHT; iH = iH+8)
{
for(iW = 0; iW WIDTH; iW = iW+8)
{
int u = 0, v = 0;
int j = 0, k = 0, l=0;
float cstc=0;
// 첫번째블럭부터 B 매트릭스 생성
for(u = 0; uN; u++)
{
for(j=0; jN; j++)
{
//앞의상수 규정
if(u==0)
{
cstc=sqrt(1/N);
}else {
cstc=sqrt(2/N);
}
B[u][j] = cstc*cos((2*(j+iW)+1)*u*pi/(2*N));
}
}
for(u=0; uN; u++) {
for(j=0; jN; j++) {
for(l=0; lN; l++) {
temp += p2DInput[iH+j][iW+l]*B[u][l];
}
p2DOutput[iH+u][iW+j]= temp;
}
}
for(u=0; uN; u++) {
for(j=0; jN; j++) {
for(l=0; lN; l++) {
temp += p2DOutput[iH+l][iW+j]*B[l][u];
}
p2DOutput_B1[iH+u][iW+j]= temp;
p2DOutput_B1[iH+u][iW+j]=fabs(p2DOutput_B1[iH+u][iW+j]);
p;if(p2DOutput_B1[iH+u][iW+j]255){
p2DOutput_B1[iH+u][iW+j]=255;
}
}
}
}
}
/////////////////////////////////////////////////////////////////
//Write the Output Image
fwrite(p1DOutput_B1, sizeof(BYTE), WIDTH*HEIGHT, fpWrite);
//Close the File Pointers
fclose(fpRead);
fclose(fpWrite);
//Free the Dinamic Memory Space
free(p1DInput);
free(p2DInput);
free(p1DOutput);
free(p2DOutput);
free(p1DOutput_B1);
free(p2DOutput_B1);
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |
2691592 | 동적할당 이용 배열선언 질문입니다.ㅠㅠ (3) | 허리달 | 2025-04-15 |
2691542 | /=의 용도를 알려주세요 ㅠㅠ! (2) | 아라 | 2025-04-14 |
2691510 | sizeof 연산자 질문입니다 (2) | 종달 | 2025-04-14 |
2691483 | 파일 오픈시 에러 질문드립니다. (2) | 호습다 | 2025-04-14 |
2691450 | [visual c++ 툴]기초 질문 (3) | 해긴 | 2025-04-13 |