[JPEG] C로 구현한 JPEG Encoding & Decoding (VC)
*종*
다운로드
장바구니
소개글
멀티미디어론 과제 중 하나인 JPEG 알고리즘 구현입니다.실제 JPEG파일로 만드는 부분이 아닌 핵심 알고리즘 구현입니다.
입력값은 텍스트로 된 RGB 0~255값 데이터 이며, 출력값 또한 텍스트로 된 JPEG으로 압축된 값입니다. 여기서 만약 JPEG파일로 으로 만드시고 싶은 분은 간단하게 JPEG헤더 파일과 이 파일에 나오는 값을 바이너리로 저장만 하면 됩니다.
JPEG알고리즘을 이해하는데 좋을 것이라고 사료되며, 역시 알파 점수까지 받은 소스 코드입니다. 쉽게 이해할 수 있도록 코딩하였으며, 레포트 문서 또한 깔끔하게 컬러링까지 하였습니다.
** 요구 사항
1. BMP 데이터를 JPEG으로 인코딩하는 프로그램을 구현하여라.
- 입력 데이터 : ASCII파일로 된 연속된 부호 있는 8비트의 상수값
- 출력 데이터 : ASCII 코드 형태로 JPEG 인코딩된 상수값
2. 인코딩한 JPEG 데이터로부터 BMP 데이터로 디코딩하는 프로그램을 구현하여라.
- 입력 데이터 : 위 1번 조건으로부터 생성된 인코딩 파일
- 출력 데이터 : ASCII파일로 된 연속된 부호 있는 8비트 BMP 상수값
** 레포트의 이해를 돕기 위해 Lena_Gray_Enc_Report.txt / Lena_Gray_Dec_Report.txt 파일 추가 출력
- Lena_Gray_Enc_Report.txt - 인코딩 되는 출력 과정을 상세히 보여줍니다.
- Lena_Gray_Dec_Report.txt - 디코딩 되는 출력 과정을 상세히 보여줍니다.
- Lena_Gray_Diffrence.txt - 원본과 디코딩 된 값의 차이값을 보여줍니다.
사용 방법
1. 작업 환경은 Visual Studio C++ .Net 2005/ Visual Studio C++ 6.0 SP6으로 하였으므로 폴더 내 워크스페이스 및 솔루션 위치는 다음과 같다.
HW2_JPEG(VC2005)\ HW2_JPEG.sln (.Net 2005 솔루션 파일)
HW2_JPEG(VC6)\ HW2_JPEG.dsw (VC 6.0 워크스페이스 파일)
** 즉, 사용자 환경에 맞게 6.0 사용자는 dsw파일을, .Net 2005 사용자는 sln파일을 열면 사용가능하다.
단, .Net 2003 솔루션 파일은 따로 존재하지 않으므로, .Net 2003으로 열 경우 dsw파일을 열어 업그레이드를 하도록 하자.
2. 메인 파일은 HW2_JPEG(VC6)\ HW2_JPEG.h and cpp 파일이므로 유닉스 환경일 경우 이 두파일만 존재하면 GCC 컴파일이 가능하다.
3. 실행시 인코딩 및 디코딩 과정 출력은 생략하며(단, 성공여부는 출력해준다.) 인코딩 및 디코딩 시 결과값은 파일로 저장된다.
/HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Original.txt - 원본 기본 입력 파일
/HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Jpeg_ZigZag.txt - 인코딩 파일 (JPEG)
/HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Dec_BMP.txt - 디코딩 파일 (BMP)
/HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Enc_Report.txt - 레포트화된 파일 (인코딩과정 출력)
/HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Dec_Report.txt - 레포트화된 파일 (디코딩과정 출력)
/HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Diffrence.txt - 레포트화된 파일 (차이값 출력)
** 아래는 헤더 파일의 내용입니다.
// .NET 2005에서scanf_s 경고무시
#define _CRT_SECURE_NO_DEPRECATE
#include
#include
#include
#include
// 선언하면출력과정을보여준다.
//#define _PRINT_PROGRESS
// JPEG 알고리즘관련매크로
#define BLOCK_SIZE 8
#define MAX_X 512
#define MAX_Y 512
#define MAX_SIZE 4096
// 파일처리관련매크로
//#define STR_FILE_INPUT_BMP \
컴파일 실행환경
없음압축파일 내 파일목록
FDCT_ContolFlow.gif
[멀티미디어론] 과제2_JPEG.doc
~$티미디어론] 과제2_JPEG(20012548 박종식).doc
HW2_JPEG(VC2005)/HW2_JPEG.ncb
HW2_JPEG(VC2005)/HW2_JPEG.sln
HW2_JPEG(VC2005)/HW2_JPEG.suo
HW2_JPEG(VC2005)/HW2_JPEG.vssscc
HW2_JPEG(VC2005)/debug/HW2_JPEG.exe
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.cpp
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.h
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.vcproj
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.vcproj.JUNE-XP.Microsoft.user
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.vcproj.vspscc
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.vcproj.WHITE-MAIN.박종식.user
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.vcproj.WHITE-SERVER.Administrator.user
HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Dec_BMP.txt
HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Dec_Report.txt
HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Diffrence.txt
HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Enc_Report.txt
HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Jpeg_ZigZag.txt
HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Original.txt
HW2_JPEG(VC2005)/HW2_JPEG/originbmp.txt
HW2_JPEG(VC2005)/HW2_JPEG/Debug/BuildLog.htm
HW2_JPEG(VC2005)/HW2_JPEG/Debug/HW2_JPEG.exe.embed.manifest
HW2_JPEG(VC2005)/HW2_JPEG/Debug/HW2_JPEG.exe.embed.manifest.res
HW2_JPEG(VC2005)/HW2_JPEG/Debug/HW2_JPEG.exe.intermediate.manifest
HW2_JPEG(VC2005)/HW2_JPEG/Debug/HW2_JPEG.obj
HW2_JPEG(VC2005)/HW2_JPEG/Debug/mt.dep
HW2_JPEG(VC2005)/HW2_JPEG/Debug/vc80.idb
HW2_JPEG(VC2005)/HW2_JPEG/Debug/vc80.pdb
HW2_JPEG(VC6)/HW2_JPEG.cpp
HW2_JPEG(VC6)/HW2_JPEG.dsp
HW2_JPEG(VC6)/HW2_JPEG.dsw
HW2_JPEG(VC6)/HW2_JPEG.h
HW2_JPEG(VC6)/HW2_JPEG.ncb
HW2_JPEG(VC6)/HW2_JPEG.opt
HW2_JPEG(VC6)/HW2_JPEG.plg
HW2_JPEG(VC6)/Lena_Gray_Original.txt
[멀티미디어론] 과제2_JPEG.doc
~$티미디어론] 과제2_JPEG(20012548 박종식).doc
HW2_JPEG(VC2005)/HW2_JPEG.ncb
HW2_JPEG(VC2005)/HW2_JPEG.sln
HW2_JPEG(VC2005)/HW2_JPEG.suo
HW2_JPEG(VC2005)/HW2_JPEG.vssscc
HW2_JPEG(VC2005)/debug/HW2_JPEG.exe
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.cpp
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.h
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.vcproj
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.vcproj.JUNE-XP.Microsoft.user
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.vcproj.vspscc
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.vcproj.WHITE-MAIN.박종식.user
HW2_JPEG(VC2005)/HW2_JPEG/HW2_JPEG.vcproj.WHITE-SERVER.Administrator.user
HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Dec_BMP.txt
HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Dec_Report.txt
HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Diffrence.txt
HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Enc_Report.txt
HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Jpeg_ZigZag.txt
HW2_JPEG(VC2005)/HW2_JPEG/Lena_Gray_Original.txt
HW2_JPEG(VC2005)/HW2_JPEG/originbmp.txt
HW2_JPEG(VC2005)/HW2_JPEG/Debug/BuildLog.htm
HW2_JPEG(VC2005)/HW2_JPEG/Debug/HW2_JPEG.exe.embed.manifest
HW2_JPEG(VC2005)/HW2_JPEG/Debug/HW2_JPEG.exe.embed.manifest.res
HW2_JPEG(VC2005)/HW2_JPEG/Debug/HW2_JPEG.exe.intermediate.manifest
HW2_JPEG(VC2005)/HW2_JPEG/Debug/HW2_JPEG.obj
HW2_JPEG(VC2005)/HW2_JPEG/Debug/mt.dep
HW2_JPEG(VC2005)/HW2_JPEG/Debug/vc80.idb
HW2_JPEG(VC2005)/HW2_JPEG/Debug/vc80.pdb
HW2_JPEG(VC6)/HW2_JPEG.cpp
HW2_JPEG(VC6)/HW2_JPEG.dsp
HW2_JPEG(VC6)/HW2_JPEG.dsw
HW2_JPEG(VC6)/HW2_JPEG.h
HW2_JPEG(VC6)/HW2_JPEG.ncb
HW2_JPEG(VC6)/HW2_JPEG.opt
HW2_JPEG(VC6)/HW2_JPEG.plg
HW2_JPEG(VC6)/Lena_Gray_Original.txt
참고 자료
The JPEG committee home page - www.jpeg.org이 자료와 함께 구매한 자료
- [멀티미디어공학]DCT,IDCT 7페이지
- C언어를 이용한 DCT구현과 결과영상 8페이지
- JPEG프로그램 3페이지
- [이미지뷰어] JPG GIF BMP 이미지 뷰어 프로그램 소스 코드 (Visual C++ MFC) 11페이지
- [디지털영상처리]jpeg 코드 0페이지