라그랑지(Lagrange) 알고리즘 이미지 확대 프로그램
*호*
다운로드
장바구니
소개글
수치해석시간에 배우는 라그랑지(Lagrange) 알고리즘을 이용하여 이미지(bmp파일)를 부드럽게 확대해보는 프로그램입니다.* 당연히 비주얼 C++ 6.0 에서 컴파일 해야 실행파일 나옵니다.(실행파일을 올린게 아니라 프로그램 소스를 올린것입니다.)
컴파일 실행환경
Visual C++ 6.0에서 제작하였습니다.압축파일 내에 프로그램 도큐먼트(한글파일)이 포함되어 있습니다.
본문내용
* 프로그램 소개가. 주어진 영상을 Lagrange 함수를 이용하여 확대하여 보여준다..
나. Lagrange 함수를 이용할 때 구간을 4개 픽셀 단위로 나누어 함수를 만들게 하였다. 4개 픽셀 단위로 나눌 때 마지막 4번째 픽셀은 다음 구간과 겹치게 된다.
다. 사용자로부터 임의의 확대 비율을 입력받아 그 배율로 확대를 하고 결과를 보여준다. 확대 비율은 1 이상, 실수로 입력 받는다.
라. 비트맵 파일에서 픽셀정보를 읽어오는 부분은 참고서적에 나와 있는 내용을 참조하여 사용하였다.
- Visual C++ 6.0 완벽가이드 김용성 저. 영진출판 : 이미지프로세싱 부분
* 프로그램 추가구현 기능 내용
가. 사용자로부터 마우스를 통해 영역을 선택받아 선택된 일부만을 확대하여 보여줄 수 있게 하였다.
나. 기본 24비트 컬러 이미지 외에 8비트 흑백 이미지도 처리 가능하게 하였다.
다. 확대비율을 크게 주었을 때 나타나는 타일(tile)화 현상(사각형 모양으로 구간이 나뉘어 보이는 현상)을 보완해 보고자, Lagrange 함수에서 약간의 수정을 하여 확대 품질을 개선한 방식을 추가 하였다.
- 기존의 Lagrange 방식은 4픽셀 단위로 구간을 나누어 각 구간별로 함수를 만들어 사용하였다. 이미지 사이즈가 100이라면 구간은 33개가 나오게 된다. 그리고 위치가 0 이상 4 미만 일 경우에는 0부터 시작하는 첫 번째 구간의 함수를 사용하게 된다.
- 그러나 여기서 약간 변형을 한 것은 각 픽셀의 위치에서 새로운 구간을 만들어 사용하게 하는 것이다. 예를 들어 위치가 1이라면 기존의 방식대로는 0부터 4사이의 구간 함수를 사용했지만, 변형을 가한 방식은 위치 1에서 1부터 5까지의 구간으로 새로이 정의하여 함수를 만들어 사용하게 한 것이다. 이렇게 하면 확대를 크게 했을 때 나타나는 타일화 현상이 없어지게 된다.
- 단, 이 경우는 이미지 사이즈가 100이라면 구간이 100개가 되어야 하는 비용적인 문제가 있다.
압축파일 내 파일목록
sample/sample1.bmp
sample/sample2.bmp
sample/sample3.bmp
sample/sample4.bmp
sample/Thumbs.db
Lagrange-공개/ChildFrm.cpp
Lagrange-공개/ChildFrm.h
Lagrange-공개/DlgSetRatio.cpp
Lagrange-공개/DlgSetRatio.h
Lagrange-공개/Image.cpp
Lagrange-공개/Image.h
Lagrange-공개/ImagePixel.cpp
Lagrange-공개/ImagePixel.h
Lagrange-공개/Lagrange.aps
Lagrange-공개/Lagrange.clw
Lagrange-공개/Lagrange.cpp
Lagrange-공개/Lagrange.dsp
Lagrange-공개/Lagrange.dsw
Lagrange-공개/Lagrange.h
Lagrange-공개/Lagrange.ncb
Lagrange-공개/Lagrange.opt
Lagrange-공개/Lagrange.plg
Lagrange-공개/Lagrange.rc
Lagrange-공개/LagrangeDoc.cpp
Lagrange-공개/LagrangeDoc.h
Lagrange-공개/LagrangeView.cpp
Lagrange-공개/LagrangeView.h
Lagrange-공개/MainFrm.cpp
Lagrange-공개/MainFrm.h
Lagrange-공개/ReadMe.txt
Lagrange-공개/resource.h
Lagrange-공개/StdAfx.cpp
Lagrange-공개/StdAfx.h
Lagrange-공개/프로그램보고서.hwp
Lagrange-공개/res/Lagrange.ico
Lagrange-공개/res/Lagrange.rc2
Lagrange-공개/res/LagrangeDoc.ico
Lagrange-공개/res/Toolbar.bmp
sample/sample2.bmp
sample/sample3.bmp
sample/sample4.bmp
sample/Thumbs.db
Lagrange-공개/ChildFrm.cpp
Lagrange-공개/ChildFrm.h
Lagrange-공개/DlgSetRatio.cpp
Lagrange-공개/DlgSetRatio.h
Lagrange-공개/Image.cpp
Lagrange-공개/Image.h
Lagrange-공개/ImagePixel.cpp
Lagrange-공개/ImagePixel.h
Lagrange-공개/Lagrange.aps
Lagrange-공개/Lagrange.clw
Lagrange-공개/Lagrange.cpp
Lagrange-공개/Lagrange.dsp
Lagrange-공개/Lagrange.dsw
Lagrange-공개/Lagrange.h
Lagrange-공개/Lagrange.ncb
Lagrange-공개/Lagrange.opt
Lagrange-공개/Lagrange.plg
Lagrange-공개/Lagrange.rc
Lagrange-공개/LagrangeDoc.cpp
Lagrange-공개/LagrangeDoc.h
Lagrange-공개/LagrangeView.cpp
Lagrange-공개/LagrangeView.h
Lagrange-공개/MainFrm.cpp
Lagrange-공개/MainFrm.h
Lagrange-공개/ReadMe.txt
Lagrange-공개/resource.h
Lagrange-공개/StdAfx.cpp
Lagrange-공개/StdAfx.h
Lagrange-공개/프로그램보고서.hwp
Lagrange-공개/res/Lagrange.ico
Lagrange-공개/res/Lagrange.rc2
Lagrange-공개/res/LagrangeDoc.ico
Lagrange-공개/res/Toolbar.bmp