[영상처리] 디지털 영상처리 프로젝트 core DIP
*동*
다운로드
장바구니
소개글
제 자신이 직접 제작한 디지털 영상처리 프로그램의 비쥬얼 C++ 6.0 기반의 소스와 보고서입니다. 고려대 공대 영상처리 수업 중 프로젝트로 최고 점수를 받았던 것이고, 삼성전자 소프트웨어 멤버쉽 면접 자료로도 합격 점수를 받았던 것입니다. 이 프로그램은, 전에 제가 다녔던, 이름을 밝힐 수 없지만 영상 기반 솔루션을 제작하는 중소기업(지금은 영업 중단함)에서 사용한 코어 프로그램에도 들어간 방식과 조금 유사하지만 새로 손본 것입니다.알고리즘도 직접 손보았고, 일부러 1차원 2차원 포인터 둘 다 쓸 수 있게 제작해 두었으며 윈도우 기반 Visual C++ 로 작성하였고, 다양한 마스크 매트릭스 옵션과 거의 모든 크기 조절 등을 구현하였습니다. 직접 만든 것이니 당연히 시중에 나와있는 어떤 책의 소스와도 같지 않습니다. Gradient나 Laplacian 같은 것은 포토샵 같은 영상 프로그램에서 쓰는 이미지 분리 기법으로 응용 가능합니다.
2차원 FFT와 DCT도 구현되어 있으므로 매우 유용할 자료로 쓰실 수 있을 것입니다. 단 소스에는 주석을 비교적 충실히 달은 반면, 보고서 내용은 그다지 상세하지는 않으므로 디지털 영상처리 관련 서적과 같이 보시면 도움이 더 되리라 사료됩니다. 또한 보고서 내용에는 DIPSIM 이란 실험 시뮬레이션 프로그램 분석 내용이 같이 담겨 있지만, 제가 제작한 프로그램과 전혀 무관하므로 무시하시면 됩니다.
목차
다음과 같은 함수들이 윈도우 기반 비쥬얼 C++로 구현되어 있고, 보고서로 만들어져 있습니다.- raw 파일의 영상 이미지를 로드하고 bmp 형식으로 화면에 출력하는 코드 및 raw 파일로 세이브
- 1차원 포인터 뿐 아니라 2차원 포인터로도 사용 가능하도록 제작되었음
- 독자적인 알고리즘 사용 (2004년 5월 24일 현재 최신)
- 독자적인 경계처리 알고리즘
- 다양한 마스크 매트릭스 옵션들
- 마스크 매트릭스는 짝수도 상관없고 가로세로 크기가 달라도 됨. 거의 모든 형태 구현. 가로바나 세로바 같은 직선 타입도 입력 가능
- 구현함수들
1. Inverse 반전
2. Threshold 이진영상 바이너리
3. Low Pass Filter 로우 패스 필터
4. High Pass Filter 하이 패스 필터
5. Median Filter 미디언 필터
6. Weighted Median Filter 가중 미디언 필터
7. Histogram 히스토그램
8. Histogram Equalization 히스토그램 평활화 (균등화)
9. Erosion 함수
10. Erosion 함수 속도 최적화
11. Dilation 함수
12. Dilation 함수 속도 최적화
13. Opening 함수
14. Opening 함수 속도 최적화
15. Opening 함수 알고리즘 최적화
16. Closing 함수
17. Closing 함수 속도 최적화
18. Closing 함수 알고리즘 최적화
19. Gradient 함수 (영상 edge 성분 검출)
20. Laplacian 함수 라플라시안 함수
21. Laplacian 함수 속도 최적화
22. Laplacian 매트릭스 방식
23. 1차원 FFT (Fast Fourier Transform)
24. 1차원 IFFT (Inverse Fast Fourier Transform)25. 2차원 FFT (Fast Fourier Transform)
26. 2차원 IFFT (Inverse Fast Fourier Transform)
27. DCT (Discrete Cosine Transform) 이산여현함수
28. IDCT (Inverse Discrete Cosine Transform)
본문내용
* MDI 기반 영상처리 시뮬레이터 프로그램 coreDIP *- 특징
1. Visual C++ 6.0 환경에서 MFC와 C++를 이용, 윈도우 MDI 기반으로 제작하였습니다.
(다소 변화를 추구하기 위해 익스플로러 형태의 MDI 폼을 사용하였습니다.)
2. RAW 이미지 파일을 BYTE* 포인터 형태로 fopen 파일로 받아들였습니다.
3. 받아들인 파일은 헤더를 씌워 BMP 파일 형태로 만들어 화면에 출력하였습니다.
4. 2차 포인터 배열이 메모리 관리면에서 꼭 좋은 방법은 아니고 까다로운 면도 있지만, 원래 프로젝트였던 DIPSIM에 가장 가까운 환경을 만들기 위해 이미지 객체들은 BYTE* 형식의 1차 포인터 배열 뿐 아니라 2차원 포인터 배열로도 작업할 수 있도록 셋팅하였고 Image Process는 2차원 포인터를 위주로 처리하였습니다.
5. 이미지 처리용 각종 함수들은 DI_Process.cpp 파일에 들어있으므로 간단히 그 파일만 확인하시면 될 듯 합니다. 가급적 주석을 달려고 노력했고, DI_Process.h 헤더 파일에 번호를 달아 1차 프로젝트용 8개 함수 주석을 달았으므로 헤더 파일 먼저 보시면 좀더 보기 편하실 것 같습니다.
6. 필터들은 대화상자를 통해 Mask Matrix 의 크기를 입력받을 수 있게 구현하였고, weighted Median Filter는 Mask의 가중값과 주변값들을 입력할 수 있게 하였습니다.
7. 이미지 처리가 긴 경우를 대비하여 프로그레스 상태바를 넣었습니다.
8. 각종 Mask는 가로세로 길이를 다르게 하여도 작동하며, 따라서 가로 크기가 1이거나 세로 크기가 1인 가로바, 세로바 형태도 적용할 수 있고, 홀수 뿐 아니라 짝수 입력도 되며, 경계처리도 모두 구현하였습니다.
참고 자료
Digital Image Processing압축파일 내 파일목록
lenna256(256x256).raw
2차프로젝트 보고서(9747144 김동한).hwp
읽어주세요2.txt
coreDIP.exe
coreDIP.zip
corruptedLena.raw
1차프로젝트 보고서(9747144 김동한).hwp
2차프로젝트 보고서(9747144 김동한).hwp
읽어주세요2.txt
coreDIP.exe
coreDIP.zip
corruptedLena.raw
1차프로젝트 보고서(9747144 김동한).hwp