2017 . 08 . 30 11 : 50 
 영상 처리 에서 외곽 선 을 말끔 하 게 정리 해 주 는 방법 의 하나 인 모 폴 로지 ( morphology ) 기법 을 C # 의 그리드 패턴 과 접목 한 예제 입니다 . 
 일단 모 폴 로지 morphology 의 이론 적 개념 에 대해선 모 폴 로지 기법 _ Morphology 이 포스트 를 참조 하 세요 . 아래 는 위 포스트 에서 발췌 했 습니다 . 
 모 폴 로지 morphology 기법 
 - 영상 내 에 존재 하 는 특정 객체 의 형태 를 변형 시키 는 용도 로 사용 되 는 영상 처리 기법 . 
 - 이진 영상 처리 에 주로 사용 됨 . 
 - 영상 에서 잡음 을 제거 하 거나 , 영상 에서 객체 의 모양 을 기술 하 는 용도 로 사용 됨 . ( 예 : 모 폴 로지 morphology 의 대표 적 인 예 로 침식 과 팽창 연산 이 있 음 . ) 
 침식 연산 : 필터 의 크기 및 사용 횟수 에 따라 작 은 덩어리 의 객체 들 을 사라지 게 할 수 있 다 ( 깎 아 나간다는 뜻 ) . 
 팽창 연산 : 침식 연산 과 반 대로 영역 을 넓혀 가 는 연산 이 며 최대 값 필터 의 역할 을 한다 . 
 이 영상 처리 예제 는 외곽 선 을 찾 아야 하 는데 , 오브젝트 의 표면 이 매끄럽 지 못할 경우 에 사용 할 수 있 습니다 . 외곽 선 을 찾 아야 오브젝트 의 크기 와 위치 를 알아낼 수 있 으나 , 외곽 선 을 찾 지 못하 면 이런 정보 를 알아낼 수 없 습니다 . 
 아래 그림 처럼 , 오브젝트 표면 을 깔끔 하 게 다듬 어야 하 는 상황 이 있 습니다 . 
 ( 모 폴 로지 morphology 적용 전 ) 
 [ C # 영상 처리 ] 모 폴 로지 예제 
 ( 모 폴 로지 morphology 외곽 선 검출 결과 ) 
 필요 하 지 않 은 부분 은 없애 고 , 필요 한 부분 만 남길 필요 가 있 는 것 이 죠 . 그럴 때 필요 한 기법 의 하나 가 모 폴 로지 입니다 . 
 모 폴 로지 morphology 와 외곽 선 찾 는 기능 이 포함 된 이 프로젝트 파일 은 바로 아래 에 있 고 , 회사 에서 샘플 로 만들 었 기 에 그리드 뷰 로 보여질 오브젝트 는 엑 셀 로 저장 되 어 있 습니다 . 
 두 파일 모두 받 으셔야 전체 기능 을 사용 할 수 있 습니다 . 
 프로젝트 : GridPattern - Contour tracing . zip 
 샘플 엑셀 : binary _ ex 1 . xls 
 binary _ ex 1 . xls 파일 은 C 드라이브 바로 아래 에 두 세요 . 그리고 이 예제 의 바탕 이 되 는 그리드 패턴 예제 는 이전 에 올려 놨던 샘플 을 그대로 사용 했 습니다 . 
 이제 , 소스 를 살펴보 겠 습니다 . 
 private void Mophology _ Click ( object sender , EventArgs e ) 
 # region 모 폴 로지 적용 
 if ( array [ y , x ] > pmax ) 
 그리드 패턴 을 이용 하 기 때문 에 , grid _ view 의 각 셀 에 접근 해 RGB 값 이 0 , 0 , 0 인지 , 255 , 255 , 255 인지 , 이것 만 으로 팽창 지점 을 확인 합니다 . ( 영상 처리 응용 ) 
 array 배열 은 그리드 뷰 의 각 셀 의 값 과 크기 가 똑같 으며 , 흑색 , 백색 을 구분 해 값 을 담 습니다 ( 0 , 1 ) . 반드시 array 1 과 array 2 의 배열 크기 는 그리드 뷰 의 것 과 같 아야 합니다 . 
 모 폴 로지 morphology 결과 는 array 2 배열 에 저장 되 며 , 모 폴 로지 연산 이 끝나 면 , btn _ set _ 버튼 의 클릭 이벤트 를 강제 로 발생 시켜 외곽 선 찾 기 알고리즘 도 구동 합니다 . 이때 도 , array 2 의 값 을 기준 으로 외곽 선 을 찾 게 됩니다 . 
 아래 는 순차 적 으로 이 예제 프로그램 을 구동 했 을 때 의 결과 입니다 . 
 정렬 되 지 않 은 데이터 로딩 -> 모 폴 로지 로 표면 매끄럽 게 -> 외곽 선 을 찾 아 오브젝트 를 인지 
 C Sharp Gridpattern - 모 폴 로지 적용 전 
 모 폴 로지 적용 후 
 모 폴 로지 적용 후 외곽 선 찾 기 
 이 영상 처리 예제 는 아주 단순 한 것 으로 복잡 한 알고리즘 구현 을 위한 사전 준비 단계 에 불과 합니다 . 
 첨부 된 프로젝트 를 보 시 면 소스 가 깔끔 하 지 못하 고 중복 소스 도 많 은데 , 귀찮 아서 정리 안 했 습니다 . 외곽 선 찾 기 코드 는 8 방향 이 아니 라 4 방향 이 라 표면 이 지저분 할 경우 엔 잘 찾 지 도 못하 죠 . 
 저 는 이 코드 로 대충 감 만 잡 고 실제 프로젝트 를 진행 했 습니다 . 혹시 , 감 을 잡 을 용도 의 가벼운 프로그램 을 원하 신다면 간단히 훑어보 세요 . 
 c # iplimage , C # morphology , c # opencv 이미지 , C # 모 폴로 지 , Morphology , opencv c # 강좌 , OpenCV 모 폴로 지 , opencv 모 폴 로지 연산 , opencv 침식 팽창 , 모 폴로 지 , 모 폴 로지 기법 , 모 폴 로지 연산 , 모 폴로 지 열 기 닫 기 , 모 폴 로지 침식 연산 , 모 폴 로지 필터 , 영상 처리