일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- #opencv
- 이미지 생성
- #English
- 영어
- #일상영어
- #실생활 영어
- #1일1영어
- python 알고리즘
- #프로젝트
- c언어
- keras
- python list
- #실생활영어
- #영어
- 영어명언
- TensorFlow
- opencv SURF
- #영어 명언
- Convolution Neural Network
- #Android
- python __init__
- 완전탐색
- 딥러닝
- convexhull
- findContours
- tensorflow update
- object detection
- tokenizing
- word embedding
- text2img
- Today
- Total
When will you grow up?
13.형태학 연산으로 영상변환(morphology ->erosion(침식) dilation(팽창)) 본문
13.형태학 연산으로 영상변환(morphology ->erosion(침식) dilation(팽창))
미카이 2016. 10. 22. 15:13Morphology ->형태학이라는 뜻으로 어떠한 영상이 존재할경우 영상을 구성하는 요소나 변화 등을 분야라고 생각하시면 됨니다.
보통 잡음 제거하는 용도로 많이 사용됨니다. 물론 100프로 복원되지는 않습니다.
모폴로지 에는 erosion(침식) dilation(팽창) 이 가장 기본적인 형태학 연산자 입니다.
수학적 형태학의 기본 성분은 구조요소(structuring element)입니다.
여기서 구조요소 기점(anchor point)라고도 불리는 화소의 구성으로 정의할수 있습니다.
openCV 에서 제공되는 erode,dilate를 확인해보자.
---------------------------------------------------------------------------------------------------
erode(img,dst,kernel);//원본이미지,결과이미지,커널사이즈
이렇게 사용할수 있다.
erode(img,dst,Mat());// 사용하게 되면 커널or구조요소 미지정된것으로 간주하고 기본 // default 3*3커널을 사용하게된다
Mat eroded;
Mat kernel(7, 7, CV_8U, Scalar(255));//7*7커널을 만들어서 사용(홀수크기,0이 아닌 원소)
erode(image, eroded, kernel);
3*3 기본 커널 적용 7*7 커널 적용
erode(침식)은 현재 화소를 정의된 화소 집합에서 찾은 최소 화소 값으로 바꾼다.
---------------------------------------------------------------------------------------------------
dilate또한 erode랑 똑같이 메소드를 사용할수있다.
dilate(image, dilate_2,Mat());//원본이미지,결과이미지,커널사이즈
Mat kernel(7, 7, CV_8U, Scalar(255));
dilate(image, dilate_2, kernel);
3*3 기본 커널 적용 7*7 커널 적용
dilate(팽창)은 상호 보완적인 연산자로서 현재 화소를 정의된 화소 집합에서 찾은 최대 화소 값으로 바꾼다.
---------------------------------------------------------------------------------------------------
마지막으로 침식후 팽창을 한번 해보겠습니다
code는 아래와 같습니다
Mat image = imread("223.JPG");
imshow("원본", image);
Mat eroded;
Mat kernel(3, 3, CV_8U, Scalar(255));
erode(image, eroded,kernel);
imshow("eroded", eroded);
Mat dilate_2;
dilate(eroded, dilate_2, kernel);
imshow("dilate", dilate_2);
3*3 기본 커널 적용 7*7 커널 적용
-------------------------------------------------------------------------------------------------
연산횟수, 크기, 모양을 정확히 정할수 있으나 그에따라 연산량도 크게 증가한다는게 단점입니다.
참고자료
블로그 :http://m.blog.naver.com/pckbj123/100203072320
책 : OpenCV를 활용한 컴퓨터 비전 프로그래밍
'02. Study > Computer Vision(openframworks&opencv)' 카테고리의 다른 글
14.Threshold를 이용한 이진 영상 변환 (0) | 2016.10.22 |
---|---|
13_2.형태학 연산으로 영상변환(morphology ->opening(열림) closing(닫힘)) (0) | 2016.10.22 |
11.medianblur 만들기 (0) | 2016.10.16 |
12. Image Template matching[템플릿 매칭] (0) | 2016.10.13 |
10.bilateralFilter를 이용한 이미지 처리. (0) | 2016.09.29 |