When will you grow up?

15.에지를 검출하는 Sobel필터 본문

02. Study/Computer Vision(openframworks&opencv)

15.에지를 검출하는 Sobel필터

미카이 2016. 10. 28. 15:54

에지를 검출하는 필터중 기본적인 Sobel 필터

이번에는 소벨(Sobel)필터라고 부르는 필터를 사용해보겟습니다.

방향성 필터(Directional filter)라고도 불리는데 사용하는 소벨 필터의 커널에 따라 수평 영상 주파수나 수직 영상 주파수에만 영향을 주기 때문입니다.

OpenCV에는 영상에 소벨 연산자를 적용시키는 함수가 있습니다


OpenCV에서 제공되는 sobel함수원형은 아래와 같습니다.

 cv::Sobel

(InputArray 

src,      //입력영상


OutputArray 

dst,     //결과영상

int 

ddepth,//출력 이미지 깊이 조합 참조,8비트일경우 절단유도체

int dx,      //커널지정
int dy,      //커널지정
int ksize = 3,//정방형 커널크기
double scale = 1, //크기
double delta = 0, //각도
int borderType = BORDER_DEFAULT //영상타입

)




보통 OpenCV에서 Sobel filter를 통하여 에지 검출하는방법은

로딩->블러->그레이스케일->sobel()->8bit unsigned integer로 변환 ->출력




커널 사이즈를 x = 1로 했을경우

커널 사이즈를 x = 1,y = 1로 했을경우

커널 사이즈를 y=1로 했을경우

정방형 커널 크기를 9로 했을경우




Source Code




Mat image = imread("223.JPG",1);
	Mat imagegray;
	imshow("원본이미지",image);

	GaussianBlur(image, image, Size(3, 3), 0, 0, BORDER_DEFAULT);
	imshow("가우시안블러 적용시",image);

	cvtColor(image, imagegray, CV_RGB2GRAY);

	imshow("Grayscale", imagegray);

	Sobel(image, image,CV_8U,2,0,1,1,0,BORDER_DEFAULT);
	imshow("원본이미지 sobel operation", image);

	Sobel(imagegray, imagegray, CV_8U, 2, 0, 1, 1, 0, BORDER_DEFAULT);
	imshow("GrayScale이미지 sobel operation", imagegray);


출처 : opencv도큐먼트 :  http://docs.opencv.org/3.1.0

Comments