목차
1. 개요
- Edge 와 Edge Detection
2. 문헌조사
3. 기술(Multiple documents기반)
4. 실험
5. 결론
※ 참고문헌.
- Edge 와 Edge Detection
2. 문헌조사
3. 기술(Multiple documents기반)
4. 실험
5. 결론
※ 참고문헌.
본문내용
)sum=255;
m_ResultImg[row+1][column+1]=
(unsigned char)sum;
centerValue=0;
sum=0;
}
}
}
Canny 마스크 연산
가우시안 이용한 잡음 제거
소벨을 이용하여 경계선 추출
임계값 결정
void CTestDoc::Canny()
{
int centerValue=0;
int mask[5][5]={ 2,4,5,4,2,
4,9,12,9,4,
5,12,15,12,5,
4,9,12,9,4,
2,4,5,4,2};
for(int row=0; row<256; row++){
for(int column=0; column<256; column++){
for(int i=0; i<5; i++){
for(int j=0; j<5; j++){
centerValue +=
m_OpenImg[i+row][j+column]*mask[i][j]*1/115;
}
}
if(centerValue > 255)centerValue=255;
m_OpenImg[row+2][column+2]=
(unsigned char)centerValue;
centerValue=0;
}
}
int c=0,cc=0;
for(int i=1; i<256; i++){
for(int j=1; j<256; j++){
cc=-(int)m_OpenImg[i-1][j-1]-2*(int)m_OpenImg[i-1][j]-(int)m_OpenImg[i-1][j+1];
cc+=(int)m_OpenImg[i+1][j-1]+2*(int)m_OpenImg[i+1][j]+(int)m_OpenImg[i+1][j+1];
c=abs(cc);
cc=-(int)m_OpenImg[i-1][j-1]-2*(int)m_OpenImg[i][j-1]-(int)m_OpenImg[i+1][j-1];
cc+=(int)m_OpenImg[i-1][j+1]+2*(int)m_OpenImg[i][j+1]+(int)m_OpenImg[i+1][j+1];
c+=abs(cc);
if(c>255)
c=255;
else if(c<100)
c=0;
m_ResultImg[i][j]=(unsigned char)c;
}
}
}
4. 실험
- Multiple documents 기반에서 파일을 열고, 원 이미지와 여러 가지 마스크를 이용한 윤곽선 검출을 나타내는 실행 과정이다.
< Original Image > < Sobel Mask >
< Prewitt Mask > < Robert Mask >
< Laplacian Mask > < Canny Mask >
5. 결론
- 여러 가지 윤곽선 검출방법에 대해서 알아보았다. 이러한 윤곽선 검출 방법은 영상처리 학문에 매우 큰 영향을 미치고 있으며 여러 분야에서 자주 사용되어지는 것들이다. 위의 여러 가지 윤곽선들의 특성을 알고 각 마스크들에 의한 영상의 비교를 통해 더욱 더 발전된 Edge Detection의 방법을 연구해야 할 것이다.
프로젝트를 하면서 그렇게 어렵지 않을 것이라 생각했는데 처음에 생각대로 잘 되지 않았으나 비슷한 마스크들을 하나하나 구현하면서 이론만으로 배
m_ResultImg[row+1][column+1]=
(unsigned char)sum;
centerValue=0;
sum=0;
}
}
}
Canny 마스크 연산
가우시안 이용한 잡음 제거
소벨을 이용하여 경계선 추출
임계값 결정
void CTestDoc::Canny()
{
int centerValue=0;
int mask[5][5]={ 2,4,5,4,2,
4,9,12,9,4,
5,12,15,12,5,
4,9,12,9,4,
2,4,5,4,2};
for(int row=0; row<256; row++){
for(int column=0; column<256; column++){
for(int i=0; i<5; i++){
for(int j=0; j<5; j++){
centerValue +=
m_OpenImg[i+row][j+column]*mask[i][j]*1/115;
}
}
if(centerValue > 255)centerValue=255;
m_OpenImg[row+2][column+2]=
(unsigned char)centerValue;
centerValue=0;
}
}
int c=0,cc=0;
for(int i=1; i<256; i++){
for(int j=1; j<256; j++){
cc=-(int)m_OpenImg[i-1][j-1]-2*(int)m_OpenImg[i-1][j]-(int)m_OpenImg[i-1][j+1];
cc+=(int)m_OpenImg[i+1][j-1]+2*(int)m_OpenImg[i+1][j]+(int)m_OpenImg[i+1][j+1];
c=abs(cc);
cc=-(int)m_OpenImg[i-1][j-1]-2*(int)m_OpenImg[i][j-1]-(int)m_OpenImg[i+1][j-1];
cc+=(int)m_OpenImg[i-1][j+1]+2*(int)m_OpenImg[i][j+1]+(int)m_OpenImg[i+1][j+1];
c+=abs(cc);
if(c>255)
c=255;
else if(c<100)
c=0;
m_ResultImg[i][j]=(unsigned char)c;
}
}
}
4. 실험
- Multiple documents 기반에서 파일을 열고, 원 이미지와 여러 가지 마스크를 이용한 윤곽선 검출을 나타내는 실행 과정이다.
< Original Image > < Sobel Mask >
< Prewitt Mask > < Robert Mask >
< Laplacian Mask > < Canny Mask >
5. 결론
- 여러 가지 윤곽선 검출방법에 대해서 알아보았다. 이러한 윤곽선 검출 방법은 영상처리 학문에 매우 큰 영향을 미치고 있으며 여러 분야에서 자주 사용되어지는 것들이다. 위의 여러 가지 윤곽선들의 특성을 알고 각 마스크들에 의한 영상의 비교를 통해 더욱 더 발전된 Edge Detection의 방법을 연구해야 할 것이다.
프로젝트를 하면서 그렇게 어렵지 않을 것이라 생각했는데 처음에 생각대로 잘 되지 않았으나 비슷한 마스크들을 하나하나 구현하면서 이론만으로 배
소개글