벡터양자화 도와주세요 ㅠㅠ 엉엉
징징몬
벡터양자화 하는데 좀 도와주세요 ㅠㅠ
질문 내용 :
#include stdio.h
#include stdlib.h
#include math.h
void main()
{
file *fp1;
file *fp2;
int i,j;
int num1=0;
int num2=0;
int num3=0;
int num4=0;
int count2=0;
int count4=0;
double diff1=0;
double diff2=0;
double m1=0;
double m2=0;
double m3=0;
double m4=0;
unsigned char buff1[(512*512)/4][4];//image 4차원으로 읽어들이기
unsigned char buff2[(512*512)/4][4];
double c[1][4];
double c2[2][4];
double d[2][4];
double d2[2][4];
double count[(512*512)/4][1];
double count3[(512*512)/4][1];// 이전값과 현재값을 비교해서 0.001만들때 사용할것
unsigned char code2_4[2][4];
fp1=fopen(zero.img,rb);
fread(buff1,sizeof(unsigned char),512*512,fp1); //영상 4차원으로 읽어오기
for(i=0;i(512*512)/4;i++)
{
for (j=0;j4;j++)
{
c[0][j]+=buff1[i][j]; //초기 벡터 만들기위해서 더함
}
}
for (j=0;j4;j++)
{
c[0][j]=c[0][j]/((512*512)/4); // 초기 벡터 기준값
}
for (j=0;j4;j++)
{
c2[0][j]=c[0][j]-0.001;
c2[1][j]=c[0][j]+0.001;
}
for (i=0;i(512*512)/4;i++)
{
for (j=0;j4;j++)
{
m1+=(double)(buff1[i][j]-c2[0][j])*(buff1[i][j]-c2[0][j]);
m2+=(double)(buff1[i][j]-c2[1][j])*(buff1[i][j]-c2[1][j]);
if (m1m2)
{
d[0][j]+=buff1[i][j];
count[i][0]=0; // d[0][]인지 d[1][]인지 구분하기위해서
num1+=1;
}
else
{
d[1][j]+=buff1[i][j];
count[i][0]=1; // d[0][]인지 d[1][]인지 구분하기위해서
num2+=1;
}
}
}
for (j=0;j4;j++)
{
d[0][j]=d[0][j]/num1; // 1번째 새로 구해진 평균 기준값
d[1][j]=d[1][j]/num2;
}
num1=0;
num2=0;
for(i=0;i(512*512)/4;i++)
{
count2=(int)count[i][0];
if(count2=0)
{
for (j=0;j4;j++)
{
d2[0][j]+=buff1[i][j];
num3+=1;
}
}
else
{
for (j=0;j4;j++)
{
d2[1][j]+=buff1[i][j];
num4+=1;
}
}
}
for (i=0;i(512*512)/4;i++)
{
count2=(int)count[i][0];
for (j=0;j4;j++)
{
diff1+=(double)(buff1[i][j]-d[count2][j])*(buff1[i][j]-d[count2][j]);
}
}
for (j=0;j4;j++)
{
d2[0][j]=d2[0][j]/num3; // 2번째 새로 구해진 평균 기준값
d2[1][j]=d2[1][j]/num4;
}
num3=0;
num4=0;
for (i=0;i(512*512)/4;i++)
{
for (j=0;j4;j++)
{
m3+=(double)(buff1[i][j]-d2[0][j])*(buff1[i][j]-d2[0][j]);
m4+=(double)(buff1[i][j]-d2[1][j])*(buff1[i][j]-d2[1][j]);
pif (m3m4)
{
d2[0][j]+=buff1[i][j];
count3[i][0]=0; // d2[0][]인지 d[1][]인지 구분하기위해서
num1+=1;
}
else
{
d2[1][j]+=buff1[i][j];
count3[i][0]=1; // d2[0][]인지 d[1][]인지 구분하기위해서
num2+=1;
}
}
}
for (i=0;i(512*512)/4;i++)
{
count4=(int)count3[i][0];
for (j=0;j4;j++)
{
diff2+=(double)(buff1[i][j]-d2[count4][j])*(buff1[i][j]-d2[count4][j]);
}
}
for(i=0;i2;i++)
{
for (j=0;j4;j++)
{
code2_4[i][j]=(unsigned char)(d2[i][j]);
printf(%d ,code2_4[i][j]);
}
}
printf(different= %lf,((diff1-diff2)/diff1));
fp1=fopen(code2_4.img,wb);
fwrite(buff2,sizeof(unsigned char),(512*512)/4,fp2);
fclose(fp2);return 0;
}
왜 안돌아가는지 ㅠㅠ
고쳐주세요ㅠㅠ
이게 ((diff1-diff2)/diff1) 차이게 0.001이 되면 좋겠구요....
이 순서가 반복이되서 코드북 사이즈가 16이 되면 좋겠는데.
어떻게 해야하는지 자세히좀 알려주세요 ㅠㅠ
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2655547 | 변수선언과 printf만 사용해서 수식 짜기 (1) | 피리 | 2024-05-20 |
2655523 | 문자열 사이에 문자열삽입 | 바람 | 2024-05-20 |
2655491 | 키보드 인식, 랜덤 함수 or 헤더 (2) | 별 | 2024-05-20 |
2655471 | 링 버퍼 구현된 소스 인데요.. 이해가 잘안되서요.. | 소심한녀자 | 2024-05-20 |
2655440 | test파일이 안 되요. (2) | 리라 | 2024-05-19 |
2655416 | 고수님들 도움이 절실합니다. (2) | 세리 | 2024-05-19 |
2655361 | 엔터 입력받을때까지 기다리는 getchar (1) | 큰모음 | 2024-05-19 |
2655328 | 함수에서 포인터 (3) | 모아 | 2024-05-18 |
2655299 | 아이콘바꾸는법..? | 소 | 2024-05-18 |
2655271 | scanf 입력받으면 쭉 실행되는.. (5) | ComeOn | 2024-05-18 |
2655184 | 이 세개 프로그램좀 해결해주실.... 고수님들???? (3) | 말달리자 | 2024-05-17 |
2655129 | 다차원 배열 원소들 주소계산하는거 질문이요~ | 터전 | 2024-05-17 |
2655103 | AVRstudio MoveAxis. MoveLine 함수질문 | 앨버트 | 2024-05-16 |
2655072 | 콘솔창의 위치와 크기를 정하고 싶습니다. | 딥레드 | 2024-05-16 |
2655044 | 자료구조랑 online judge site에 대해서 질문있습니다... (1) | 뽀송뽀송 | 2024-05-16 |
2655016 | 별찍기 문제 중 이해안되는 부분이 있어요... | 도전중 | 2024-05-16 |
2654986 | 입력받은 성적을 배열에 저장하기 (3) | 안녕나야 | 2024-05-15 |
2654959 | ===========-이런거 미리 지정하는법 (1) | 김자영 | 2024-05-15 |
2654930 | 도와주십시요 ㅜㅜ 자료구조 ㅜㅜ | 도널드 | 2024-05-15 |
2654881 | PID 모듈 검색 부분 질문합니다 . | 이름없음 | 2024-05-14 |