그레이 영상에서의 윤곽선 검출 Edge Detection

  •  Edge Detection - 윤곽선 검출. 픽셀 밝기의 불연속 점을 검출. 윤곽선에 해당하는 픽셀을 구하는 방법.

    • 영상 안에서 상당한 밝기의 차이가 있는 곳
    • 물체의 경계
    • 픽셀 값의 불연속이나 픽셀 미분 값의 불연속 점에 존재

 

  • 스텝 불연속 점  - 영상의 밝기가 갑자기 변하는 곳.
  • 라인 불연속 점  - 영상의 밝기가 갑자기 변화하나 조금 지나면 다시 돌아오는 곳.

 

  • 잡음 제거 연산 - 보통 윤곽선 검출을 하기 전에 잡음을 제거.

    • 픽셀 값의 급격한 변화가 완만한 변화로 바뀜
    • 스텝 에지 -> 램프 에지
    • 라인 에지 -> 루프 에지

 

  • 윤곽선 검출 기법

    • 편미분 연산자 계산에 근거 함.
    • 윤곽선 기울기 변화량 그래프의 미분

      • 1차미분:  영상에서 윤곽선 존재 여부
      • 2차미분: 윤곽선 픽셀의 밝고 어두운 부분 위치 (볼록 - 밝은 부분/ 오목 - 어두운 부분)

 

  • 편미분 연산자   - 영상은 2차원 형태기 때문에 미분은 X축과 Y축으로 각각 미분해 주어야 한다.

    • 그라디언트 - 영상에서의 기울기. 크기를 구하면 윤곽선을 구할 수 있다. (그라디언트가 큰 곳이 윤곽선)
    • 그라디언트 크기 공식

      1. 기울기벡터를 구함
      2. 이 벡터의 크기를 구함
      3. 자승관계를 간단히하여 사용
    •  방향 구하는 공식

      •  tan-1승(Gy/Gx)

 

  • MASK - 영상 안에서 일정 부분에 위치시키기 위한 일종의 행렬 모양의 구조체.

    • 3X3 모든 픽셀은 합이 0이다. 어떤 종류의 마스크이든지 마스크를 이루는 픽셀의 합은 0이 되어야 함.

 

  • 윤곽선 검출 프로그램 구현 - 원 영상 안의 픽셀들을 마스크의 동일 위치에 해당하는 픽셀들과 곱하고 모든 픽셀에 더하여 중심 픽셀에 할당

 

  • 소벨 마스크

    • 2차 미분 연산자이며, x축 y축으로 각각 한번씩 미분하게 되어 있다.
    • 기울기의 크기 G=루트(Gx편미분제곱 + Gy편미분2n승)  또는 간단히 G = |Gx| + |Gy|
    • 연산속도가 비교적 느림
    • 잡음 부분도 윤곽선으로 인식할 만큼 밝기정도에 매우 민감.
    • 임계값으로 잡음 제거를 할 수 있다.

 

  • 프르윗 (Prewitt) 마스크

    • 응답시간이 소벨보다 약간 빠름
    • 마스크에서 각 픽셀 비중이 Sobel 필터 마스크보다 낮기 때문에 미세한 윤곽선은 빼고 잡음.

 

  • 로버트 (Roberts) 마스크

    • 윤곽선 검출 마스크 중 기본이 되는 마스크
    • 매우 빠른 계산 속도
    • 작은 커널 사용으로 잡음에 매우 민감
    • 매우 분명한 에지만 검출
    • 마스크 모양은 45도 기울기를 가진다.

 

  • 라플라시안 (Laplacian) 마스크를 이용한 윤곽선 검출 프로그램

    • 국지적으로 최대인 점만 윤곽선으로 인정하는 특성을 보임. 윤곽선 중심에 존재하는 윤곽선만을 표시하는 윤곽선의 국한성을 보여줌.
    • 연산 속도가 매우 빠름.
    • 2차 미분 연산자를 사용
    • 모든 방향의 윤곽선을 검출해 냄.
    • 다른 연산자와 비교하여 날카로운 윤곽선을 검출해 냄.
    • 하나의 마스크로 윤곽선 검출을 수행한다.

 

  • 캐니 (Canny) 마스크를 이용한 윤곽선 검출 프로그램

    • 다른 마스크 연산자를 이용한 응용.
    • 영상의 잡음에 민감하지 않은 윤곽선 검출 방법
    • 검출 전 잡음 제거 마스크 - 가우시안 마스크 - 사용
    • 여러 가지의 윤곽선 검출 마스크 활용 가능.
    • 강한 윤곽선들만 검출

 

 

 

형태처리 Morphology 기법

 

  • 모폴로지 Morphology - 형태 처리

    • 최 외각선의 한 픽셀을 빼거나 더하는 작업.
    • 물체와 배경과의 사이에서 물체의 축소나 확장의 결과를 볼 수 있다.
    • 스파크 잡음 제거나 융선 향상에 적용
    • 모폴로지 기법 - 침식, 팽창, 열림 ,닫힘 연산

 

이진영상의 모폴로지
  • 침식 (Erosion) 연산 - 배경에 대해 배경 확장, 물체 크기 축소

    • 아주 작은 물체 제거 혹은 배경을 통한 물체 축소
    • 침식 마스크의 사용  -  3x3(255)의 마스크로 물체 명도 값을 255로 설정, 배경의 명도 0으로 설정. 하나라도 일치 하지 않으면 가운데에 0을 넣어서 침식 시킴.

 

  •  팽창 (Dilation) 연산 -  물체의 최 외각 픽셀을 확장. 배경 축소

    • 홀과 같은 빈 공간을 메우는 역할. 서로 짧은 거리만큼 끊어진 영역을 연결.
    • 팽창 마스크 사용 - 3x3(0) 마스크로 하나라도 일치 하지 않으면 255를 넣어 팽창.

 

  •  제거 (Opening) 연산 -  [침식 -> 팽창]

    • 침식 연산만 사용하면 원 영상 크기를 잃어버리는 단점이 있음
    • 침식 연산으로 미세 잡음 제거하고 다시 팽창으로 원 영상 크기를 유지 시킴)
    • 침식 마스크 -> 팽창 마스크

 

  • 채움 (Closing) 연산 - [팽창 -> 침식]

    • 작은 홀들을 메꾸고 원 영상의 크기로 축소 복원.

 

Gray -Lever 영상의 모폴로지
  •  침식 -  -255에서 0까지 변화시켜 마스크를 구성하고 마스크값이 -255에 가까울 수록 더욱 분명한 침식 효과를 볼 수 있다.

    • 마스크와 픽셀 단위 덧셈 후 9개의 픽셀 중 가장 작은 명도 값을 가진 픽셀이 결과 영상의 명도 값으로 결정.
    • 흰색 물체의 축소로 영상을 어둡게 만든다.

 

  •  팽창 - 0에서 255까지 변화시켜 마스크를 구성하고 255에 가까울 수록 더욱 분명한 팽창 효과 볼 수 있음.

    • 9개의 픽셀 중 가장 큰 값으로 명도 결정.
    • 흰색 물체의 확장으로 밝아진 결과를 보여줌.

 

  •  제거 - 침식 -> 팽창

 

  •  채움 - 팽창 -> 침식



 

주파수 공간으로의 변환

  • 주파수 - 주기성을 가진 신호는 연속된 사인곡선의 조합으로 표현할 수 있다.

    • 영상의 공간 주파수는 화소 값의 변화율을 의미한다.
    • 주파수 공간에서의 영상 부각 - 로그를 취해 고주파는 가운데로 모이고 저주파는 모서리 부분으로 모이는 특징을 가짐 (저주파와 고주파를 나눔)

 

  • Fourier 변환

    • F(k,l) = 1/N제곱 시그마 시그마 (각각 i=0,j=0 에서 N-1까지) f(i,j) * e 의 -i2파이(ki+lj/N) 제곱
    • f(i,j) 즉 실공간 영역을 2차원이기 때문에 영상의 크기 N에 대하여 두번 급수를 취해주고(시그마), 사인 코사인 함수의 조합인 지수 함수를 사용.

 

  • Fourier 역변환

    • 주파수 공간의 영상을 다시 실 공간 영상으로 변환.
    • 역변환은 정변환과 비교했을때 지수승의 부호만 다를 뿐 유사한 동작 수행한다.

 

  • Fast Furier Transform

    • 데이터 갯수 N에 대한 불연속 Fourier 변환의 계산은 N제곱의 계산 횟수를 필요로 함.
    • 2차원 일때는 (N제곱)제곱의 복잡도. -> 성능저하
    • N길이의 불연속 변환 = N/2의 길이의 두개의 Forier변환의 합.
    • FFT구현시 알고리즘은 반복적 분해를 통해 수행 하므로 영상 크기는 반드시 2의 지수승이 되어야 함. -> 0삽입 필요.
    • 신호 주기성 검출/ 영상 방향성 검출/ 고주파와 저주파의 분리 등에 사용

 

  • FFT 메인함수1 - Scrambling-

    • 이산 Fourier변환 재귀 주기와 대칭을 이루기 위해서 데이터의 적절한 재배치를 하는것
    • 역순의 색인 비트를 배열의 성분으로 계산, 역순 비트 색인에 의해 가리켜지는 데이터와 데이터 교체.
    • 색인이 비트의 역순과 같은(000, 010, 101, 111 등) 데이터를 제외하고, 교체.

 

  •  FFT 메인함수2 -butterfly -
    • 데이터를 포인트 집합으로 나누고, 이웃한 두개의 점들에 대하여 이산 Fourier변환을 수행.
    • 계산속도를 줄여주는 핵심 루틴을 가지고 있음.
    • 각 단계에서 수행되는 하나의 곱과 두개의 합의 기본 연산을 표현하는 흐름도로 인하여 버터플라이 라고 함.

 

  • 주파수 성분 조작 과정

    • 실 공간 ->(FFT)-> 주파수 공간(성분조작) -> (IFFT)-> 실 공간
    • 저주파 통과 필터

      • 고주파 성분을 분리해내고 저주파 성분만을 얻어내는 필터
      • 버터워스 필터 - 완만한 주파수 반응 필터
    • 고주파 통과 필터

      • 영상의 윤곽선의 값을 검출. -명도 값의 갑작스러운 변화가 일어나는 윤곽선에 고주파 성분이 많이 분포하고 있기 때문.

 

 

이 글은 스프링노트에서 작성되었습니다.

Posted by BLUE-NOTE