8/24/2011

Canny Edge C++ source / 캐니 에지 프로그램 소스

Created Date : 2007.9
Language : C++
Tool : Visual Studio C++ 6.0
Library & Utilized : -
Reference :  Canny Edge's Paper and Reference tutorial
etc. : -







1. Input
First, enter the file name of bmp format.
And input parameters. (sigma value, Hysteresis low, high value. Default values are 1.0, 20, 80 respectively).

2. Results
3 files saved in your folder that direction is same with exe file location.
Origin Image

One is differential of Gaussian image and the others are NonMax Supression and Hysteresis image.

You can download entire source code.
< source code >




If you have good idea or advanced opinion, please reply me. Thank you
(Please understand my bad english ability. If you point out my mistake, I would correct pleasurably. Thank you!!)------------------------------------------------------

1. DOG 부분
마스크를 만든다.
마스크를 이미지에 회선하면서 컨볼루션한다. 한번 회선할 때 가로, 세로에 대하여 모두 연산함 2. NonMax Supression 부분
에지의 방향의 노말방향에 대하여 좌우 픽셀의 밝기보다 큰지 작은지를 조사한다.
∴단 기존의 방법으로 인접한 같은 픽셀값은 최대값을 찾지 못하고 손실되기 때문에, 인접한 픽셀값을 만났을 때는 자기 자신을 -1하여 값을 낮춘다.
예) 55 100 100 100 55 -> 55 99 100 100 55 -> 55 99 99 100 55 -> 0 0 0 100 0

3. Hysteresis Thresholding 부분
에지의 방향에 대하여 픽셀은 추적하면 에지의 방향과 픽셀의 위치가 다르기 때문에 끊어지는 현상이 자주 발생하므로 에지의 방향을 이용하지 않고 잔디에 불을 붙여 연결된 픽셀을 추적하는 GlassFire 방법을 사용하여 High값과 Low값의 개념을 그대로 적용하여 사용한다.
tempImg라는 임시 버퍼를 하나 만들어 방문했던 픽셀의 위치에 대하여 표시를 해둔다.
danji()함수는 재귀호출로 인접한 픽셀을 모두 검색해준다.
danji()함수는 8방향에 대하여 Low값보다 큰 픽셀에 대하여 불을 붙이듯 재귀호출을 하여 선을 이어간다.

▣ 인터페이스 설명
실행 파일을 실행하여 파일명, 시그마값, Hysteresis의 low, high값을 입력한다.
결과는 DOG.bmp, NonMax.bmp, Hysteresis.bmp 로 세 개의 이미지가 저장된다.

여기서 전체 파일을 받을 수 있습니다.
< source code >

좋은 의견 어떤 글이든 답변 남겨주세요


DOG

NonMax

Hysteresis



5 comments:

  1. 안녕하세요^^
    source code 잘보았습니다.
    그래서 실행을 해보려는데
    FeatureGenerate.h 파일 없더군요.ㅎ

    혹시 올려주실수 있으신지요?

    ReplyDelete
  2. 안녕하세요
    FeatureGenerate 클래스는 사용을 하고 있지 않아서 동작하는데는 필요가 없네요. 예전에 공부하면서 짰던것 같은데 참고할려고 포함되어 있는 것 같네요. 그래서 찾아보니 저도 header 파일이 없네요. ^^

    ReplyDelete
  3. 잘씁니다~ 감사염 ㅎ

    ReplyDelete