ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Sobel 엣지 검출기(Sobel Edge Detector) 구현
    컴공지식/컴퓨터비전 2024. 9. 25. 23:28

    int main() {
        Mat image, blur, grad_x, grad_y, abs_grad_x, abs_grad_y, result;
        image = imread("lena.png", 0);  // 이미지를 흑백으로 불러옴
        GaussianBlur(image, blur, Size(5, 5), 5, 5, BORDER_DEFAULT);  // 가우시안 블러로 노이즈 제거

        // Sobel 연산 수행 (x 방향 미분)
        // blur: 입력 이미지, grad_x: x 방향 결과 저장
        // 1: x 방향으로 1차 미분, 0: y 방향으로는 미분하지 않음, 3: 커널 크기
        Sobel(blur, grad_x, CV_16S, 1, 0, 3);
        convertScaleAbs(grad_x, abs_grad_x);  // 절대값을 구해서 8비트 이미지로 변환

        // Sobel 연산 수행 (y 방향 미분)
        // 0: x 방향 미분 안함, 1: y 방향으로 1차 미분
        Sobel(blur, grad_y, CV_16S, 0, 1, 3);
        convertScaleAbs(grad_y, abs_grad_y);  // 절대값을 구해서 8비트 이미지로 변환

        // x, y 방향 결과를 합쳐서 최종 엣지 검출 결과를 생성
        addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, result);

        // 결과 출력
        imshow("X", abs_grad_x);
        imshow("Y", abs_grad_y);
        imshow("Input image", image);
        imshow("Sobel Edge Detector", result);

        waitKey(0);  // 키 입력 대기
    }

     

    코드를 보면 Sobel 함수로 x, y 방향의 그래디언트를 계산하는 부분이 보이고

    addWeighted 함수로 x 방향과 y 방향의 결과를 합쳐서 최종 엣지 이미지를 만드는 것도 볼 수 있다.

     

     

    '컴공지식 > 컴퓨터비전' 카테고리의 다른 글

    HoughLines를 이용한 직선 감지 코드  (0) 2024.09.25
    Canny 엣지 검출기 구현  (0) 2024.09.25
    엣지 픽셀(Edge pixels)과 엣지(Edges)  (1) 2024.09.25
    White Balancing 예제  (0) 2024.09.20
    Pseudo Coloring 예제  (0) 2024.09.20
Designed by Tistory.