일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- #Android
- python list
- 영어명언
- #프로젝트
- #1일1영어
- tensorflow update
- #실생활영어
- TensorFlow
- keras
- #실생활 영어
- #영어 명언
- object detection
- Convolution Neural Network
- tokenizing
- #opencv
- text2img
- convexhull
- python 알고리즘
- #일상영어
- 이미지 생성
- #영어
- word embedding
- python __init__
- opencv SURF
- 완전탐색
- c언어
- findContours
- 딥러닝
- 영어
- #English
- Today
- Total
When will you grow up?
16.Canny연산자로 영상 외곽선 검출 본문
앞서 강의에서는 Sobel를 이용하여 에지를 검출했었습니다.
이번에는 Canny알고리즘이 적용된 cv::Canny함수를 호출하여 외곽선을 검출
Canny Edge Detection 은 John F. Canny에 의해 개발된 알고리즘 입니다.
윤곽을 가장 잘 찾아내면서도 원래 영상의 관련된 에지들을 제거할 수 있는 방법
1.검출한 에지는 필요 이상으로 뚜껍기 때문에 객체를 훨씬 더 식별 하기가 힘들다.
2.충분히 낮은 경계 값과 동시에 너무나 많은 무의미한 에지를 포함하지 않도록 충분히 높은 경계 값을 찾기란 힘들기 때문에 이러한 이유로 캐니 알고리즘으로 푼다.
Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size ); //원본이미지,출력될 이미지,낮은 경계값,높은경계값,커널사이즈)
결과 영상입니다
원본/경계값 0
원본/경계값 30
원본/경계값 50
원본/경계값 100
//전역 변수 부분
int lowThreshold; int const max_lowThreshold = 100; int ratio_1 = 3; int kernel_size = 3; const char* window_name = "Edge Map";
핵심 함수 부분 입니다.
static void CannyThreshold(int, void*) { blur(src_gray, detected_edges, Size(3, 3)); Canny(detected_edges, detected_edges, lowThreshold, lowThreshold*ratio_1, kernel_size); dst = Scalar::all(0); src.copyTo(dst, detected_edges); imshow(window_name, dst); }
순서는
3/3 크기로 블러를 적용후 Canny함수를 호출한다
dst이미지를 픽셀 데이터 값을 0으로 셋팅후 엣지된 데이터를 dst에 넣고 출력
lowThreshold값 조정으로 경계값을 조절하며 확인.
Main 부분입니다.
src = imread("223.JPG",1);//이미지 로드 dst.create(src.size(),src.type());//동일한 유형의 src크기의 행렬생성 cvtColor(src, src_gray, COLOR_BGR2GRAY);//grayscale로 변경 namedWindow(window_name, WINDOW_AUTOSIZE);//윈도우 크기 및 이름 설정 createTrackbar("Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold);//사용자가 0~100까지 임계값 입력할수있는 트랙바 만들기 CannyThreshold(0, 0);//처음 임계값이 0 임을 보여주기 위한 함수 호출 나머지는 트랙바를 통하여 컨트롤
'02. Study > Computer Vision(openframworks&opencv)' 카테고리의 다른 글
18.contour(윤곽,외곽선)찾기 findContours (0) | 2016.11.07 |
---|---|
17.Gamma correction (감마 보정) (0) | 2016.10.30 |
15.에지를 검출하는 Sobel필터 (0) | 2016.10.28 |
14.Threshold를 이용한 이진 영상 변환 (0) | 2016.10.22 |
13_2.형태학 연산으로 영상변환(morphology ->opening(열림) closing(닫힘)) (0) | 2016.10.22 |