졸업연구 영상처리 양자화
본 자료는 5페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
해당 자료는 5페이지 까지만 미리보기를 제공합니다.
5페이지 이후부터 다운로드 후 확인할 수 있습니다.

본문내용

(quant_dct,shift,dct_img, inv_dct, row);
free(zigzag);
free(input);
free(output);
}
void free_mem(int **quant_dct, int **shift, double **dct_img, double **inv_dct, int row)
{
int j;
for(j=0; j {
free(*(quant_dct+j));
free(*(shift+j));
free(*(dct_img+j));
free(*(inv_dct+j));
}
free(quant_dct);
free(shift);
free(dct_img);
free(inv_dct);
}
2.출력 화면
※ 첫 번째 이미지의 8*8 블록과 두 번째 이미지의 16*16 블록
⇒ 첫 번째 그림의 좌표(130, 72)에서 가로세로 8픽셀과 두 번째 그림의 좌표(128, 70)에서 가 로세로 16픽셀의 크기값을 출력한 것이다. 대부분 200이 넘는 밝은 부분임을 알 수 있다.
※ 두 블록의 크기값의 차이
⇒ 두 번째 블록에서 첫 번째 블록을 한 픽셀씩 옮겨가면서 빼준 값들을 제곱해서 8*8=64로 나 눠준 분산(Variance)값을 출력했다. 또한 분산들을 저장한 2차원 배열에서 정렬(Sorting)을 하여 제일 작은 분산값을 맨 뒤쪽 배열에 저장한 후 그 값을 출력하였으며, 또한 그 값을 분 산들 저장한 2차원 배열과 비교하여 같은 값을 가지는 좌표를 출력하게 하였다. 위의 결과를 보면 두 번째 그림의 좌표(130, 72)에서 가로세로 8픽셀이 처음 그림의 8*8블럭과 가장 비슷 한 블록임을 알 수 있다. 그리고 알아낸 좌표를 이용하여 DCT와 양자화, 역양자화, IDCT, 지 그재그 스캔을 하게 될 8*8 데이터 값들을 출력하게 하였다.
※ 현재 영상의 값과 DCT, 양자화 출력
⇒ 앞서 얻은 8*8이 다음 소스의 입력으로 들어가게 되었다. 제일 비슷한 블록의 값들이 출력 되었으며, 이는 앞서 출력한 결과와 같음을 볼 수 있다. 또한 DCT된 영상값을 보면 저주파 즉 왼쪽 위의 모서리부분의 값이 제일 큰 정보가 집중되어있음을 볼 수 있다. 이를 이용하여 저주파 필터로서 JPEG압축알고리즘의 원리가 됨을 볼 수 있다. DCT된 값들을 양자화하게 되 면 크기값의 디지털화가 되어 소수값들은 사라지고 정수가 출력됨을 볼 수 있다.
※ Zigzag Scanning
⇒ 위는 Zigzag Scanning을 한 결과를 출력한 것이다. Quantization결과 0과 50의 정보만을 가 지고 있기 때문에 0과 50을 출력하게 되었고, 이를 순서대로 나열한 결과 밑의 출력과 같게 되었다. 숫자가 두 개밖에 없기 때문에 지그재그를 확인하기 어렵지만, 다른값들이 주어졌을 때 지그재그를 쉽게 확인 할 수 있다. 이는 DCT결과 왼쪽위에 정보가 집중되기 때문에 정보 를 전송할 경우 정보가 많은 부분들을 먼저 전송하기 위하여 지그재그 스캔을 사용하게 된 것이다.
※ 역양자화, IDCT, PSNR 출력
⇒ 위는 양자화 된 값을 역양자화 후 IDCT하고 영상을 복원한 값을 출력 한 것이다. 결과를 보 면 입력 영상과 비슷하게 복원은 되었지만 양자화 과정에서 생기는 Error 또한 볼 수 있었 다. 주파수에 대한 샘플링의 경우 샘플링 주파수를 원주파수의 2배 이상으로 해주면 원래의 신호를 복원할 수 있다고 하였지만, 양자화의 경우 소수점을 모두 버리고 가까운 정수값으로 매칭을 시켜주기 때문에 양자화 에러는 항상 존재함을 볼 수 있었다. 또한 입력 영상과 복원 된 영상의 차이를 알기 위해 PSNR을 구하고 출력하게 되었으며, 위에 출력된 값은 일반적인 수치이며, 이것을 20*log를 취할 경우 데시벨[dB]로 표현 할 수 있다.
3. 출력 영상
※ 주어진 원 이미지와 파일 출력된 이미지, 8*8 블록의 입력과 출력 이미지
foreman176_144_0.raw (원 이미지)
Out_img0.raw (파일출력된이미지)
foreman176_144_1.raw (원 이미지)
Out_img1.raw (파일출력된이미지)
img.raw (8*8 입력 이미지) 16배 확대
out_img.raw (8*8 출력 이미지) 16배 확대
4. 프로젝트를 끝내며...
→ 이번의 마지막 프로젝트를 끝으로 졸업연구가 끝나게 되었다. 우선 이번 프로젝트의 전반적인 내용은 주어진 두 개의 그림을 이용해 파일입출력으로 그림에 대한 데이터를 저장하고, 첫 번째 그림의 한 특정부분 8*8블럭을 이용하여 두 번째그림의 16*16블럭에 매칭하여 제일 비슷한 블록 좌표를 찾아내는 것이였다. 또한 찾아낸 블록을 이용하여 DCT, 양자화, 역양자화, IDCT의 순차적 인 과정을 통해 영상을 복원하는 것이 였는데, 이때의 입력영상과 출력영상의 차이를 PSNR의 수 치로 비교해 볼 수 있었다. 프로젝트 과정중에 제일 힘들었던 부분은 첫 번째의 그림에 대한 데 이터가 제대로 읽혀지지 않아 영상의 좌표가 완전히 흐트러졌던 것이였다. 처음 소스 코딩을 할 때 영상을 저장할 배열을 동적 할당하였는데, 메모리에서 충돌이 일어나서인지 176*144의 그림안 에 남자의 턱이 두 개로 나타났다. 하지만 정적할당으로 바꾸면서 원하는 그림을 얻을 수 있었 고, 첫 번째의 (130, 72)좌표 8*8블럭과 두 번째그림의 (128, 70)좌표 16*16블럭을 서로 비교할 수 있었다. 두 장의 사진을 보면 이는 움직이는 영상을 캡쳐한것 처럼 보였는데, 움직이는 영상 의 전송시에 앞선영상과 뒤의 영상의 차이만을 전송하여 압축하는 MPEG원리 처럼 이번 과제는 JPEG뿐아니라 MPEG의 기본적인 부분을 확인할 수 있는 과제였다. 과제를 하는 과정에서 두 이미 지의 크기를 비교하고 제일 비슷한 좌표를 찾는 알고리즘을 잘 몰라서 For문을 많이 이용해서 구 현하게 되었다. 그래서 프로그램이 길어지게 되었다. 또한 지그재그 스캔을 어떻게 구현 할 것인 지 많이 생각해 보았다.
과제를 끝으로 한 학기동안 열심히 강의해주신 조교님들 감사드립니다. 많이 부족한 부분도 많 았지만 눈높이에 맞는 강의로 조금이나마 부족한 부분 채우게 되어 감사드립니다.
  • 가격2,000
  • 페이지수16페이지
  • 등록일2011.05.30
  • 저작시기2010.4
  • 파일형식한글(hwp)
  • 자료번호#681183
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니