지문인식 시스템 프로젝트 결과보고서 (방법, 구현내용, 구현결과)
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

지문인식 시스템 프로젝트 결과보고서 (방법, 구현내용, 구현결과)에 대한 보고서 자료입니다.

목차

1. 개요
2. 방법
3. 구현내용
4. 구현결과

본문내용

+j]) / 3;
}
}
이진화 과정이 끝나면 세선화 과정을 수행한다. 세선화 과정에서는 지문의 선의 굵기를 1픽셀로 줄여 경계 점들을 삭제하여 영역의 골격을 만드는 과정이다. 세선화 알고리즘으로는 Zhang-Suen을 사용하였다.
void ThinningLee(IplImage* inImg, IplImage* outImg)
{
// 골격선 찾기에 의한 세선화
int width = cvGetSize(inImg).width;
int height = cvGetSize(inImg).height;
for(int y = 0; y < height; y++) {
for(int x = 0; x < width; x++) {
PIXEL_YX(outImg, y, x) = PIXEL_YX(inImg, y, x) ? 1 : 0;
}
}
while(1) {
bool remain = false;
for (int j = 0; j < 4; j++) { // 4가지 이웃 조건
for (int y = 1, ny = height-1; y < ny; y++) {
for(int x = 1, nx = width-1; x < nx; x++) {
const int fny[4] = {0, -1, 0, 1};
const int fnx[4] = {1, 0, -1, 0};
if(PIXEL_YX(outImg, y, x) == 1 &&
PIXEL_YX(outImg, y+fny[j], x+fnx[j]) == 0) {
// 6가지 골격선 조건
if (NeighborMatch(outImg, x, y)) {
// 골격선이면 2로 지정
PIXEL_YX(outImg, y, x) = 2;
}
else { // 골격선이 아니면 제거를 표시
PIXEL_YX(outImg, y, x) = 3;
remain = true;
}
}
}
}
for(int y = 1, ny = height-1; y < ny; y++) {
for(int x = 1, nx = width-1; x < nx; x++) {
// 골격선이 아니면 제거
if(PIXEL_YX(outImg, y, x) == 3) {
PIXEL_YX(outImg, y, x) = 0;
}
}
}
}
if (!remain) break;
}
// 골격선을 255로 표시
for(int y = 0; y < height; y++) {
for(int x = 0; x < width; x++) {
PIXEL_YX(outImg, y, x) = PIXEL_YX(outImg, y, x) == 2 ? 255 : 0;
}
}
}
다음으로 골격선을 추출하는 알고리즘 이다.
bool NeighborMatch(IplImage* inImg, int x, int y)
{
// 6가진 골격선 조건 패턴 검색 함수
// 골격선이면 true 반환
if((PIXEL_YX(inImg, y-1, x-1) ||
PIXEL_YX(inImg, y-1, x ) ||
PIXEL_YX(inImg, y-1, x+1)) &&
(PIXEL_YX(inImg, y+1, x-1) ||
PIXEL_YX(inImg, y+1, x ) ||
PIXEL_YX(inImg, y+1, x+1)) &&
(PIXEL_YX(inImg, y , x-1) == 0 &&
PIXEL_YX(inImg, y , x+1) == 0)) return true;
if((PIXEL_YX(inImg, y-1, x-1) ||
PIXEL_YX(inImg, y , x-1) ||
PIXEL_YX(inImg, y+1, x-1)) &&
(PIXEL_YX(inImg, y-1, x+1) ||
PIXEL_YX(inImg, y , x+1) ||
PIXEL_YX(inImg, y+1, x+1)) &&
(PIXEL_YX(inImg, y+1, x ) == 0 &&
PIXEL_YX(inImg, y-1, x ) == 0)) return true;
if((PIXEL_YX(inImg, y-1, x+1) ||
PIXEL_YX(inImg, y-1, x ) ||
PIXEL_YX(inImg, y-1, x-1) ||
PIXEL_YX(inImg, y , x-1) ||
PIXEL_YX(inImg, y+1, x-1)) &&
(PIXEL_YX(inImg, y , x+1) == 0 &&
PIXEL_YX(inImg, y+1, x ) == 0 &&
PIXEL_YX(inImg, y+1, x+1) == 2)) return true;
if((PIXEL_YX(inImg, y-1, x-1) ||
PIXEL_YX(inImg, y , x-1) ||
PIXEL_YX(inImg, y+1, x-1) ||
PIXEL_YX(inImg, y+1, x ) ||
PIXEL_YX(inImg, y+1, x+1)) &&
(PIXEL_YX(inImg, y , x+1) == 0 &&
PIXEL_YX(inImg, y-1, x ) == 0 &&
PIXEL_YX(inImg, y-1, x+1) == 2)) return true;
if((PIXEL_YX(inImg, y+1, x-1) ||
PIXEL_YX(inImg, y+1, x ) ||
PIXEL_YX(inImg, y+1, x+1) ||
PIXEL_YX(inImg, y , x+1) ||
PIXEL_YX(inImg, y-1, x+1)) &&
(PIXEL_YX(inImg, y-1, x ) == 0 &&
PIXEL_YX(inImg, y , x-1) == 0 &&
PIXEL_YX(inImg, y-1, x-1) == 2)) return true;
if((PIXEL_YX(inImg, y+1, x+1) ||
PIXEL_YX(inImg, y , x+1) ||
PIXEL_YX(inImg, y-1, x+1) ||
PIXEL_YX(inImg, y-1, x ) ||
PIXEL_YX(inImg, y-1, x-1)) &&
(PIXEL_YX(inImg, y , x-1) ==0 &&
PIXEL_YX(inImg, y+1, x ) == 0 &&
PIXEL_YX(inImg, y+1, x-1) == 2)) return true;
return false;
}
4. 구현결과
<이진화 작업>

<세선화 작업>
  • 가격2,800
  • 페이지수10페이지
  • 등록일2014.06.28
  • 저작시기2014.6
  • 파일형식한글(hwp)
  • 자료번호#926409
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니